Debian Jessie基于PHP7安装Pydio
Edit history
2017/01/12
- 更正一些错误
- 完善教程
- 增加MySQL的配置
之前我在树莓派上安装的是ownCloud,然而由于在校园网,外网无法访问,而ownCloud的安装实在有些麻烦,于是我在DigitalOcean新开了一个droplet,打算在上面安装Pydio。
安装Nginx
为了防止遇到不支持的参数,我决定直接从官方源安装。参照官方文档,添加key:
1 |
|
然后把以下内容放进/etc/apt/sources.list.d/nginx.list
:
1 |
|
保存之后运行:
1 |
|
从DotDeb安装php7.0
Debian Jessie的官方源并不提供php7.0,所幸我们可以通过DotDeb提供的源安装。DotDeb为Debian维护了几个常用服务器组件的官方最新源,其实他们也提供了Nginx,只不过我是后来才发现的……
添加以下内容到/etc/apt/sources.list.d/dotdeb.list
:
1 |
|
然后同样添加key:
1 |
|
最后:
1 |
|
安装完成之后,我们需要做一些配置。首先是fix_pathinfo
的修改。DotDeb提供的php7.0的php.ini
文件位置和默认的是不一样的……通过以下命令可以的出php.ini
的位置:
1 |
|
于是我们修改由于我们的Pydio是通过fpm运行的,而fpm本身有/etc/php/7.0/cli/php.ini
,找到cgi.fix_pathinfo=0
,把1
改为0
。php.ini
,所以这里先不配置。
接着,我们修改fpm的配置,它在/etc/php/7.0/fpm/pool.d/www.conf
。确定如下两行内容:
1 |
|
最后别忘了重启php-fpm:
1 |
|
下载Pydio
这一部分就比较简单了,直接从官方的下载链接wget下来并解压到/var/www
即可。另外,官方源的Nginx默认的html目录并不在/var/www
,需要手动创建目录。
1 |
|
注意我们的fpm和Nginx的worker都是以www-data用户运行的(Nginx的worker默认不是www-data运行,但我后面会更改),因此需要保证Pydio的data目录是www-data可读写的。*.htaccess
文件后面也需要可写,所以这里一并修改了。*
为Pydio配置Nginx和php-fpm
由于没有使用apache,php-fpm就成为了处理php请求的服务。注意Pydio的目录下提供了一个nginx.conf.sample
,但是这个配置不能拿来就用,需要修改如下:
1 |
|
可以看到主要的改动是php部分,首先他原来include的snippets
在这个版本的Nginx里是木有的……所以我参照Nginx的默认设置做了改动。同时,通过/etc/php/7.0/fpm/pool.d/www.conf
可以发现sock的路径也需要修改。另外,我还对data目录做了访问控制,后面会提到。
修改完成,重启Nginx的服务之后,我在pydio的目录下新建了一个php-test.php
:
1 |
|
然后访问,结果发现一直502。查看Nginx的log发现居然是Permission Denied,谷歌之后得知,运行fpm的进程用户是www-data
,而其sock文件的权限是0660,悲剧的是Nginx的worker默认是用nginx
用户运行的,因此无法把脚本传递给fpm……解决方法是修改/etc/nginx/nginx.conf
:
1 |
|
然后重启Nginx:
1 |
|
然后访问该php文件,你会看到你的php信息网页。
安装PHP扩展
我兴冲冲输入了域名,迎接我的是403。
差了log之后我才想起来我忘了装扩展。官方声明需要的扩展有:
Basic PHP extensions required are intl, mbstring, gd and dom-xml. For cryptography, we require either open-ssl (recommended) or mcrypt (will be removed from PHP soon).
通过php -m
可以看到已经安装的模块。接下来我们安装缺少的模块:
1 |
|
(其实安装完之后还是403,,因为index的原因,我重新修改了Nginx的配置,已经一并写到前面提供的了- -)
解决错误
现在输入域名,你会看到Pydio Disgnostic Tool列举出的所有有问题的地方。我遇到的问题是3个:
- Security Breach,主要是data目录权限配置错误
- SSL Encryption,由于没有启用HTTPS所以是WARNING
- PHP Output Buffer disabled,需要将这个设置为禁用以提高性能
这里我遇到了悲剧……之前修改的/etc/php/7.0/cli/php.ini
是全局的,但是fpm本身还需要一份php.ini的配置,位于/etc/php/7.0/fpm/php.ini
,我们先参照之前的内容修改fix_pathinfo,然后找到并修改如下内容:
1 |
|
注意我把output_buffering
改为了Off
。
重启fpm服务之后,刷新网页,解决!
data权限问题源于没有在nginx中屏蔽data目录的访问,这个问题如果按照我提供的配置,那么将不会遇到。我之前不知道,才遇到这个问题。以下的修改我已经加到前面了。,所以我们修改/etc/nginx/conf.d/pydio.conf
,在server
中增加如下内容(参考自http://martin-denizet.com/nginx-configuration-for-pydio-with-ssl/):
1 |
|
上述内容会屏蔽除了/data/public/*
以外的所有data内容。重启Nginx服务之后刷新页面,只剩下一个SSL的warning了,这个我们下次再说Orz
配置SQLite
SQLite容易引发配置文件被锁定问题,因此建议使用MySQL(见下面)。
开始安装向导之后,我才发现Pydio的配置数据(不包含用户文件)需要存储到数据库里,在Pydio支持的数据库中,由于MySQL和PostgreSQL都太大了,于是我决定使用SQLite 3。
安装php扩展:
1 |
|
后面需要的缓存等我都暂时没启用。
配置MySQL
如果你想使用MySQL,参照官网,可以使用如下命令安装:
1 |
|
你可以选择需要安装的版本以及是否需要其他工具(Workbench等)。
然后就可以安装MySQL服务器和php的相关扩展了:
1 |
|
中间需要设置root帐号的密码。安装完成之后,我们需要为Pydio创建数据库:
1 |
|
上面的命令会创建名为pydio的数据库,然后添加一个可以管理这个数据库的用户,用户名pydio密码password。接下来,只要在Pydio中选择MySQL并输入数据库名字、用户名、密码即可。
修改htaccess文件
这里的配置也在前面已经解决了。安装过程中,他提示我无法写入该文件,直接改用户!
1 |
|
刷新页面之后,就可以正常使用了!
扩大上传限制
Pydio默认的上传大小限制在2M,显然是不够的,参考Topic: [solved] How to change Upload limit | Pydio,可以改变上传大小限制:
首先编辑/etc/php/7.0/fpm/php.ini
,修改两个地方:
1 |
|
以上两个配置分别是上传文件的上限和POST数据的上限,所以后者比前者需要大一些。你还可以修改max_file_uploads
来设置同时上传的文件数量上限。
重启fpm服务,然后进入到Settings - Application Parameters - Application Core - Uploaders Options
,设置Limitations - File Size
为1024M
,然后点击右上角保存即可。