博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx服务配置---php服务接入
阅读量:6532 次
发布时间:2019-06-24

本文共 3131 字,大约阅读时间需要 10 分钟。

 

前言:

  最近要搭建一个内部的wiki系统, 网上搜了一圈, 也从知乎上搜集了一些大神的评价和推荐. 重点找了几个开源的wiki系统, 不过发现他们都是采用php来实现的. 于是乎需要配置php环境, 来配合服务正常工作. 网上多是apache+php的组合方式, 不过由于个人是nginx脑残粉, 因此决定采用nginx+php fastcgi来配置下环境.

思路梳理:

  云主机是ubuntu系统(主要觉得apt好用, 当然centos的yum也是利器). 对于php, php-fpm, 以及nginx的安装, 决定采用apt来完成. 虽然网上很多大神建议采用编译安装, 这样可以定制, 不过这边为了简洁快速, 主要还是偷懒, ^_^.
  整个思路可分为如下步骤:
  1). php环境的安装和配置
  2). nginx环境的安装和配置
  3). 两者的集成

php环境安装和配置:

  ubuntu上安装php, 非常的简单, 重要的是不要遗落php重要的插件.

  # 安装php  sudo apt-get install php5  # 安装php的mysql插件  sudo apt-get install php5-mysql  # 安装php5-fpm(Fastcgi process manager)  sudo apt-get install php5-fpm

  然后让我们简单检测下php是否安装成功.

  

  然后在让我们简单过一下配置文件的组织结构和重要的相关项.

  
  php5-fpm的默认目录在/etc/php5/fpm中, 其修改项主要集中在pool.d/www.conf中, 让我们来看一下, 里面有那些需要注意一下.
  • 子进程的执行用户和组

#user=www-datauser=work#group=www-datagroup=work

  注: 其默认的用户:组为www-data:www-data, 这边改为work:work. 若没有, 可以通过adduser/addgroup来完成用户和组的添加.

  • 监听模式

#listen=/var/run/php5-fpm.socklisten=127.0.0.1:9000

  注: 后续版本的php-fpm. 更推荐unix域(性能更优异), 而不是tcp的模式. 这边还是选用tcp监听端口的方式.

  • 子进程数控制

pm = dynamicpm.max_children = 10pm.start_server = 5pm.min_spare_servers = 5pm.max_spare_servers = 10

  其具体的含义, 借助官方的注释来说话.

static - a fixed number (pm.max_children) of child processes;dynamic - the number of child processes are set dynamically based on the  following directives. With this process management, there will be  always at least 1 children.  pm.max_children - the maximum number of children that can    be alive at the same time.  pm.start_servers - the number of children created on startup.  pm.min_spare_servers - the minimum number of children in 'idle'    state (waiting to process). If the number    of 'idle' processes is less than this    number then some children will be created.  pm.max_spare_servers - the maximum number of children in 'idle'    state (waiting to process). If the number    of 'idle' processes is greater than this    number then some children will be killed.

  然后启动php-fpm后台服务.

service php5-fpm start|stop|restart|status

  推荐使用service来启动php5-fpm.

  启动的效果如下所示:
  

nginx环境的安装和配置:

  nginx的安装也异常的简单.

sudo apt-get install nginx

  其默认的配置文件路径为/etc/nginx/nginx.conf.

nginx和php的集成:

  现在到了最后的集成工作了, 可再/etc/nginx/nginx.conf中, 添加如下规则即可.

server {  location ~ .*\.php$ {    root /path/to/phpwebapp;    #fastcgi_pass unix:/var/run/php5-fpm.sock;    try_files $uri =404;    fastcgi_pass 127.0.0.1:9000;    fastcgi_index index.php;    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;    include fastcgi_params;  }}

  注: 由于php-fpm采用的fastcgi协议, 因此这边需要填写fastcgi_pass, 而不是之前proxy_pass那种形式.

  最后把php项目, 放入到/path/to/phpwebapp(实际为/home/work/phpwebapps)的目录中. 通过浏览器即可访问成功, nginx和php的集成工作也告一段落.

问题和追查:

  实际在配置和部署中, 并没有上述描述的一帆风顺. 遇到最多的是404和403错误.
  404错误为File Not Found, 这个一般由两种原因导致, 一种是路径真的配置错了, 另一种是访问权限(linux帐号)的问题(这个比较隐蔽, 难以一时找到). php子进程需要借助$document_root$fastcgi_script_name来获取正确的位置信息.
  403错误为权限受限(Forbidden), 还是访问权限(linux帐号)的问题. php子进程的执行用户, 需要拥有访问目录的读权限.
  php文件直接下载, 这个问题, 往往是php在nginx的配置中没设置好. 比如匹配规则没命中(未匹配, 被人优先匹配).

总结:

  nginx+php的集成, 网上资料很多, 而且介绍篇幅也不大, 让人有些飘飘然, 觉得很容易. 但真正实践起来, 却总有不少问题. 还是得沉下心来做事, 踏踏实实的做笔记, ^_^.

公众号&游戏站点:

  个人微信公众号: 木目的H5游戏世界
  
  集站点, 请点击访问:  

 

转载地址:http://tpqbo.baihongyu.com/

你可能感兴趣的文章
通过ActionTrail监控AccessKey的使用
查看>>
从 JavaScript 到 TypeScript
查看>>
一个mysql复制中断的案例
查看>>
【最佳实践】OSS开源工具ossutil-大文件断点续传
查看>>
Linux常用的服务器构建
查看>>
深入了解 Weex
查看>>
异构数据库
查看>>
透视校正插值
查看>>
Cobertura代码覆盖率测试
查看>>
【selenium学习笔记一】python + selenium定位页面元素的办法。
查看>>
Linux禁止ping
查看>>
【Matplotlib】 标注一些点
查看>>
[AX]乐观并发控制Optimistic Concurrency Control
查看>>
自定义类加载器
查看>>
MySQL数据库事务各隔离级别加锁情况--Repeatable Read && MVCC(转)
查看>>
C++构造函数例程
查看>>
把某一列值转换为逗号分隔字符串
查看>>
DLL,DML,DCL,TCL in Oracle
查看>>
iOS中--NSArray调用方法详解 (李洪强)
查看>>
java异步操作实例
查看>>