Michael Jackson Dies Aged 50

Michael Jackson

Michael Joseph Jackson was born on Aug. 29, 1958, in Gary, Indiana, the seventh child of a musically gifted family. He was 11 when he made his debut as a member of The Jackson 5, with older brothers Jackie, Tito, Jermaine and Marlon.

His solo career began in 1971 with the single “Got to Be There.” His first No. 1 single came in 1971 — “Ben,” the title song from a film about a rat.

In 1979, at 21, he came out with “Off the Wall,” an album that produced four hit singles, according to the Hall of Fame.

“Thriller,” his 1982 album, and especially the 14-minute music video made for the title song and released a year later, propelled Jackson into the upper echelon of pop stardom. It topped the album charts for 37 weeks in 1983, according to the Hall of Fame.

“Billie Jean,” the second single from the album, led the charts for another seven weeks. It was with that song that Jackson introduced his famous and much-imitated “moonwalk” dance move.

His 1987 album, “Bad,” produced seven more hit singles, including the title song.

He performed at halftime of Super Bowl XXVII in 1993.

Nginx/Apache框架下的动态网站纯静态化思路

相信很多站长都在考虑将自己的网站静态化,一方面HTML访问速度较快,另一方面对搜索引擎也友好。

在这里先不谈rulrewrite, 因为我们要做的是将网站动态页面真实静态化。

流程图如下:

网页静态化的处理流程

一般来说,服务器端的cron请求不宜过频,控制在10分钟左右,保证没有用户访问的前提下网站能实现自动更新。而客户端的JS脚本则可以设置20秒左右请求更新一次,但是这样就会出现一个问题,那就是当同时登陆网站的客户端较多时会给网站造成不小的压力。这时候就需要在PHP2HTML脚本上动动脑筋,判断前一次生成HTML离现在的时间间隔,我一般是30秒重新生成一次,也就是说如果上一次生成时间离现在不到30秒,那么无论是客户端还是服务器端请求PHP2HTML都会自动停止。这样一方面减少了服务器的压力,另一方面能保证网站数据的定时有序的更新。

然而实际上,网站静态化的时间间隔会低于30秒,为什么会这样呢?答案是PHP2HTML运行本身需要时间,在它自身运行时又有新的请求产生,因此会同时运行导致生成时间间隔略小于预设的时间。这个问题理论上有解决的方法,就是利用session。但是实际中利用session会让你遇到意想不到的麻烦的,比如PHP2HTML突然间死掉了,session还存在,那么整个网站的静态就需要等到session也死掉,这需要很长的时间。

上述思路我在2个服务器上实践过,结果是我自己很满意,因为从客户端的角度出发访问的速度很快。但是服务商不满意了,由此我的网站被反反复复关闭了好多次。以后的思路是动态数据动态化,静态数据静态化,这样可以大大节省服务器开支。

Nginx环境下的upstream模式php-cgi负载均衡的尝试

昨天突然间打开http://fengzi.org特别慢,由于http://fengzi.org是伪静态的,这说明PHP脚本出了问题。

netstat -anpo | grep “php-cgi” | wc -l 查了一下,发现同时请求的php-cgi程序竟然有165个。仔细想了一下,产生该问题的原因可能是php-cgi.sock处理过慢,和PHP本身的问题造成的。

Nginx的fastcgi处理模式有两种,一种是通过sock来处理,另一种是通过fastcgi的端口来处理。sock的处理虽然相比fastcgi能慢一点,但是相对稳定。下面我们要做的就是给fastcgi做本地均衡,来同享php-cgi.sock和fastcgi端口模式的优点。

具体的做法是,首先拷贝4组php-fpm.conf的配置样本

[root@ido etc]# cp php-fpm.conf php-fpm-9000.conf
[root@ido etc]# cp php-fpm.conf php-fpm-9001.conf
[root@ido etc]# cp php-fpm.conf php-fpm-9002.conf
[root@ido etc]# cp php-fpm.conf php-fpm-9003.conf

修改php-fpm9000.conf,监听地址和子进程如下<value name=”listen_address”>127.0.0.1:9000</value> <value name=”max_children”>0</value>。其他三个文档以此类推。

给Nginx.conf添加upstream,以支持php-cgi(php-fpm)的本地均衡。

                upstream king {
                server 127.0.0.1:9000;
                server 127.0.0.1:9001;
                server 127.0.0.1:9002;
                server 127.0.0.1:9003;
                }
同样,server里的location加上proxy_pass

                location ~ .*\.(php|php5)?$
                        {
                                proxy_pass  http://king;
                                fastcgi_pass  unix:/tmp/php-cgi.sock;
                                #fastcgi_pass  127.0.0.1:9000;
                                fastcgi_index index.php;
                                include fcgi.conf;
                        }

手动添加四组php-cgi均衡均衡脚本

[root@ido ~]#  /usr/local/php/bin/php-cgi –fpm –fpm-config /usr/local/php/etc/php-fpm-9000.conf

[root@ido ~]#  /usr/local/php/bin/php-cgi –fpm –fpm-config /usr/local/php/etc/php-fpm-9001.conf

[root@ido ~]#  /usr/local/php/bin/php-cgi –fpm –fpm-config /usr/local/php/etc/php-fpm-9002.conf

[root@ido ~]#  /usr/local/php/bin/php-cgi –fpm –fpm-config /usr/local/php/etc/php-fpm-9003.conf

重启nginx,观察了一下,网站运转良好,速度也很快也很稳定,但是内存占用很大。

PS. 用netstat -an | grep 9000 发现该端口一直是监听状态,并没有使用。所以我怀疑这次尝试很可能是无意义的或者是失败的。

深究Nginx502 bad gateway, 504 Gateway Time-out的彻底解决

我的VPS是256M的内存,CPU是四核心的,所以更多的我会在乎内存。而在我调试服务器的时候通常会遇到Nginx502 bad gateway和504 Gateway Time-out的错误。分析nginx.conf我发现server和fastcgi的buffers过多,导致fastcgi请求的数量过大,php-fpm无法及时处理而出错。循此思路我们可以再总体buffers不变的情况下减少请求数量,具体的ningx.conf改动细节如下:
                server_names_hash_bucket_size 128;
                client_header_buffer_size 32k;
                large_client_header_buffers 1 128k;# 4 32k
                client_max_body_size 8m;

                sendfile on;
                tcp_nopush     on;

                keepalive_timeout 60;

                tcp_nodelay on;

                fastcgi_connect_timeout 300;
                fastcgi_send_timeout 300;
                fastcgi_read_timeout 300;
                fastcgi_buffer_size 128k;
                fastcgi_buffers 2 256k;#8 128
                fastcgi_busy_buffers_size 256k;
                fastcgi_temp_file_write_size 256k;
                fastcgi_intercept_errors on;

                gzip on;
                gzip_min_length  1k;
                gzip_buffers     1 64k; #4 16
                gzip_http_version 1.0;
                gzip_comp_level 2;
                gzip_types       text/plain application/x-javascript text/css application/xml;
                gzip_vary on;

另外,php-fpm的默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这也是导致nginx出错的原因之一,因此可以将php-fpm的处理方式改成apache模式。
        <value name=”style”>apache-like</value>

从更改完毕到现在的测试表明上述方式的效果还是很明显的,并没有发现一次Nginx502 bad gateway或504 Gateway Time-out错误。当然,如果你的VPS或者服务器的性能足够好可以根据具体情况不必做无谓的改动。

LNMP-LNMPz-最新Linux下的Nginx+MySQL+PHP+phpMyAdmin+eAcelerator+Zend Optimizer一键安装包

首先声明,该LNMP一键安装包并非我个人的原创。本人接触Linux刚2个星期,对于Linux 的很多细节都不甚了解。

LNMP是本人根据张宴Licess的LNMP改写而成,并经过本人的测试成功后才发布的。因此,这个LNMP上有很多前辈的身影。之所以发布出来,是本着共享的精神,也是希望更多的人能用上最新版本的Nginx+MySQL+PHP+phpMyAdmin+eAcelerator+Zend optimizer这些软件。

言归正传,开始本LNMP的正式介绍。

VPS重装后,运行yum update进行系统升级。

运行cd /usr/src

接着下载本LNMP一键安装包 wget http://fengzi.org/LNMP.zip

解压缩 unzip LNMP.zip

进入该目录 cd LNMP

给脚本赋权 chmod +x down.sh install.sh opt.sh startup.sh

进行下载和安装

执行./down.sh

执行./install.sh

安装到最后的Zend optimizer时需要确认,在php.ini的location时填写 /usr/local/php/etc/ 然后询问服务器是否是apache时选NO,因为我们用的是Nginx :)

运行完毕后,进行优化,命令: ./opt.sh 最后开机运行 ./startup.sh

全部运行完毕后重启php-fpm才能使zend optimizer生效,方法是执行 /usr/local/php/sbin/php-fpm restart

运行mysql: service mysql start

完毕。

Vsftpd我没有加上来,原因是vsftpd的安装和配置都很简单,在这里我做一个粗略的介绍。

运行 yum -y install vsftpd 安装vsftpd.

配置 vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO 呵呵,我的是给自己用的,不必固定目录。需要固定目录的就改一下

chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

最后在配置对应的文件/etc/vsftpd/chroot_list 把FTP的用户名填写进去就行了。

开启vsftpd :service vsftpd start

这样就可以上传网站了。

程序安装路径:
MySQL :   /usr/local/mysql
PHP :     /usr/local/php
Nginx :   /usr/local/nginx
PHPMyAdmin /web/www/phpmyadmin
Web目录    /web/www

注意:MYSQL数据库用户名root密码root,登陆后进入mysql数据库,找到user表,删除除了有root密码外的所有用户。

然后把root密码改成自己的

彻底解决Nginx 504 Gateway Time-out的一种途径[原创]

昨天刚装的LNMPZ一键安装包,今天调试参数的时候发现Nginxp频繁出现504 Gateway Time-out错误,也参阅了网上的文章,诸如做8组较大的        large_client_header_buffers 8 128k;  但是问题仍没有解决。

要彻底解决Nginx 504 Gateway Time-out,还得从源头分析产生Nginx 504 Gateway Time-out的原因。504 Gateway Time-out产生的主要原因是PHP脚本执行时间过长造成的。一方面是由于处理时的缓存不够大,这通常用网上所说的增加8组较大的缓存可以解决;另一方面则是PHP脚本自身的问题,导致死循环或者无法释放。解决该问题的方法则是让PHP有个最大的执行时间。

我的具体做法是在php-fpm.conf里修改最大请求时间,把默认的0s改成30s,即<value name=”request_terminate_timeout”>30s</value>
这样再重启php-cgi,问题解决。

解决Starting MySQL. ERROR! Manager of pid-file quit without updating file.

用了自己编写的LNMP一键安装包后发现MYSQL无法启动,提示Starting MySQL. ERROR! Manager of pid-file quit without updating file.错误。
查看MYSQL的错误日志时发现
[ERROR] /usr/local/mysql/libexec/mysqld: unknown option ‘–skip-federated’
原来可能是MYSQL版本提高了,不再支持–skip-federated这个参数了,解决方法是到/etc/my.cnf把skip federated注释掉,[root@www bin]# service mysql start
Starting MySQL. SUCCESS! 搞定!

解决nginx 502 bad gateway错误的另一个思路[原创]

导致nginx 502 bad gateway的PHP-CGI(FASTCGI)

导致nginx 502 bad gateway的PHP-CGI(FASTCGI)

NGINX频爆502 BAD GATEWAY的错误,看了网上的教程,仍没有彻底解决。
目前我总结的解决502 BAD GATEWAY的方式有:
1.视服务器的性能,在php-fmp.conf里增加max_children的值,我目前用的15.
2.用reload参数定时重载php-fpm。这个主要原因是php脚本执行时间过长造成的,重载php-fpm能杜绝这个问题。如何彻底解决php-cgi脚本占用大量内存从而导致502错误的产生还值得进一步探讨,目前该做法不失为一种好办法。
具体的做法是,用crontab让php-fpm平滑重启,从而不影响PHP脚本的运行。
*/10 * * * * /usr/local/php/sbin/php-fpm reload

理发

等待无异于浪费生命。

等车

想了很多,感觉自己很少想问题。
有很多的事情等着我去做,也有很多的想法等着我去实现。一步一步,去创造生活,享受生活。

←Older