今天把博客搬到 RAMHost 的 VPS

由于之前托管的虚拟空间时不时抽风,最近就专门看了很多 VPS 的评测,正好今天看到 RAMHost 有货,就入了一个。

RAMHost 是一家规模很小但能提供优质服务的公司,在网上有着不错的口碑,VPS 基于 OpenVZ,网站上专门有服务器运行状态可供查看。

我的套餐是 Mini,256M/384M 内存,20G 硬盘,200G 流量,月付 8.99 刀,配置比较低,不过跑一个博客足够了。

用着感觉不错,前几天升级到 Standard 方案,512M/768M 内存,40G 硬盘, 500G 流量 ,月付 11.99 刀。

运气还行,开通一般要 3 个工作日,我付款后 20 分钟左右就收到开通邮件了,而且连接速度不错。

优化 WordPress 3.0-4.9 自动草稿功能

Super Switch 是我的必装插件之一,可以去掉烦人的 Revision。可是升级到 3.0 之后,又冒出个自动草稿(auto-draft)功能。当然,如果你点击新建一篇文章,然后接着就写完发表,那么这个问题可能不存在,但是如果你点击了新建文章后,没写东西,或者写了几个字又点击其他页面,不想写了,那么你在数据库中查看,将占用一条记录,被标记为了auto-draft,即自动草稿。

目前好像还没有关闭自动草稿的插件,所以只好自己动手优化一下,让其每次只产生一条 auto-draft,新建文章时自动调用。

找到 /wp-admin/includes/post.php 文件,搜索 $create_in_db ,下面就是产生 auto-draft 的代码:

    if ( $create_in_db ) {
        $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
        $post = get_post( $post_id );
        // Below is added in 3.1
        if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
            set_post_format( $post, get_option( 'default_post_format' ) );
    }

继续阅读“优化 WordPress 3.0-4.9 自动草稿功能”

修改 Win7 MTU 值

对于 MTU(Maximum Transmission Unit,最大传输单元)的简单说明:

网络上传输的并非连续的数据流,而是一个个的数据包,MTU的值限定了这个数据包的最大值。
如果电信运营商设定的数据包最大值为1480字节,而你的电脑通过路由器上网,默认是使用1500字节(如果是直连Modem,则会自动采用电信提供的 MTU值),那么你发送的数据包将超过电信的规定,而被退回,于是系统只好重新组成符合电信要求的数据包来发送,这样就浪费了时间,增加了处理工序,甚至有人因此网络非常不稳定,打开网页龟速。

最好的做法就是将自己电脑和路由器的 MTU 设置成电信允许的限值。

一、测试电信 MTU 值

以管理员身份运行命令提示符,“局域网”的MTU值默认为1500,“宽带”的MTU值则各地区不同,可通过尝试来获取所在地的MTU值,方法如下:

ping www.sina.com.cn -f -l 1500

"-f" 在数据包中设置“不分段”标志。强制系统将数据包一次性发送出去。
"-l 1500" 代表 length 长度,1500 代表数据包长度为 1500 个字节。
返回结果是:需要拆分数据包。
修改 length 值,直到找出最大可传输数据包的长度(例如本机是 1464)。
上面得到的值并不能直接用于本地设置上(因为这里得到的其实是 MSS 而非 MTU),还应在此基础上加上 28(包头大小),因此最终的 MTU 值为:1464 + 28 = 1492
继续阅读“修改 Win7 MTU 值”

eAccelerator 配置参数详解

eAccelerator 是一个自由开放源码 PHP 加速器,优化和动态内容缓存,提高了 PHP 脚本的缓存性能。

eaccelerator.shm_size = "32"

eAccelerator 可以使用的共享内存的数量(以兆为单位)。"0" 是指操作系统的默认值。默认值是 "0"。可根据服务器的实际情况来调整,16,32,64,128 都是可以的。

eaccelerator.cache_dir = "/tmp/eaccelerator"

这个目录是给磁盘缓存使用。eAccelerator 在这里储存预先编译好的代码,进程数据,内容以及用户的自定义内容。同样的数据也能被储存在共享内存中 (这样可以提高访问速度)。默认的设置是 "/tmp/eaccelerator"。

eaccelerator.enable = "1"

开启或关闭 eAccelerator。"1" 为开启,"0"为关闭。默认值为 "1"。
继续阅读“eAccelerator 配置参数详解”

如何在 Windows 系统编译 PHP5

类 Unix 系统上的编译方式各位基本都很熟悉,网上也有大把的资料可以查询。但是却很少见到 PHP 在 Windows 平台上的编译方法。因此也导致了本文的诞生。你可以将本文当作对 PHP 手册上对 Windows 上编译 PHP 一章的扩充版本。
首先,借用 PHP 手册上的一段话:
开始之前,很值得回答一下这个问题:为什么在 Windows 下编译这么难?
Windows 下还没有愿意免费共享代码的开发人员群体。直接结果就是没有足够的投资去建立支持这种开发方式的体系。大体上,尽量得到的可用资源都是从 Unix 下的工具来的。

环境需求

首先,为了在 Windows 上安编译,我们需要有 Microsoft 开发环境。推荐使用 Mirosoft Visual C++ 6.0,当然 VC++.net 也同样可以。
从 PHP5 开始,支持 Microsoft .NET 的工具链(你需要安装 Windows Platform SDK, Visual C++ Toolkit and .NET Framework SDK)
继续阅读“如何在 Windows 系统编译 PHP5”

Nginx PHP-FPM 502 504 自动重启脚本

网上有很多方法了:增加 php-cgi 进程 增加时间 等等 试了很多都没法完全杜绝 502 和 504 的发生,而且一旦发生了 502 错误,而且我们又不在电脑旁时就可能会损失大量的流量,于是就想让服务器自动检测 php 是否运行正常,若不正常重启之,这样就可以在 php 出现 502 等情况时尽快恢复正常。完全杜绝的方法还在摸索中…

首先新建一个 x.php 文件放入网站根目录:

<?php echo 'onens.com';

然后 编写脚本 内容如下。此脚本并无判断是否是 502 还是 504 还是其他,只要 http 请求返回值不是 200,就重启!

vim restart-php-fpm.sh

#!/bin/sh
wget http://onens.com/x.php --spider

re=$?

if [ $re = "1" ]; then
    echo "##" "502" $(date +"%y-%m-%d %H:%M:%S") "restart php-fpm " | mail -s "Critical Info" 13888888888@139.com
    /etc/init.d/php-fpm restart
    echo "restart php-fpm"
fi

继续阅读“Nginx PHP-FPM 502 504 自动重启脚本”

Nginx PHP-FPM 服务脚本

nginxphp-fpm 添加到系统服务:

vim /etc/init.d/nginx
# Copy the "nginx" into "/etc/init.d/nginx"
chmod 755 /etc/init.d/nginx
chkconfig --level 345 nginx on
vim /etc/init.d/php-fpm
# Copy the "php-fpm" into "/etc/init.d/nginx"
chmod 755 /etc/init.d/php-fpm
chkconfig --level 345 php-fpm on
# Or simply:
echo "/usr/sbin/nginx" >> /etc/rc.local
# Stop
pkill -9 nginx
# Reload
/usr/sbin/nginx -s reload
echo "/usr/sbin/php-fpm -y /etc/php-fpm.conf" >> /etc/rc.local
# Stop
pkill -9 php-fpm

继续阅读“Nginx PHP-FPM 服务脚本”

CentOS VMware 系统时间同步

在 VMware 上装了 CentOS 5.5,运行不久后就会发现系统时间不准,和当时的时间总有差距,调整好后,运行不久就又出现这个问题。
前面已经说过用 ntp 网络时间同步来解决,这里采用安装 VMtools 方法:

在 VM 菜单 中选择 安装 VMware Tools:

mount /dev/cdrom /mnt
cp VMwareTools-*.tar.gz ~
umount /mnt
cd
tar zvxf VMwareTools-*.tar.gz
./vmware-tools-distrib/vmware-install.pl

一路回车,安装完成后运行:

vmware-toolbox-cmd timesync enable

或者关闭虚拟机,直接修改 vmx 文件:

tools.syncTime = "TRUE"

此时系统时间就和系统本地时间日期同步了。

CentOS 系统时间同步

用 ntp 网络同步 CentOS 系统时间:

# Install ntp
yum install ntp
# Set the timezone
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# Synchronization
ntpdate pool.ntp.org
# Auto start
echo "ntpdate pool.ntp.org" >> /etc/rc.local
# Crontab
crontab -e
0-59/10 * * * * /usr/sbin/ntpdate us.pool.ntp.org | logger -t NTP