NextCloud搭建之--Nginx支援PHP

自建NAS的过程中,选择了安装NextCloud;在手动安装NextCloud的过程中,有以下软件是必备:

  1. Nginx(Apache);
  2. PHP;
  3. Mariadb(MySQL);

1. 安装Nginx

  • 安装
sudo apt-get install nginx
  • 确认nginx的运行状态
sudo systemctl status nginx

output

nginx_status.jpg

用浏览器打开 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,内容为


然后打开浏览器,输入localhost,结果如下:

nginx-php-info.png

结论

这样,Nginx对PHP的支援就算OK了,后续计划:

  1. 设置好数据库对NextCloud的配置;
  2. 下载NextCloud放置到PHP站点目录下;
    稍后尝试后再继续分享。

short_open_tag

如果上面的index.php中的内容是


那么,用浏览器打开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

这样再访问就好了。

你可能感兴趣的:(NextCloud搭建之--Nginx支援PHP)