将PHP从5.3.28升级到5.3.29时Nginx出现502错误

今天将PHP从5.3.28升级到5.3.29,发现网站打不开了,提示"502 bad gateway",访问静态资源可以,但访问任何PHP文件都会502。

其实之前也发现这个问题,只是一直没找到解决办法,所以我一直将PHP保持在5.3.28版本。

按照我以前的脾气,我什么软件都得要最新的稳定版,但PHP之类的软件是例外,因为版本高了,会导致很多程序不兼容,相对来说5.3兼容性算是最好的版本之一,当然5.2也可以。

强迫症实在受不了,官方说5.3.29是5.3的最后一个版本,最后一个版本出现这种问题又一直没解决让我很难受。

网上搜索了一下,没人出现我这种问题,所有的编译过程,配置过程,都是照旧,之前从5.3.25一直到5.3.28都是用的我写的同一个升级脚本,按道理同一个子版本系列,一样的编译和配置过程,不应该出现问题的。

为何5.3.25一直到5.3.28都没问题,到了5.3.29就没问题了呢?

今天终于把问题的根源找到了,我也是醉了……

由于我不想占用额外的端口,所以Nginx和PHP-FPM之间一直使用的Unix socket,而且据说这种方式效率也高一些。

PHP升级到5.3.29以后,出现502错误,而且是一打开网页就报错了,不像是由于PHP执行超时导致的Nginx提示502,更像是PHP-FPM异常终止了,或者是Ngxin根本没有连接上fastcgi。

使用PHP-FPM的日志也是郁闷,我明明开启了日志,还设置了日志路径,但还是没有生成日志。

好吧,根据前面的思路推测出来的原因找问题:

1.PHP-FPM一开始工作就异常终止了;

2.Ngxin根本没有连接上fastcgi。

第一种可能直接就排除了,因为出现502错误的时候,后台的PHP-FPM进程并没有退出,还存活得好好的。

那么很可能是第二种可能了,我把Nginx和PHP-FPM的配置文件修改了一下,改成了传统的“地址:端口”的形式

PHP-FPM配置文件中:

listen = 127.0.0.1:1234

Nginx配置文件中:

fastcgi_pass 127.0.0.1:1234


重启服务,网站竟然顺利打开了。

看来就是Nginx没有连接上PHP-FPM了,那么问题出在哪里呢?难道5.3.29去掉了Unix socket的连接方式?我觉得不大可能,查阅更新日志,也没有看到有关的项目啊。

我将Nginx和PHP-FPM的配置文件改回去。


PHP-FPM配置文件


listen = /tmp/php-cgi.sock

Nginx配置文件中:

fastcgi_pass unix:/tmp/php-cgi.sock;

重启服务,立马又502了。

首先想到了检查权限,反正是测试,所以我二话不说直接把那个PHP-FPM的sock文件权限改为777。


chmod 777 /tmp/php-cgi.sock

直接打开网页,能打开!

好吧,就是权限问题了,重启服务,查看php-cgi.sock 的权限


-rwx------. 1 root  root   663 9月  18 00:16 php-cgi.sock

这。。。原因已经很明了了,怪不得Nginx连不上PHP-FPM,php-cgi.sock的权限竟然是700,


但问题来了,为什么同样的编译和配置过程,5.3.28之前的版本就没问题呢?我查看另一台没有升级5.3.29的服务器:


srw-rw-rw- 1 root  root     0  9月 16 21:11 php-cgi.sock


发现其权限是666,这……无法理解了……为什么5.3.28的默认权限配置是666,到了5.3.29就变成700了呢?

查阅PHP文档,找到解决办法

将PHP-FPM里的配置文件加入,前两项是指定php-cgi.sock的拥有者和用户组,后一项是指定文件权限。


listen.owner = www
listen.group = www
listen.mode = 0666

重启服务,问题解决。



被移动奇葩的网络坑后的小记

我在学校用的校园网,出口是教育网/移动切换。
访问电信、联通、教育网走的是教育网出口
访问移动、小运营商、国外是走的移动出口


大家可能知道libiconv-1.14的一个BUG,就是那个'gets' undeclared here,编译PHP之前必须先编译libiconv
于是我把源码fix以后重新打包了一个libiconv-1.14.tar.gz放在我的国外网站上。

我在宿舍给一台以前的电脑安装CentOS 7,安装CentOS 7以后我开始安装AMH(这个AMH安装脚本是我自己DIY过的,能支持CentOS 7)
结果竟然出现了那个'gets' undeclared here错误,我查看下载下来的源码,发现竟然没有fix?然后我重新检查了服务器上的压缩包,里面确确实实修复了BUG的啊,为什么下载下来的文件和服务器上的文件不一样?

然后我重新从我的服务器上wget了一下我那个修改过的libiconv-1.14.tar.gz

发现问题了:


20140918015041


怎么突然来了个302跳转?我服务器上没设置这个跳转规则啊!


开始我没留意这串地址的问题,我使用站长之家的HTTP状态查询工具查询我那个URL地址,返回的是正常的200状态码,于是我开始怀疑是wget自带的校验,因为这个libiconv-1.14.tar.gz是被我修改过的,所以可能wget发现有问题就自动跳转到ftp.qnu.org上去下载官方版本了,但不管我URL地址的后半部分怎么填,即便是一个不存在的URL地址,只要最后的文件名是libiconv-1.14.tar.gz ,他都会302跳转到下面那一串地址。

折腾了十多分钟,才想起仔细观察这个302后的地址,查了一下那个211.136.8.30的IP地址,卧槽,北京移动!!!!!!我瞬间知道原因了——移动大缓存服务器!!

关于“移动大缓存服务器”我不想多讲,简单来说就是,移动的网络就是很多NAT+很多缓存服务器构成的,使用移动宽带(包括我们学校的移动出口)的时候,我们发出去的HTTP请求很多都被移动重定向到了它的缓存服务器上了,这样移动公司就可以节省很多网间结算的费用,因为如果直接访问国外服务器或者国内的电信、联通服务器,移动公司是要给国外的网络运营商或者电信公司、联通公司付钱的,所以它用了一大堆缓存服务器来缓存其它运营商的内容,这样就能省下很多钱!!!

移动这个大奇葩网络,处处都是访问缓存,它重定向之前检查一下文件内容或者对比一下文件的修改时间也好啊,只要文件名一致就直接匹配到他的缓存上面去了!我在自己的网站上放了一个空白记事本,改名为libiconv-1.14.tar.gz,然后访问这个空白文件,它照样302跳转!!这尼玛。。。

U盘安装Centos 7要注意的问题

今天,我把同学的笔记本拿过来安装CentosOS ,想到最近CentosOS 7出来了,想看看CentosOS 7是什么样子,于是从网上下载镜像准备用U盘装。

按照平常的方法,使用UltralISO来制作CentOS7的安装盘,然后U盘引导启动。

U盘启动一切顺利,然后看到了以下的界面

QQ截图20140918012544

这个时候不能直接选择那个Install CentOS 7

而是按Tab键

vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet

改为

vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb4 quiet

然后回车,才能顺利安装。
原因是:
这个菜单默认是以卷标为 Centos x86_64 的驱动器启动,而U盘不属于驱动器,所以就会启动安装失败,这个时候就应该把那个卷标匹配改为U盘的绝对路径。

Linux在命令行环境下使用SpeedTest测试带宽

现在有个很流行的测试带宽的网站叫SpeedTest
官方网站:http://www.speedtest.net/
默认情况下需要有图形界面,借助浏览器才能用它测试带宽
但对于很多服务器而言,特别是Linux,没有安装图形界面,更没有网页浏览器,如何用它来测试带宽呢?
于是,有人用Python写了一个脚本程序,通过它,即便是命令行环境下,也能使用SpeedTest测试带宽.
项目地址:https://github.com/sivel/speedtest-cli
命令如下:

wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli
./speedtest-cli --share

下面是中国的测速节点列表:

5526) Xinjiang Unicom Company (Urumqi, China) [6066.65 km]
3784) China Mobile (Urumqi, China) [6066.65 km]
5992) Qinghai China Unicom (Xining, China) [7484.42 km]
3973) China Telecom (Lanzhou, China) [7656.37 km]
4690) China Unicom Lanzhou Branch Co.Ltd (Lanzhou, China) [7656.37 km]
4504) China Mobile Group GanSu Co.Ltd (Lanzhou, China) [7656.37 km]
5509) Chinaunicom Ningxia branch (Ningxia, China) [7699.86 km]
5465) China Unicom (Hohhot, China) [7703.25 km]
5460) China Unicom Heilongjiang Branch (Harbin, China) [7995.73 km]
4525) Heilongjiang-CMCC (Harbin, China) [7995.73 km]
5519) Shanxi Unicom (Taiyuan, China) [8006.08 km]
4713) China Mobile Group Beijing Co.Ltd (Beijing, China) [8033.29 km]
4751) Beijing Telecom (Beijing, China) [8033.29 km]
4589) China Telecom Beijing Co.,ltd (Beijing, China) [8033.29 km]
5145) Beijing Unicom (Beijing, China) [8033.29 km]
2529) Beijing Normal University (Beijing, China) [8033.29 km]
5505) Beijing Broadband Network (Beijing, China) [8033.29 km]
4863) Xi'an branch,Chinaunicom (Xian, China) [8107.80 km]
5292) China Mobile Group Shaanxi Company Limited (Xi'an, China) [8107.80 km]
1185) China Unicom,Changchun Branch (Changchun, China) [8110.48 km]
2461) China Unicom (Chengdu, China) [8122.08 km]
4624) ChinaTelecom (Chengdu, China) [8122.26 km]
5312) Chengdu Telecom (Chengdu, China) [8122.26 km]
4575) China Mobile Group Sichuan (Chengdu, China) [8122.26 km]
5475) China Unicom (Tianjin, China) [8143.49 km]
5017) China Unicom,Liaoning Branch (Shenyang, China) [8241.46 km]
4486) China Mobile Group Henan Co.,Ltd. (Zhengzhou, China) [8337.07 km]
5131) China unicom henan branch (Zhengzhou, China) [8337.07 km]
4595) China Telecom HeNan Branch (Zhengzhou, China) [8337.07 km]
5039) China unicom Jinan branch (Jinan, China) [8351.94 km]
5563) huawei company (Jinan, China) [8351.94 km]
5530) CCN (Chongqing, China) [8370.81 km]
4495) China Mobile Group Chongqing Co.,Ltd (Chongqing, China) [8370.81 km]
5726) China Unicom Chong Qing Branch (ChongQing, China) [8370.81 km]
5380) CQMC (Chongqing, China) [8370.81 km]
5103) Yunnan Chinaunicom (Kunming, China) [8509.08 km]
5892) China Mobile Group Yunnan Co.,Ltd. (Kunming, China) [8509.08 km]
5710) China Unicom (Qingdao, China) [8585.10 km]
4881) China Unicom (Guiyang, China) [8625.06 km]
5485) China Unicom,Hubei Branch (Wuhan, China) [8742.29 km]
5724) ChinaUnicom (Hefei, China) [8797.69 km]
4433) China Telecom Anhui Co.,Ltd (Hefei, China) [8797.69 km]
4377) China Mobile Group Anhui Co.,Ltd (Hefei, China) [8797.69 km]
5316) China Telecom JiangSu Branch (Nanjing, China) [8862.98 km]
5446) CHINA UNICOM JIANGSU COMPANY (Nanjing, China) [8862.98 km]
4870) Changsha, Hunan Unicom (Changsha, China) [8877.08 km]
4616) China Mobile Group Anhui Co.,Ltd (Wuhu, China) [8904.91 km]
5122) China Mobile Group Jiangsu Co.,Ltd. (Wuxi, China) [8990.35 km]
4916) China Unicom Wuxi Branch (Wuxi, China) [8990.35 km]
5097) Chinaunicom.jx (NanChang, China) [9004.24 km]
3927) China Mobile Jiangsu Co., Ltd. (Suzhou, China) [9029.42 km]
5274) Suzhou China Telecom (Suzhou, China) [9029.42 km]
5674) GX-Unicom (Nanning, China) [9064.14 km]
5083) Shanghai Branch, China Unicom (Shanghai, China) [9088.55 km]
3633) China Telecom (Shanghai, China) [9088.55 km]
4647) China Mobile Group Zhejiang Co.,Ltd (Hangzhou, China) [9103.33 km]
5300) Hangzhou , Zhejiang Unicom (Hangzhou, China) [9103.33 km]
5553) jxunicom (JiangXi, China) [9135.00 km]
5409) Zhejiang Unicom (Zhejiang, China) [9217.68 km]
5700) Nanping (Nanping, China) [9319.92 km]
4428) Vixtel (Guangzhou, China) [9344.53 km]
4672) ChinaTelecom (Guangzhou, China) [9344.53 km]
3891) Unicom-GZ (Guangzhou, China) [9344.53 km]
5985) Hainan Unicom (Haikou, China) [9436.31 km]
5805) China Telecom Fujian Branch (Fuzhou, China) [9436.42 km]
4884) fuzhou_unicom (Fuzhou, China) [9436.42 km]
4924) SZUNICOM (Shenzhen, China) [9447.51 km]
5081) ShenZhen Telecom (Shenzhen, China) [9447.51 km]
3871) SZWCDMA (Shenzhen, China) [9447.51 km]
4515) CMCC-SZ (Shenzhen, China) [9451.03 km]
1536) STC (Hong Kong, China) [9475.40 km]
4910) FPT Telecom (Hong Kong, China) [9475.40 km]
5120) HKIX1 (Hong Kong, China) [9475.98 km]
1628) FUJIAN BTNG-XM (Xiamen, China) [9512.80 km]
5506) china unicom (Xiamen, China) [9512.80 km]4525) Heilongjiang-CMCC (Harbin, China) [9010.67 km]
5460) China Unicom Heilongjiang Branch (Harbin, China) [9010.67 km]
1185) China Unicom,Changchun Branch (Changchun, China) [9225.24 km]
5017) China Unicom,Liaoning Branch (Shenyang, China) [9472.49 km]
4751) Beijing Telecom (Beijing, China) [10060.60 km]
5505) Beijing Broadband Network (Beijing, China) [10060.60 km]
2529) Beijing Normal University (Beijing, China) [10060.60 km]
4589) China Telecom Beijing Co.,ltd (Beijing, China) [10060.60 km]
4713) China Mobile Group Beijing Co.Ltd (Beijing, China) [10060.60 km]
5145) Beijing Unicom (Beijing, China) [10060.60 km]
5475) China Unicom (Tianjin, China) [10078.20 km]
5710) China Unicom (Qingdao, China) [10127.28 km]
5465) China Unicom (Hohhot, China) [10248.12 km]
5563) huawei company (Jinan, China) [10290.79 km]
5039) China unicom Jinan branch (Jinan, China) [10290.79 km]
3633) China Telecom (Shanghai, China) [10433.39 km]
5083) Shanghai Branch, China Unicom (Shanghai, China) [10433.39 km]
5519) Shanxi Unicom (Taiyuan, China) [10450.17 km]
3927) China Mobile Jiangsu Co., Ltd. (Suzhou, China) [10485.42 km]
5274) Suzhou China Telecom (Suzhou, China) [10485.42 km]
5122) China Mobile Group Jiangsu Co.,Ltd. (Wuxi, China) [10486.05 km]
4916) China Unicom Wuxi Branch (Wuxi, China) [10486.05 km]
6245) ningbo unicom (Ningbo, China) [10533.15 km]
5316) China Telecom JiangSu Branch (Nanjing, China) [10549.75 km]
5446) CHINA UNICOM JIANGSU COMPANY (Nanjing, China) [10549.75 km]
5300) Hangzhou , Zhejiang Unicom (Hangzhou, China) [10598.33 km]
4616) China Mobile Group Anhui Co.,Ltd (Wuhu, China) [10634.40 km]
4595) China Telecom HeNan Branch (Zhengzhou, China) [10649.04 km]
5131) China unicom henan branch (Zhengzhou, China) [10649.04 km]
4486) China Mobile Group Henan Co.,Ltd. (Zhengzhou, China) [10649.04 km]
5409) Zhejiang Unicom (Zhejiang, China) [10657.62 km]
5724) ChinaUnicom (Hefei, China) [10661.33 km]
4377) China Mobile Group Anhui Co.,Ltd (Hefei, China) [10661.33 km]
4433) China Telecom Anhui Co.,Ltd (Hefei, China) [10661.33 km]
5509) Chinaunicom Ningxia branch (Ningxia, China) [10953.59 km]
5485) China Unicom,Hubei Branch (Wuhan, China) [10959.32 km]
6144) xjunicom (Urumuqi, China) [10967.58 km]
5292) China Mobile Group Shaanxi Company Limited (Xi'an, China) [10968.43 km]
4863) Xi'an branch,Chinaunicom (Xian, China) [10968.43 km]
3784) China Mobile (Urumqi, China) [10970.34 km]
5805) China Telecom Fujian Branch (Fuzhou, China) [10985.75 km]
4884) fuzhou_unicom (Fuzhou, China) [10985.75 km]
5097) Chinaunicom.jx (NanChang, China) [11011.31 km]
5700) Nanping (Nanping, China) [11019.12 km]
3973) China Telecom (Lanzhou, China) [11083.02 km]
4690) China Unicom Lanzhou Branch Co.Ltd (Lanzhou, China) [11083.02 km]
4504) China Mobile Group GanSu Co.Ltd (Lanzhou, China) [11083.02 km]
5553) jxunicom (JiangXi, China) [11116.42 km]
5992) Qinghai China Unicom (Xining, China) [11127.99 km]
5506) china unicom (Xiamen, China) [11200.23 km]
1628) FUJIAN BTNG-XM (Xiamen, China) [11200.23 km]
4870) Changsha, Hunan Unicom (Changsha, China) [11242.39 km]
5726) China Unicom Chong Qing Branch (ChongQing, China) [11518.04 km]
5380) CQMC (Chongqing, China) [11518.04 km]
5530) CCN (Chongqing, China) [11518.04 km]
4495) China Mobile Group Chongqing Co.,Ltd (Chongqing, China) [11518.04 km]
4575) China Mobile Group Sichuan (Chengdu, China) [11560.62 km]
5312) Chengdu Telecom (Chengdu, China) [11560.62 km]
4624) ChinaTelecom (Chengdu, China) [11560.62 km]
4515) China Mobile Group GuangDong (Shenzhen, China) [11632.92 km]
4924) SZUNICOM (Shenzhen, China) [11633.88 km]
3871) SZWCDMA (Shenzhen, China) [11633.88 km]
5081) ShenZhen Telecom (Shenzhen, China) [11633.88 km]
4672) ChinaTelecom (Guangzhou, China) [11643.58 km]
3891) Unicom-GZ (Guangzhou, China) [11643.58 km]
5120) HKIX1 (Hong Kong, China) [11647.32 km]
1536) STC (Hong Kong, China) [11651.97 km]
4881) China Unicom (Guiyang, China) [11771.74 km]
5674) GX-Unicom (Nanning, China) [12000.65 km]
5985) Hainan Unicom (Haikou, China) [12101.31 km]
6168) China Telecom (Kunming, China) [12147.50 km]
5892) China Mobile Group Yunnan Co.,Ltd. (Kunming, China) [12147.50 km]
5103) Yunnan Chinaunicom (Kunming, China) [12147.50 km]
5750) LahsaUnicom (Lhasa, China) [12289.13 km]

删除OpenVZ技术的VPS下一些默认自带软件

OpenVZ的VPS虽然常常被人批评有超卖的可能,但其性价比确实很高,性能损失也较小(毕竟共用的宿主机的内核),而且大多数OpenVZ的VPS都能一键装系统。

但一键装系统的系统模板大多数集成了一些默认软件,这类软件很多情况下用不上,造成硬盘和CPU以及内存的浪费(因为里面有一部分是开机自动启动的)。

CentOS常见的自带软件有Apache,sendmail,exim等。

输入


yum remove -y httpd sendmail exim


即可删除。

本文只为帮助那些拿VPS来挂机的朋友节省一些系统资源,并无什么技术含量,没事随便写的。