最近又折腾回主机了,但是着导火索是什么呢,之前用的衡天主机竟然连续抽风了两天,搜索引擎收录的网页立刻减少了100多;而且主机的ping值一直在300ms左右,想起新浪云平台的ping值只有50ms左右,立马就有了折腾的动力。
开始折腾时,究竟选择哪一个主机,既可以在sae上建立wordpress站点,优点是延时少,稳定;缺点是国外访问延时大,可折腾的地方少。对于亚马逊的aws,经测试在美国西海岸的机房ping值只有150ms左右,在日本的机房只有80ms左右,这速度完全可以接受,而且定制度高。但是日本的丢包率大概是25%左右,基本与gae的丢包率相当,原因是国内的某些因素,大家都懂得,所以我就选择了aws的加州机房,如果加州的延时较大时可以用sae搭建一个cdn加速程序。
下面只是简单说明:因为之前在AMI上建立过博客,apache和MySQL经常无故宕机,所以这次只在AMI上建立apache,SQL是用Amazon另一个服务RDS。
- 建立一个Amazon Linux AMI的Instance,然后下载相应的ssh密匙,在Security Groups开启相应的80端口,然后就分配一个独立ip,绑定到Instance上,然后用ssh登陆配置。把自己wordpress的目录放在
1
2
3
4
5
6//root
sudo su
//install the Apache Web Server, PHP
yum install httpd php php-mysql
//Start the Apache Web Server
service httpd start/var/www/html
里面,注意,如果你开启了伪静态,应该修改/etc/httpd/conf/httpd.conf
,把主目录和/var/www/html
目录两个地方的AllowOverride None
改成AllowOverride All
,这样.htaccess
才能配置。
还有要留意自己的主题有没有用一些php没自带的函数,例如我用了mbstring
,所以我要另外安装插件:yum install php-mbstring php-dom
另外,为了可以配置RDS服务里的SQL,我下载了phpMyAdmin在/var/www/html
中,把config.sample.inc.php
重命名为config.inc.php
,后面根据RDS修改相应的SQL地址,SQL用户名,密码,数据库名。 - 在aws加州机房找到RDS,新建一个MySQL数据库,设置相应的用户名,密码,数据库名。然后在DB Security Groups中授权EC2 Security Group可以访问,接着就是用phpMyAdmin导入数据库。 本来这就大功告成的,但是由于以前有apache和SQL经常宕机的经历,现在SQL建立在RDS中,SQL可以保证稳定性,apache还是不稳定,所以就写了一个crontab的命令,在
/var/www/reboot.txt
写入如下语句:导入crontab任务1
2
3
4
5
6
7
8
9
10
11//由于有时httpd的进程会锁死,不能restart,所以每天都会停止httpd的进程一次。
//格兰披治时间16点59分执行,北京时间0点59分
59 16 * * * killall httpd
//格兰披治时间17点0分执行,北京时间1点
0 17 * * * /etc/init.d/httpd restart
//格兰披治时间22点0分执行,北京时间6点
0 22 * * * /etc/init.d/httpd restart
//格兰披治时间4点0分执行,北京时间12点
0 4 * * * /etc/init.d/httpd restart
//格兰披治时间10点0分执行,北京时间18点
0 10 * * * /etc/init.d/httpd restart由于实在搞不懂apache为何经常宕机,所以只能用定时重启的办法先凑合着用,如果你想每周都reboot一次系统,那就在1
2
3
4sudo su
crontab /var/www/reboot.txt
//查看用户的定时任务
crontab -l/etc/rc.local
中加入命令:1
2service httpd start
crontab /var/www/reboot.txt
折腾完了,先凑合着试一下效果吧。
这是分割线,以下是RDS的账单
血的教训,千万不要开Multi-AZ这选项,开了之后的Instance就不包含在free trial里面,立马去RDS关了这个选项,还有开一个CloudWatch任务,CloudWatch可以免费开10个任务,免费发1000封E-mail每月,设一个超过1美元就提醒的任务,应该就不会再被扣了。。。