Silentdoer

导航

Ubuntu 18.04上nginx+php环境搭建

转载自:https://blog.csdn.net/qq_36290650/article/details/90411807;添加和修改了部分内容

一、说明

正在尝试基于nginx+php搭建web服务器,中途遇到不少问题。挣扎了三四个小时终于完成了,这里分享下经验。

实验环境

操作系统:Ubuntu 18.04 64位

nginx:1.14.0

php:7.2.17-0

php-fram:php7.2-fpm
二、实验步骤

1、安装必要程序以及依赖

    #安装程序包
    sudo apt-get install php7.2
    sudo apt-get install php7.2-fpm     #nginx与php之间的桥梁(这个貌似在安装php7.2的时候就自动安装了)

    sudo apt remove apache2* #删除自动安装的Apache2,注意最后面有星号

    sudo apt autoremove  # 清除Apache2的依赖
    sudo apt-get install nginx
     
    #安装必要依赖
    sudo apt-get install php-json
    sudo apt-get install php-curl
    sudo apt-get install php7.2-mysql
    sudo apt-get install php7.2-cgi

2、打开 http://127.0.0.1,出现下面界面则表示安装成功

有可能显示为阿帕奇主页,不要紧张,可以尝试删除 /var/www/html/index.html(这是因为nginx的一个Server的根木录也是/var/www/html,而安装php的时候会自动安装apache2导致往这里写了这个index.html静态文件,哪怕是卸载了Apache2,但是由nginx提供的index.html还是变成了Apache的)

3、配置php-frm

(1)编辑fpm配置文件

    sudo gedit /etc/php/7.2/fpm/php.ini
     
    #修改参数如下:
    # 778行 ;cgi.fix_fathinfo=1  更改为  cgi.fix_fathinfo=1

    sudo gedit /etc/php/7.2/fpm/pool.d/www.conf
     
    #修改参数如下
    #  36行 listen = 127.0.0.1:9000 (原先值是/run/php/php7.2-fpm.sock)
    #  62行 listen.allowed_clients = 127.0.0.1(这个根据自己情况设置,可以不管他)
    # 113行 pm.max_children = 50
    # 139行 pm.max_requests = 500
    # 340行 request_terminate_timeout = 0
    # 344行 rlimit_files = 1024
    # 以上部分,包括但不限于去除前面的";"(注,上面的我就改了个listen)

(2)编写php测试程序

创建文件: /var/www/html/index.php,内容如下:

    <h1>
        <span> hello, this is test page </span>
    </h1>

创建文件: /var/www/html/info.php,内容如下:

<?php phpinfo(); ?>(如果全是php代码没有html似乎可以不用后面的?>)

(3)配置nginx

sudo gedit /etc/nginx/sites-available/default

第44行,在index.html前面加入index.php

第56-62行,用如下内容替换(不是替换,其实就是取消注释):(这里其实只需要保留fastcgi_pass 127.....和一个include snippets/...的配置即可,其他的nginx都帮我们写好了)

    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
        include        fastcgi_params;
    }

(4)重启服务

    sudo service php7.2-fpm restart
    sudo service nginx restart (-s reload即可)【这两个都是会开启自动启动的(如果是用apt安装的话)】

【个人修改注:它的原理其实就是nginx发现是php文件然后发现有配置这种文件的cgi,然后就将它发送给php-fpm(9000端口)去处理返回一个静态数据,然后再由nginx返回,其实这个时候php-fpm就已经类似我们的后端服务了,而.php文件就类似后端服务的模板文件,不过区别在于.php文件是由nginx获取给php处理,而java后端的模板文件则是nginx将一个请求转发给java服务,java服务发现这个请求是请求模板文件,然后处理为静态文件返回】(所以真心没看出来PHP的优势是什么,为啥那么多公司用。。)

【可以在/var/www/html/里创建一个比如叫shopping-app的目录,表示这里存放的是shopping-app这个应用的前端文件,同时配置一个nginx配置来访问此目录所有文件,然后将这个目录作为php项目的目录,在里面添加各种.php文件

,这样就能用vscode来打开该目录进行PHP文件开发了】

三、检验成果

1、浏览器访问 http://127.0.0.1 或者 http://127.0.0.1/index.php

2、浏览器访问 http://127.0.0.1/info.php

3、浏览器访问 http://127.0.0.1/index.nginx-debian.html

 

posted on 2020-05-10 17:35  Silentdoer  阅读(2288)  评论(0编辑  收藏  举报