自建NAS的过程中,选择了安装NextCloud;在手动安装NextCloud的过程中,有以下软件是必备:
- Nginx(Apache);
- PHP;
- Mariadb(MySQL);
1. 安装Nginx
- 安装
sudo apt-get install nginx
- 确认nginx的运行状态
sudo systemctl status nginx
output
用浏览器打开
http://localhost
,如果可以正常打开nginx的欢迎页面,那nginx就ok了。
2. 安装PHP
- 安装
sudo apt-get install php php-fpm
安装php的时候竟然提示依赖apache2,于是这样安装以后,apache2会被安装,而且会尝试启动占用port 80,只是由于有nginx,所以启动会fail,为了避免apache2的影响,停止apache2并禁止开机启动
sudo systemctl stop apache2
sudo systemctl disable apache2
- 确认php-fpm有正常启动
ps -aux | grep php-fpm
output
php-fpm_status.jpg
3. Nginx支援PHP
1. 修改Nginx的站点配置文件,支援PHP
从/etc/nginx/nginx.conf
中找到目前设置的站点配置文件为 /etc/nginx/sites-available/default
在default
文件中新增对PHP的支援(在location item后新增如下内容)
location ~ \.php$ {
root /var/www/test; #指定php的根目录
fastcgi_pass 127.0.0.1:9000;#php-fpm的默认端口是9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
设置完以后,重启Nginx
sudo systemctl restart nginx
刷新localhost,竟然出现了502 BadGatway
。
看起来应该Nginx与PHP的配合还有问题,查询了一下,应该是 fastcgi_pass
这个属性设置有问题,查询了一下端口的使用情况
sudo netstat -antp | grep 9000
看起来php-fpm
是没有在port 9000运行起来的,所以这fastcgi_pass
的设置有问题。
2. 查询php-fpm配置
找到php-fpm的配置文件,目前安装的时php7.2,对应的配置文件在/etc/php/7.2/fpm/pool.d/www.conf
打开配置文件,找到
listen = /run/php/php7.2-fpm.sock
对应的nginx站点配置中,fastcgi_pass
应该使用此文件路径。
3. 修改站点配置的fastcgi_pass
#/etc/nginx/sites-available/default
location ~ \.php$ {
root /var/www/test; #指定php的根目录
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
修改完以后,需要重新启动nginx和php-fpm
由于我的环境有点乱,之前安装了nginx收,又用DigitalOcean的snap方式安装了nextCloud,php-fpm在reboot才算完整才重启。
测试
为了测试Nginx对PHP的支援,可以在设置的root下(刚才的location中设置了root为/var/www/test
,尝试着在此目录下放入index.php
,内容为
<?php phpinfo(); ?>
然后打开浏览器,输入localhost
,结果如下:
结论
这样,Nginx对PHP的支援就算OK了,后续计划:
- 设置好数据库对NextCloud的配置;
- 下载NextCloud放置到PHP站点目录下;
稍后尝试后再继续分享。
short_open_tag
如果上面的index.php
中的内容是
<? phpinfo(); ?>
那么,用浏览器打开localhost
,会是一片空白,phpinfo()
并没有被解析执行(对php实在是不熟悉,我不是要学语言,只是要搭建nextcloud)。
这是因为默认php的短标签支持是关闭的,如果需要支持上述的段标签的形式,需要修改php配置文件/etc/php/7.2/fpm/php.ini
short_open_tag = On ; 从Off修改为On
ran后再重启php-fpm
sudo systemctl restart php7.2-fpm
这样再访问就好了。
网友评论