ubuntu上配置nginx+php+fastcgi的流程(代码片段)

心砚thu 心砚thu     2022-11-30     724

关键词:

这两天需要在Ubuntu14.04上搭建nginx和php的环境,配置的过程中在fastcgi的问题上花了很多时间,网上的资料大多年久失修,于是决定将整个过程记录下来,分享给大家。
准备:
apt-get update


1. 安装nginx并启动

apt-get install nginx
sudo /etc/init.d/nginx start

2. 安装php及相关

sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5-mysql

3. FastCGI

在运行php站点之前需要先了解下FastCGI,FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口,它采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,当HTTP服务器遇到动态请求时,会将请求转发给FastCGI进程,FastCGI进程执行动态脚本后再将结果返回给HTTP服务器,HTTP服务器最后将结果返回给浏览器,这在很大程度上提高了请求的响应速度。
实现FastCGI有几种方式,PHP-CGI、PHP-FPM、Spawn-FCGI PHP-CGI是PHP自带的FastCGI管理器,启动PHP-CGI可以使用如下命令: php-cgi -b 127.0.0.1:9000 PHP-CGI有两个问题,一是变更php.ini后需要重启php-cgi才能生效,二是php-cgi进程崩溃或者被杀死后php就不能运行了。
PHP-FPM是从PHP 5.3.3之后新加入的CGI管理器,在更改PHP配置之后不需要重启,且由于加入了守护进程,所以即使被杀死之后也能快速重启。
Spawn-FCGI是一个通用的FastCGI管理器,而不仅仅只针对PHP一种脚本语言。但它在效率、CPU占用等方面都不如PHP-FPM。

4. PHP-FPM

既然PHP-FPM的方式最好,那么我们现在就来配置一下。由于PHP-FPM是一个独立的进程,所以需要与Nginx进行通信。目前有两种通信方式,tcp和socket。两种方式的区别和配置方式可以参见这两篇文章: nginx 和 php-fpm 通信使用unix socket还是TCP,及其配置 Php-fpm TcpSocket vs UnixSocket

在这里简要说一下配置方式,两种方式都主要修改nginx的配置文件(/etc/nginx/sites-available/default)和fpm的配置文件(/etc/php5/fpm/pool.d/www.conf)。
TCP配置方式需要将nginx配置文件中相应的反向代理的fastcgi_pass参数改为127.0.0.1:9000,将fpm配置文件中的listen参数修改为127.0.0.1:9000。
Socket配置方式需要将nginx配置文件中相应的反向代理的fastcgi_pass参数改为unix:/dev/shm/fpm-cgi.sock,将fpm配置文件中的listen参数修改为/dev/shm/fpm-cgi.sock,如果考虑到高并发可以将listen.backlog参数改为-1,内存积压无限大。另外,还可以提高内核级别的并发连接数,修改/etc/sysctl.conf:
sudo echo 'net.core.somaxconn = 2048' >> /etc/sysctl.conf
sudo sysctl -p

两种配置方式修改完之后都需要重启php-fpm和nginx。
sudo service php5-fpm restart
sudo /etc/init.d/nginx reload

5. 运行php站点

以上配置完成之后,我们就可以写一个简单的php页面来测试一下。 创建一个网站目录:
sudo mkdir /var/www/

在nginx配置文件中修改root目录为 root /var/www; 添加一个测试页面:
sudo vi /var/www/test.php

加入以下代码:
<?php phpinfo();?>

此时在浏览器输入地址http://localhost/test.php,就可以看到php的信息了。
常用命令: 1. 检查nginx启动出错
sudo nginx -c /etc/nginx/nginx.conf -t


如果大家觉得对自己有帮助的话,还希望能帮顶一下,谢谢:)
个人博客: http://blog.csdn.net/zhaoxy2850
本文地址: http://blog.csdn.net/zhaoxy_thu/article/details/41851389
转载请注明出处,谢谢!

配置nginx支持pathinfo模式

...,这里提供一种比较简洁的写法(只需要改动2行代码)典型配置location~\.php$roothtml;fastcgi_pass127.0.0.1:9000;fastcg 查看详情

在Ubuntu上配置测试成功后如何重启nginx?

】在Ubuntu上配置测试成功后如何重启nginx?【英文标题】:HowdoIrestartnginxonlyaftertheconfigurationtestwassuccessfulonUbuntu?【发布时间】:2013-09-0609:56:02【问题描述】:当我在Ubuntu服务器的命令行上重新启动nginx服务时,当nginx配置文件出现... 查看详情

MariaDB + phpmyadmin 在 ubuntu 14.04 上使用 Nginx

】MariaDB+phpmyadmin在ubuntu14.04上使用Nginx【英文标题】:MariaDB+phpmyadminwithNgnixonubuntu14.04【发布时间】:2016-09-2920:32:54【问题描述】:我正在尝试安装phpmyadmin+mariadb。我的PHP配置字符串具有以下mysql标志CONFIGURE_STRING="--prefix=/etc/php7--ena... 查看详情

ubuntu配置nginx+php(代码片段)

1.安装nginxsudoapt-getinstallnginx安装完成后找到/etc/nginx/sites-available/default可以查看nginx配置信息启动nginxservicenginxstart2.安装phpsudoapt-getinstallphp5-cliphp5-cgiphp5-curlsudoapt-getinstallspawn-fcgisudoapt-geti 查看详情

ubuntu20.04安装配置nginx+php

步骤##先清除干净相关的软件,例如apache、php、nginx本身sudoaptupdatesudoapt-getautoremove--purge php-fpmsudoapt-getautoremove--purge apache2sudoapt-getautoremove--purge nginx##开始安装nginxsudoapt-getinstallnginx##设置U 查看详情

lnmp环境安装搭建论坛(代码片段)

...-fpm-5.3.3-1.i_want_root.el6.x86_64.rpm2.nginx和php的结合打开nginx的配置文件:vim/etc/nginx/conf.d/default.conf查看行号:setnu将30行到36行的注释都去掉,并修改如下完整的内容#location~.php$roothtml;#fastcgi_pass127.0.0.1:9000;设置一个FastCGIserver地址#fastcgi_... 查看详情

如何在 Ubuntu 上同时运行 nginx 和 Apache?

】如何在Ubuntu上同时运行nginx和Apache?【英文标题】:HowcanIrunbothnginxandApachetogetheronUbuntu?【发布时间】:2014-05-2607:27:00【问题描述】:我想将Apache和nginx配置为在Ubuntu上一起运行,因为我想在nginx和Apache上进行开发。我读过我必须... 查看详情

Nginx(从源代码构建)在 Ubuntu 14.04 x64 上?

】Nginx(从源代码构建)在Ubuntu14.04x64上?【英文标题】:Nginx(BuildFromSource)OnUbuntu14.04x64?【发布时间】:2014-10-0914:06:10【问题描述】:我是从源代码设置NGINX的新手,我尝试的每个.sh配置都有某种类型的错误-我已经这样做了好几... 查看详情

armbian-ubuntu18.04安装nginx、php7.2和可道云

参考技术A安装nginx,参考Armbian-N1源码安装Nginx若armbian中没有软件源,报错Unabletolocatepackagephp7.2,需要先添加软件源:然后再进行安装。1.fpm.ini配置文件路径:/etc/php/7.2/fpm/php.ini2.www.conf文件路径:/etc/php/7.2/fpm/pool.d/www.conf3.重启php... 查看详情

sh在ubuntu16.04上安装php7.2nginx和php7.2-fpm(代码片段)

查看详情

sh在ubuntu16.04上安装php7.2nginx和php7.2-fpm(代码片段)

查看详情

sh在ubuntu16.04上安装php7.2nginx和php7.2-fpm(代码片段)

查看详情

nginx在我本机windows主机上配置加载不了php模块

nginx在我本机windows主机上配置加载不了php模块,也就是说配置完毕后,通过本机127的地址可以打开html文件,但是php的文件不能正常浏览,一打开浏览就提示要下载,应该是nginx和php没关联到位,我在cmd里面执行命令了,如下图,... 查看详情

docker上配置nginx负载均衡(代码片段)

采用ubuntu系统,docker安装自行百度1.安装tomcatdockerrun-d-p8088:8080tomcatdockerrun-d-p8089:8080tomcat安装两个实例,端口分别为8088,80892.安装nginxdockerrun-p8080:80-ddocker.io/nginx安装nginx,端口为8080。在测试的过程中,发现ubuntu上对80端口有限制,... 查看详情

ubuntu14.04安装nginx+php5-fpm后访问php页面空白,怎么解决

具体看下你机子上php-fpm是怎样运行的ss--unix--all|grepphp依照上面命令的输出修改配置文件中对应server中的fastcgi_pass。其实吧,你真的想要了解清楚,你可以去后盾人学习资料,那里会给你不错的答复参考技术A关于你这个问题的解... 查看详情

将一个vue项目部署的腾讯云ubuntu服务器nginx上(代码片段)

将一个Vue项目部署的腾讯云ubuntu服务器nginx上1.要操作linux服务器需要两个工具xshell、xftp,可以免费申请使用下载地址xftp下载地址xshell2.需要安装nginxsudoapt-getinstallnginx3.判断nginx是否安装成功nginx-v4.修改配置文件vim/etc/nginx/nginx.conf... 查看详情

将一个vue项目部署的腾讯云ubuntu服务器nginx上(代码片段)

将一个Vue项目部署的腾讯云ubuntu服务器nginx上1.要操作linux服务器需要两个工具xshell、xftp,可以免费申请使用下载地址xftp下载地址xshell2.需要安装nginxsudoapt-getinstallnginx3.判断nginx是否安装成功nginx-v4.修改配置文件vim/etc/nginx/nginx.conf... 查看详情

php如何搭建服务器环境原生篇|ubuntu18.04+php8.1+mysql5.7+nginx1.4

这里写目录标题一、原生配置也很重要二、购买云服务器三、搭建lnmp环境1.PHP2.MySQL3.Nginx四、CSDN云主机的备案五、总结一、原生配置也很重要你好,我是小雨青年,一名程序员。尽管现在DevOps兴起,但是也有很多企业的项目还是... 查看详情