记我的nginx + php5-fpm配置问题和解决方式

680 查看

刚刚我在配置nginx+php5-fmp的虚拟主机环境, 在配置的过程中,在配置的过程中出现了一些问题, 在此记录下来, 以备后患。

请注意, 这里不是写如何配置这个虚拟主机, 而是记录我在配置的时候遇到的问题以及如何克服这些问题的过程。

环境:

ubuntu 14.04 (64位)
nginx 1.4.6
php 5.5.9

开始

开始的时候, 因为我是新安装的ubuntu的系统, 之后配置了nginx+php+mysql的环境, 但因为公司使用的是php-fpm作为php的实际的解析器, 所以又安装了php5-fpm, 这些这里不表了,最终安装完成后运行了一个简单的phpinfo页面, 一切正常。

因为我之前只配过lamp环境, 也没用过php-fpm, 所以后面配置虚拟主机的时候遇到了各种问题, 有些问题看起来可能很幼稚, 但这是我前进路上不可避免的一些坑, 遇到了, 能跨过去就是好的, 希望大家不要嘲笑一个年轻的学习的心。

虚拟主机配置

虚拟主机的配置分为两步
1: 配置ngnix, 设置新的网络端口以及网站的路径, 我在这里的时候除了因为一个分号搞了一会, 其他倒也没什么问题。 主要就是在重启失败后去查了一下nginx的日志文件, 一下就找到问题了。所以在出现问题的时候,我们第一个应该做的就是去查看一下相应的进程的日志文件, 那里会告诉我们哪些地方出现了问题,能给我们提供最直接有用的信息。

2: 配置php5-fpm
因为之前没有配过这个, 在这里的时候就遇到了一些问题。我开始的时候是把所有的配置都写在同一个www.conf配置文件中, 这是php5-fpm默认的配置文件, 而且我都是仿照原有的配置,加了一些我认为是因该要用的配置, 比如

 listen, user, group

listen的值我设置为新的虚拟主机配置中的fastcgi_pass unix:/var/run/php5-fpm.sock; 这是一种通过socket使文件和cgi建立连接的方式, 这也是原有默认的配置, 然后设置了use和group, 之后重启nginx和php5-fpm,但重启之后就遇到了502 bad gateway的错误, 我google了一些答案, 但都是让我修改一些其他的配置, 后来还是想起来之前我的老大配置的时候使用的另外一种用ip:port的方式替代socket作为fastcgi_pass值配置的方式, 在配置多个虚拟主机的时候, 他分配的时不同的端口, 这个道理和这里也很相似, 因为php5-fpm这个方式已经被原有的配置使用, 那么我就应该不能在用了, 于是我也换成了ip:port的方式。这之后再重启就哦了。

另外还有遇到的一个问题, 重启php5-fpm有的时候会遇到失败, 这种时候我们最好的方式就是去查他的日志, 在日志里, 它提示我们在配置好后用php5-fpm -test测试配置是否可行。我也是在这里才知道可以用这种方式测试php5-fpm, 而不是每次都刷新网页,不成功还得再去查日志, 这个-test就直接把调试信息输出了。

还有一个就是配置文件的分写。正如上面所说, 因为不熟悉php5-fpm的配置, 我仿照默认的配置文件写的时候就直接把配置写在了www.conf中, 这也导致了一些问题, 比如php5-fpm重启失败的问题。 后来我在看了php5-fpm.ini这个父配置文件后,才知道pool.d下面的所有文件都被作为php5-fpm的子配置文件。而后我分写了我自己的配置, 不仅更清晰, 也不容易出错了

总结:

在以上的配置过程中, 我总结了遇到一些问题时我们应该做的事情
1: 查看程序启动时的错误信息。
2: 如果是后台程序, 而且启动没有错误信息, 但一些依赖这些进程的程序却出错,这种时候应该直接去查看后台程序的日志文件。
3: 根据日志文件的信息做出改正。

警告: 不要轻易的就去google或百度错误信息, 比如我遇到的502, 网上大部分给出的都没有解决我的问题, 我还是后来通过查看进程的日志,才分析出来错误, 就是上面最后说的分写的问题。日志才是我们解决问题应该去查的第一手资料。

以上就是我在配置nginx + php5-fpm的虚拟主机的时候遇到的问题和解决的方式, 内容并没有什么深的东西, 甚至没什么可说的, 写在这里,只是我对自己的一个警戒, 也希望各位能从中得到一些警戒。

我只是一个程序员中的一个小蜗牛, 我的基础不好, 悟性不高, 但我希望我的一点一滴的积累, 能让我在编程的路上走的更远, 更高。