• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > Nginx下怎么部署php项目

Nginx下怎么部署php项目

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了Nginx部署php,php项目等相关知识,希望对您有所帮助

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


Nginx下怎么部署php项目


nginx服务器上部署php项目

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

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

[root@test24266conf]# ps -ef | grep nginx.confroot     31441    1  0  2018 ?       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_pass  127.0.0.1:9000;#fastcgi_pass  unix:/tmp/phpcgi.socket;fastcgi_indexindex.php;  access_log  /var/log/httpd/access_log main;  fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;fastcgi_param  QUERY_STRING       $query_string;fastcgi_param  REQUEST_METHOD     $request_method;fastcgi_param  CONTENT_TYPE       $content_type;fastcgi_param  CONTENT_LENGTH     $content_length;  fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;fastcgi_param  REQUEST_URI        $request_uri;fastcgi_param  DOCUMENT_URI       $document_uri;fastcgi_param  DOCUMENT_ROOT      $document_root;fastcgi_param  SERVER_PROTOCOL    $server_protocol;fastcgi_param  HTTPS              $https if_not_empty;  fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;  fastcgi_param  REMOTE_ADDR        $remote_addr;fastcgi_param  REMOTE_PORT        $remote_port;fastcgi_param  SERVER_ADDR        $server_addr;fastcgi_param  SERVER_PORT        $server_port;fastcgi_param  SERVER_NAME        $server_name;  # PHPonly, required if PHP was built with --enable-force-cgi-redirectfastcgi_param  REDIRECT_STATUS    200;[root@test24266conf]#

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

[root@test24266~]# netstat -anp | grep 9000tcp        0     0 127.0.0.1:9000             0.0.0.0:*                  LISTEN      3719/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返回给浏览器


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Nginx下怎么部署php项目

相关文章

  • 2022-04-29认识一下vue中的模板语法,聊聊容器和实例的关系
  • 2022-04-29Photoshop设计立体质感的标签式按钮
  • 2022-04-29帝国CMS提示Table 'XX.***_enewspubtemp_2' doesn't exist错误详解
  • 2022-04-29正则表达式中两个反斜杠的匹配规则详解
  • 2022-04-29PhotoShop打造五彩抽象透明的圆球形图标制作教程
  • 2022-04-29解析ThinkPHP5之 _initialize() 初始化方法
  • 2022-04-29帝国CMS如何修改网址+标题+关键字+描叙方法
  • 2022-04-29PHPCMSV9采集网址重复的解决办法 array_unique函数
  • 2022-04-29PHP如何删除一个路径下的所有文件夹和文件?
  • 2022-04-29一分钟解读js与PHP 设置cookie的相互读取(附代码)

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 使用织梦DdedCMS添加文章时同时更新所有单页面的
    • Phpcms V9导航循环下拉菜单的调用技巧
    • 如何解决php md5生成16位出现乱码问题
    • 解决LNMP环境安装WordPress不显示主题,无法编辑的教程
    • PHP高并发实例详解之商品库存超卖并发测试
    • 关于uniApp editor微信滑动问题
    • 如何解决strict standards php报错问题
    • Linux下正确开启关闭redis的命令是什么
    • 浅析安卓app和微信授权登录及分享完整对接(代码分享)
    • 实例详解通过LogMiner实现Oracle数据同步迁移

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有