nginx配置php服务并确定成功,nginx服务配置---php服务接入

前言:

最近要搭建一个内部的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是否安装成功.

177b86c6fa58dbcc3596b63db746f59c.png

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

42e4f33ab0fb21052bdeb9f155697da8.png

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

• 子进程的执行用户和组

#user=www-data

user=work

#group=www-data

group=work

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

• 监听模式

#listen=/var/run/php5-fpm.sock

listen=127.0.0.1:9000

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

• 子进程数控制

pm = dynamic

pm.max_children = 10

pm.start_server = 5

pm.min_spare_servers = 5

pm.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.

启动的效果如下所示:

299abe47eec462bda7c6e2e1598d62f3.png

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://www.cnblogs.com/mumuxinfei/p/5000248.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值