Ubuntu 18.04上nginx+php环境搭建
<p>转载自:https://blog.csdn.net/qq_36290650/article/details/90411807;添加和修改了部分内容</p><p>一、说明<br><br>正在尝试基于nginx+php搭建web服务器,中途遇到不少问题。挣扎了三四个小时终于完成了,这里分享下经验。<br><br>实验环境<br><br>操作系统:Ubuntu 18.04 64位<br><br>nginx:1.14.0<br><br>php:7.2.17-0<br><br>php-fram:php7.2-fpm<br>二、实验步骤<br><br>1、安装必要程序以及依赖<br><br> #安装程序包<br> sudo apt-get install php7.2<br> sudo apt-get install php7.2-fpm #nginx与php之间的桥梁(这个貌似在安装php7.2的时候就自动安装了)</p>
<p> sudo apt remove apache2* #删除自动安装的Apache2,注意最后面有星号</p>
<p> sudo apt autoremove # 清除Apache2的依赖<br> sudo apt-get install nginx<br> <br> #安装必要依赖<br> sudo apt-get install php-json<br> sudo apt-get install php-curl <br> sudo apt-get install php7.2-mysql <br> sudo apt-get install php7.2-cgi<br><br>2、打开 http://127.0.0.1,出现下面界面则表示安装成功<br><img src="https://img2020.cnblogs.com/blog/784440/202005/784440-20200510173227273-116784067.png" alt=""></p>
<p>有可能显示为阿帕奇主页,不要紧张,可以尝试删除 /var/www/html/index.html(<strong>这是因为nginx的一个Server的根木录也是/var/www/html</strong>,而安装php的时候会自动安装apache2导致往这里写了这个index.html静态文件,哪怕是卸载了Apache2,但是由nginx提供的index.html还是变成了Apache的)<br><br>3、配置php-frm<br><br>(1)编辑fpm配置文件<br><br> sudo gedit /etc/php/7.2/fpm/php.ini <br> <br> #修改参数如下:<br> # 778行 ;cgi.fix_fathinfo=1 更改为 cgi.fix_fathinfo=1<br><img src="https://img2020.cnblogs.com/blog/784440/202005/784440-20200510173303029-168293686.png" alt=""></p>
<p> sudo gedit /etc/php/7.2/fpm/pool.d/www.conf <br> <br> #修改参数如下<br> # 36行 listen = 127.0.0.1:9000 (原先值是/run/php/php7.2-fpm.sock)<br> # 62行 listen.allowed_clients = 127.0.0.1(这个根据自己情况设置,可以不管他)<br> # 113行 pm.max_children = 50<br> # 139行 pm.max_requests = 500 <br> # 340行 request_terminate_timeout = 0 <br> # 344行 rlimit_files = 1024<br> # 以上部分,包括但不限于去除前面的";"(注,上面的我就改了个listen)<br><br>(2)编写php测试程序<br><br>创建文件: /var/www/html/index.php,内容如下:<br><br> <h1><br> <span> hello, this is test page </span><br> </h1><br><br>创建文件: /var/www/html/info.php,内容如下:<br><br><?php phpinfo(); ?>(如果全是php代码没有html似乎可以不用后面的?>)<br><br>(3)配置nginx<br><br>sudo gedit /etc/nginx/sites-available/default <br><br>第44行,在index.html前面加入index.php<br><br>第56-62行,用如下内容替换(不是替换,其实就是取消注释):(这里其实只需要保留fastcgi_pass 127.....和一个include snippets/...的配置即可,其他的nginx都帮我们写好了)<br><br> location ~ \.php$ {<br> root html;<br> fastcgi_pass 127.0.0.1:9000;<br> fastcgi_index index.php;<br> fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;<br> include fastcgi_params;<br> }<br><img src="https://img2020.cnblogs.com/blog/784440/202005/784440-20200510173340721-571814227.png" alt=""></p>
<p>(4)重启服务<br><br> sudo service php7.2-fpm restart<br> sudo service nginx restart (-s reload即可)【这两个都是会开启自动启动的(如果是用apt安装的话)】</p>
<p>【个人修改注:它的原理其实就是nginx发现是php文件然后发现有配置这种文件的cgi,然后就将它发送给php-fpm(9000端口)去处理返回一个静态数据,然后再由nginx返回,其实这个时候php-fpm就已经类似我们的后端服务了,而.php文件就类似后端服务的模板文件,不过区别在于.php文件是由nginx获取给php处理,而java后端的模板文件则是nginx将一个请求转发给java服务,java服务发现这个请求是请求模板文件,然后处理为静态文件返回】(所以真心没看出来PHP的优势是什么,为啥那么多公司用。。)</p>
<p>【可以在/var/www/html/里创建一个比如叫shopping-app的目录,表示这里存放的是shopping-app这个应用的前端文件,同时配置一个nginx配置来访问此目录所有文件,然后将这个目录作为php项目的目录,在里面添加各种.php文件</p>
<p>,这样就能用vscode来打开该目录进行PHP文件开发了】<br><br>三、检验成果<br><br>1、浏览器访问 http://127.0.0.1 或者 http://127.0.0.1/index.php<br><img src="https://img2020.cnblogs.com/blog/784440/202005/784440-20200510173354909-538544170.png" alt=""></p>
<p>2、浏览器访问 http://127.0.0.1/info.php<br><img src="https://img2020.cnblogs.com/blog/784440/202005/784440-20200510173406308-784864013.png" alt=""></p>
<p>3、浏览器访问 http://127.0.0.1/index.nginx-debian.html<br><img src="https://img2020.cnblogs.com/blog/784440/202005/784440-20200510173418133-724514538.png" alt=""></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/silentdoer/p/12864292.html
頁:
[1]