nginx下怎么部署php项目
2022-12-02 09:01:16
155
{{single.collect_count}}

nginx下部署php项目的方法:1、安装完毕nginx和php-fpm;2、找到nginx服务器的配置文件;3、指定php项目的部署位置;4、把配置好的各种server conf放在sites-enabled里即可。

php入门到就业线上直播课:进入学习
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用

本文操作环境:linux5.9.8系统、nginx1.9版、Dell G3电脑。

nginx下怎么部署php项目?

nginx服务器上部署php项目

nginx本身不能处理PHP页面,它只是个web服务器,当接收到请求后,如果是PHP请求,通过反向代理的方式转发给PHP解释器处理,并把结果返回给客户端。因此需要在服务器上安装nginx和php-fpm或其他php解释器。

安装完毕nginx和php-fpm后,找到nginx服务器的配置文件

[root@test24266conf]# ps -ef | grep nginx.confroot 31441102018 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c/usr/local/nginx/conf/nginx.conf
登录后复制

在这个文件中,指定php项目的部署位置,即修改server字段下root 指定的文件根目录。

很多发型版本,在nginx.conf并没有server字段,这是为了管理方便,某些发行版的预编译版本里,nginx.conf 中 http 段最后会有两句 include conf.d/*.conf; include sites-enabled/*或只有一条include

sites-enabled/*.conf; 这样你就可以把已经配置好的各种 server conf 放在sites-enabled 里,如

[root@test24266conf]# ll sites-enabled/-rw-r--r--1 root root 603 103 2017 captcha443.conf-rw-r--r--1 root root 287 9 1 2017 commrisk.conf-rw-r--r--1 root root 194 129 2016 imagerotate.conf-rw-r--r--1 root root 402 9 2 2016 msgqapi.conf-rw-r--r--1 root root 295 102 2017 pointriskapi.conf-rw-r--r--1 root root 290 6 2 2017 risktrade.conf-rw-r--r--1 root root 309 814 2017 rotateapi.conf-rw-r--r--1 root root 313 100 2016 watchdog.conf[root@test24266conf]# 这样每个.conf文件就可以对应一个虚拟主机,查看某个配置文件,如[root@test24266conf]# cat sites-enabled/pointriskapi.confserver{listen 8013;server_name point.risk.api;index index.php; #默认访问的文件root /var/www/pointriskapi/hosts;access_log on;
登录后复制
#当请求网站下php文件的时候,反向代理到php-fpmlocation ~ .*\.php?$ { include fastcgi.conf;}location = /favicon.ico {log_not_found off;access_log off;} }[root@test24266conf]#
登录后复制

我们将php项目文件放入这个/var/www/pointriskapi/hosts路径下,如

[root@test24266hosts]# ll-rw-r--r-- 1 apache apache 339 102 2017risk_point.php[root@test24266hosts]# pwd/var/www/pointriskapi/hosts
登录后复制

一般不需要重启Nginx和php-fpm。现在在客户端就可以访问http://ip:8013/risk_point.php了。

那么nginx是怎么通过反向代理的方式将请求转发给PHP解释器呢?我们注意到server字段中有一段

location ~ .*\.php?$ { include fastcgi.conf;#加载nginx的fastcgi模块}
登录后复制

该段指明了.php文件由谁处理。我们查看nginx.conf同级目录下的factcgi.conf文件,如

[root@test24266 conf]# cat fastcgi.conffastcgi_pass127.0.0.1:9000;#fastcgi_passunix:/tmp/phpcgi.socket;fastcgi_indexindex.php; access_log/var/log/httpd/access_log main; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;fastcgi_paramQUERY_STRING $query_string;fastcgi_paramREQUEST_METHOD $request_method;fastcgi_paramCONTENT_TYPE $content_type;fastcgi_paramCONTENT_LENGTH $content_length; fastcgi_paramSCRIPT_NAME$fastcgi_script_name;fastcgi_paramREQUEST_URI$request_uri;fastcgi_paramDOCUMENT_URI $document_uri;fastcgi_paramDOCUMENT_ROOT$document_root;fastcgi_paramSERVER_PROTOCOL$server_protocol;fastcgi_paramHTTPS$https if_not_empty; fastcgi_paramGATEWAY_INTERFACECGI/1.1;fastcgi_paramSERVER_SOFTWAREnginx/$nginx_version; fastcgi_paramREMOTE_ADDR$remote_addr;fastcgi_paramREMOTE_PORT$remote_port;fastcgi_paramSERVER_ADDR$server_addr;fastcgi_paramSERVER_PORT$server_port;fastcgi_paramSERVER_NAME$server_name; # PHPonly, required if PHP was built with --enable-force-cgi-redirectfastcgi_paramREDIRECT_STATUS200;[root@test24266conf]#
登录后复制

Fastcgi_pass指明了fastcgi进程监听的IP地址和端口,即nginx会将请求转发给这个socket。因此我们需要在php-fpm的配置文件中指明同样的socket。启动Php-fpm监听,查看

[root@test24266~]# netstat -anp | grep 9000tcp0 0 127.0.0.1:9000 0.0.0.0:*LISTEN3719/php-fpm
登录后复制

总结一下在nginx与php-fpm模式下,完整的请求和应答流程是这样的:

1、客户端请求服务器上某个.php文件

2、Nginx发现是动态资源需要路由到指定根目录下

3、加载nginx的fast-cgi模块

4、Fact-cgi监听127.0.0.1:9000(默认socket)

5、php-fpm接收到请求,启用worker进程处理请求

6、php-fpm处理完请求,返回给nginx

7、nginx将结果通过http返回给浏览器

推荐学习:《PHP视频教程

以上就是nginx下怎么部署php项目的详细内容,更多请关注php中文网其它相关文章!

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}