zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    路由策略
    ospf 路由汇总
    OSPF type1 2
    ospf
    TCP 六种标识位
    raid 10 与 01
    SNMP协议
    ffmpeg剪切视频
    ubuntu18安装sbt
    服务器Ubuntu18重启后宝塔访问不了
  • 原文地址:https://www.cnblogs.com/silentdoer/p/12864292.html
Copyright © 2011-2022 走看看