如何在Debian 9上安装Pydio Web文件管理器
Pydio是一个功能强大的开源Web文件同步和文件共享解决方案软件,用于在线协作,类似于Gdrive或其他在线文件共享服务。 大多数用PHP编程语言和Ajax编写,Pydio可以安装在Apache / Nginx Web服务器,PHP和MySQL / MariaDB数据库管理系统(也称为LAMP或LEMP)下的Linux虚拟专用服务器或物理服务器上,或者它可以也可以部署在云中。
在本教程中,我们将在LAMP的顶部介绍Debian 9发行版中源代码的Pydio Community Edition的安装和配置过程。 我们将从头开始介绍整个安装过程,您需要在Debian服务器上执行所有必需的步骤,以便构建用于共享文档,电影,音乐或任何其他类型文件的私有在线云。
要求
您需要满足以下要求才能在您的场所部署Pydio文件共享云解决方案:
- 一台专用物理服务器或一台虚拟机或一台VPS,其最低2Gb内存和最新版本的Debian 9已安装。
- 其中一个服务器网络接口卡必须配置为静态IP地址,或者DHCP服务器必须配置为为服务器的NIC租用相同的IP地址
- 服务器控制台根权限通过SSH或本地或本地或具有root权限的LDAP用户通过sudo实用程序远程访问系统。
- 在您的场所通过您自己的DNS服务器配置的公共注册域名或专用本地域名。 该域名应配置所有必需的DNS记录,例如A和CNAME记录以指向www。 但是,您仍然可以部署Pydio并通过您的服务器IP地址访问网络云,以防您不拥有域名。
- 在您的场所配置的电子邮件服务器,以便使用Pydio注册或其他功能。 在这种情况下,您也可以使用公共邮件服务,例如Gmail或Yahoo!
前要求
首先,使用root帐户或具有root权限的帐户登录到您的服务器控制台,并发出以下命令以确保您的Debian系统与最新的安全修补程序,软件,存储库和内核保持同步更新。
apt update
apt upgrade
在下一步中,使用下面的命令为您的机器主机名设置一个描述性名称(相应地替换您的主机名变量)。
hostnamectl set-hostname www.mysharedfiles.com
通过发出以下命令来验证计算机主机名和系统主机文件中应用的记录。
hostnamectl
cat /etc/hostname
hostname –f
hostname –s
最后,重新启动服务器以正确应用内核更新和主机名更改。
systemctl reboot
在下一步中,使用root权限登录系统并安装以下系统实用程序,例如zip,unzip(解压zip归档文件),curl和wget(下载联机文件)以及bash-completion命令行自动完成。
su -
apt install bash-completion zip unzip curl wget imagemagick unoconv
为了编辑,编辑或转换不同的图像格式并通过Pydio Web界面转换文档,请通过执行以下命令来安装ImageMagick软件和unoconv Universal Office Converter实用程序。
apt install imagemagick unoconv
如果您有需要在Pydio工作区中挂载的Samba共享,请使用以下命令在Debian中安装samba客户端。
apt-get install smbclient
安装Apache和PHP
在下一步中,我们将首先安装Pydio Web共享文件云所需的LAMP的服务器端组件:Apache HTTP服务器和PHP编程语言解释器。 我们还将安装所有必需的Pydio PHP模块和扩展。 发出以下命令以安装我们刚刚讨论过的所有描述的软件组件。
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-json php7.0-mbstring php7.0-xml php7.0-cli php7.0-curl php7.0-zip php7.0-xmlrpc php7.0-intl php-imagick php-smbclient
接下来,检查系统中是否启用了所有已安装的PHP模块,通过执行以下命令可以执行此操作。
php7.0 –m
在下一步中,启用Apache HTTP服务器重写和SSL模块,以允许在Web服务器文档根路径中使用.htaccess文件,这样我们可以强制访问者通过HTTPS协议安全地浏览网站。 SSL模块将使用Apache自动签发的自签名证书来保护服务器和客户端浏览器之间的流量。 启用Apache SSL配置文件以使SSL模块正常工作。 执行以下命令激活所有必需的配置。
a2enmod ssl rewrite
a2ensite default-ssl.conf
接下来,使用文本编辑器打开Apache默认SSL站点配置文件,并在DocumentRoot指令后面添加URL重写规则代码行,如下例所示。
nano /etc/apache2/sites-enabled/default-ssl.conf
SSL站点配置文件摘录:
DocumentRoot /var/www/html
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
保存并关闭SSL Apache conf文件,并打开默认的vhost conf文件进行编辑。 在这里,添加与SSL配置文件相同的URL重写规则。 在DocumentRoot语句后面插入代码行,如下例所示。
nano /etc/apache2/sites-enabled/000-default.conf
000-default.conf文件摘录:
DocumentRoot /var/www/html
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
为了应用到目前为止所做的所有更改,您需要通过发出以下命令来重新启动Apache守护进程。
systemctl restart apache2
配置防火墙
在通过您所在地的计算机上打开的Web浏览器访问您的域名或服务器IP地址之前,请先添加所需的防火墙规则,以允许Web流量通过防火墙。 如果您的Debian服务器带有UFW防火墙应用程序,则应该添加一些新规则,以允许HTTP / S通信通过发出以下命令来通过防火墙。
ufw allow 'WWW Full'
要么
ufw allow 80/tcp
ufw allow 443/tcp
在远程连接到服务器的情况下,您还应允许SSH流量通过UFW防火墙。
ufw allow 22/tcp
如果您的Debian服务器位于iptables防火墙之后,请添加以下iptables原始规则,以允许端口80和443入站流量通过防火墙,以便外部访问者可以浏览该应用程序。
apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent
systemctl enable netfilter-persistent.service
如果您通过SSH远程连接到Debian服务器,则应首先添加以下规则以允许SSH流量通过iptables防火墙。 否则,您将被锁定,因为防火墙将开始将所有传入的通信丢弃到端口22。
iptables -I INPUT -p tcp --destination-port 22 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
最后,要测试您是否可以从LAN中的远程计算机访问Apache HTTP服务器,请打开浏览器并通过HTTPS协议访问您的域名或服务器的IP地址。 要显示服务器IP地址,请在终端中执行ifconfig或ip命令。 如果您的计算机是您内部基础架构网络的一部分,并且隐藏在NAT-ed网络后面,请执行以下命令以获取公共IP地址。
curl ipinfo.io/ip
由于您在安装时使用由Apache发布的自动签名证书对,证书将被浏览器标记为不可信,并且应在浏览器中显示错误警告。 点击继续绕过此警告,接受不受信任的证书并继续重定向到Apache默认网页。
HTTPS://yourdomain.tld
到目前为止,我们只在我们的Debian服务器上安装了Apache Web服务器和PHP解释器。 为了完成安装Pydio文件共享解决方案所需的LAMP,我们需要安装一个缺失的最终组件:一个RDBMS数据库后端。
安装MariaDB
在本教程中,我们将以MariaDB数据库服务器作为后端安装Pydio。 在MariaDB数据库中,Pydio应用程序将存储用户,网站配置和其他各种数据。 为了在Debian 9中安装MariaDB数据库服务器和客户端以及PHP MySQL扩展,请发出以下命令。
apt install mariadb-server mariadb-client php7.0-mysql
默认情况下,可以通过在Debian 9中提供密码来访问数据库root帐户。要解决此安全问题并保护数据库服务器,请先登录到MySQL控制台并执行以下命令以保护MariaDB root帐户。
mysql -h localhost
欢迎来到MariaDB监视器。 命令结束于; 或\ g。
你的MariaDB连接ID是2
服务器版本:10.1.26-MariaDB-0 + deb9u1 Debian 9.1
Copyright(c)2000,2017,Oracle,MariaDB Corporation Ab等。
键入'help' 或'\ h'寻求帮助。 输入'\ c'清除当前的输入语句。
MariaDB [(none)]> use mysql;
阅读表格信息以完成表格和列名称
您可以关闭此功能以使用-A更快启动
数据库改变
MariaDB [mysql]> update user set plugin='' where user='root';
查询OK,1行受影响(0.00秒)
匹配行数:1更改:1警告:0
MariaDB [mysql]> flush privileges;
查询OK,0行受影响(0.00秒)
MariaDB [mysql]> exit
在下一步中,通过执行脚本mysql_secure_installation开始保护MariaDB服务器。 这个脚本会询问一系列旨在保护MariaDB数据库的问题。 对所有问题回答“是”:删除匿名用户,禁用远程root登录并删除测试数据库。 另外,请确保为数据库根帐户设置了一个强密码,如以下摘录所示。
mysql_secure_installation
==========================================================================================
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
======================================================================================
脚本完成后,尝试从控制台以无root密码登录数据库。 如果没有为root帐户提供密码,则应拒绝对数据库的访问,如以下命令摘录所示:
mysql -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
如果提供了密码,则应该将该登录过程授予MySQL控制台,如命令示例所示。 键入exit离开数据库控制台。
mysql -h localhost -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
Bye
调整PHP设置
接下来,打开PHP默认配置文件进行编辑,并按照下面的说明更改下列PHP变量。 设置PHP 时区设置以匹配您的系统地理位置。 PHP date.timezone变量可以通过查看PHP文档提供的时区列表在下面的链接http://php.net/manual/en/timezones.php
首先,备份PHP配置文件。
cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini
在php.ini配置文件中搜索,编辑和更改以下变量:
file_uploads = On
memory_limit = 128M
post_max_size = 80M
upload_max_filesize = 80M
output_buffering = 0
date.timezone = Europe/London
您应该在PHP配置文件中增加upload_max_file_size变量以支持大文件附件。
您还应该为PHP7添加OPCache插件配置,以提高Web应用程序的加载速度。 编辑php.ini文件,并在[opcache]语句下的文件底部追加以下代码行,详细信息如下:
nano /etc/php/7.0/apache2/php.ini
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
添加下面描述的所有代码行后,关闭php.ini配置文件并通过发出以下命令来检查OPCache变量是否已正确添加。
grep opcache /etc/php/7.0/apache2/php.ini
为了通过PHP编码加密和保护Pydio文件,请通过发出以下命令在您的Debian服务器上安装Ioncube软件:
wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfz ioncube_loaders_lin_x86-64.tar.gz
cp ioncube/ioncube_loader_lin_7.0.so /usr/lib/php/20151012/
然后,编辑ioncube配置文件并添加以下行。
nano /etc/php/7.0/apache2/conf.d/00-ioncube.ini
00-ioncube.ini文件摘录:
zend_extension=ioncube_loader_lin_7.0.so
重新启动Apache服务器以应用Ioncube扩展。
systemctl restart apache2
作为配置LAMP的最后一步,通过执行以下命令在web服务器webroot路径中创建一个PHP信息文件。
echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php
访问以下URL的浏览器的PHP信息脚本文件,并检查Ioncube Zend是否已成功加载,并且向下滚动到日期设置以检查PHP时区配置。 时区设置应该反映您先前配置的PHP地理位置。
HTTPS://domain.tld/info.php
下载并安装Pydio
现在安装Pydio社区软件的所有系统要求都已满足,请打开浏览器并导航到Pydio官方下载页面( 网址为https://pydio.com/en/community)并复制下载链接以获取最新的zip存档您的系统通过wget实用程序。
wget https://download.pydio.com/pub/core/archives/pydio-core-8.0.2.zip
在Pydio zip存档下载完成后,将zip存档文件解压缩到当前工作目录,并使用ls命令列出解压缩的文件。
unzip pydio-core-8.0.2.zip
ls
接下来,将由Apache Web服务器安装的默认index.html文件移除到webroot路径,并删除先前创建的info.php文件。
rm /var/www/html/index.html
rm /var/www/html/public/info.php
复制pydio -core-8.0.2 /目录中当前工作目录下的Pydio安装文件。 发出ls命令来列出隐藏文件的这个目录文件。 通过发出以下命令将提取的目录的所有内容复制到Web服务器文档根路径。 另外,请确保将隐藏文件.htaccess复制到webroot路径。
ls -al pydio-core-8.0.2
cp -rf pydio-core-8.0.2/* /var/www/html/
cp pydio-core-8.0.2/.htaccess /var/www/html/
接下来,通过执行以下命令,向Apache运行时用户授予对文档根路径的完全写入权限。 使用ls命令列出/ var / www / html /目录下应用程序已安装文件的权限。
chown -R www-data:www-data /var/www/html/
ls -al /var/www/html/
接下来,打开位于webroot路径中的Pydio bootstrap_conf.php配置文件并修改下面的行,如下面的文件摘录所示:
nano /var/www/html/conf/bootstrap_conf.php
bootstrap_conf.php文件示例:
setlocale(LC_ALL, "en_US.UTF-8");
define("AJXP_LOCALE", "en_EN.UTF-8");
在下一步中,登录到MariaDB数据库控制台并创建Pydio应用程序数据库。 另外,添加一个新的MySQL用户来管理Pydio数据库并为该用户设置一个强密码。 发出以下命令来创建数据库和用户,并确保使用您自己的设置替换本指南中使用的数据库名称,用户和密码。
mysql –u root -p
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 305
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE pydio_db;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on pydio_db.* to 'pydio_user'@'localhost' identified by 'mypass123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
创建数据库后,打开浏览器并通过HTTPS协议导航至您的服务器IP地址或域名,以便开始使用Pydio Web安装过程。 在第一个安装屏幕上,选择您的语言并点击开始向导按钮开始安装过程。
在下一个安装屏幕上,为Pydio应用程序添加应用程序标题和欢迎消息,然后点击下一步按钮移至下一个配置屏幕。
接下来,添加您的Pydio应用程序管理员名称和全名。 提供并确认管理员帐户的强密码,然后点击下一步按钮移至下一个配置屏幕。
在下一个屏幕中,配置数据库连接设置。 选择MySQL作为数据库类型,使用localhost作为数据库主机,并添加Pydio数据库名称,用户和密码以便连接到数据库。 点击测试数据库连接按钮登录到Pydio数据库,并随着安装过程向前移动。
在高级选项屏幕中,如果未正确检测到应用编码数据集和服务器URL地址,请启用缓存设置,添加您的电子邮件地址和默认语言,然后点击安装Pydio按钮以开始安装。
安装过程完成后,安装向导会自动将您重定向到Pydio登录页面表单。 提供在安装过程中配置的应用程序管理员用户名和密码,以便登录到Pydio仪表板。
您还可以通过HTTPS协议访问您的域名或服务器IP地址,登录到Pydio网络共享应用程序。
HTTPS://www.yourdomain.tld
登录到Pydio管理仪表板后,您可以按照向导弹出的步骤快速学习如何通过Web管理面板管理应用程序。
有些访问者可能通过HTTP协议以不安全的方式浏览Pydio应用程序。 为了强制所有访问者通过HTTPS协议安全地浏览Pydio界面,请返回到您的服务器控制台并通过发出以下命令编辑位于Web根目录中的.htaccess文件。
nano /var/www/html/public/.htaccess
打开.htaccess文件进行编辑后,搜索以RewriteEngine开头的行并在此行下添加下面的重定向规则。
# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
另外,如果您想更改PHP服务器设置,以便您可以增加文件上传大小或其他PHP变量,请将以下行追加到.htaccess文件的底部,如下面的摘录所示。
php_value upload_max_filesize 50M
php_value post_max_size 50M
恭喜! 您已成功在Debian 9服务器中安装Pydio文件同步和共享应用程序。 有关应用程序的其他特殊安装步骤和配置,请访问Pydio文档页面, 网址如下: https ://pydio.com/en/docs/administration-guides