美文网首页
NextCloud搭建之--Nginx支援PHP

NextCloud搭建之--Nginx支援PHP

作者: peterzen | 来源:发表于2018-09-08 11:20 被阅读99次

    自建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,内容为

    <?php phpinfo(); ?>
    

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

    nginx-php-info.png

    结论

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

    1. 设置好数据库对NextCloud的配置;
    2. 下载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
    

    这样再访问就好了。

    相关文章

      网友评论

          本文标题:NextCloud搭建之--Nginx支援PHP

          本文链接:https://www.haomeiwen.com/subject/neykgftx.html