2月25日的时候原来的主机商再次莫名其妙suspend了我的账号,这次实在不能忍了,在学姐的建议下决定把整个网站迁移到亚马逊的EC2云主机服务上面。亚马逊对首次使用的用户提供一年期的免费使用权限,正好一年过后我的工作也基本该有着落了,届时可以考虑购买一个靠谱的收费主机。

整个迁移过程至3月10日为止,忙里偷闲地研究了两个星期,期间出现过各种问题(Nginx配置不能、FTP连接不上、甚至连SSH都连接不上云云),主机重装了3次、wordpress重装了N次才终于搞定。于是决定把整个过程详细记录下来,也可以作为有类似需求的朋友们的一点参考资料。

服务器配置:Linux(CentOS)+Apache+MySQL+PHP+vsftpd+WordPress

使用亚马逊EC2云主机

网上有很多手把手的教程,我参考的是这篇文章[1]。我选用的主机类型是Basic Amazon Linux AMI 2011.09 32bit。

使用密码登录主机

keypair文件各种麻烦,一会儿public key一会儿private key的,甚至有一次用PuTTY死活都登不上,导致不得不重装主机,于是决定变为使用密码登录的方式。

vi /etc/ssh/sshd_config
-->PasswordAuthentication yes
/sbin/service sshd restart
passwd ec2-user
安装MySQL
yum install mysql mysql-server
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start
mysql_secure_installation

设置root密码即可。

安装Apache
yum install httpd
chkconfig --levels 235 httpd on
/etc/init.d/httpd start
安装PHP
yum install php
/etc/init.d/httpd restart

然后可以写个phpinfo文件测试一下PHP服务是否运行正常。

将PHP与MySQL进行关联
yum search php
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring
/etc/init.d/httpd restart
安装WordPress
cd /.../.../...
wget http://wordpress.org/latest.zip
unzip latest.zip
rm -f latest.zip
chmod o+w wordpress
安装phpMyAdmin
Google一下phpMyAdmin的地址然后wget
unzip phpMyAdmin-3.4.10.1-english.zip
mv phpMyAdmin-3.4.10.1-english phpmyadmin
cp config.sample.inc.php config.inc.php
vi config.inc.php
-->$cfg['blowfish_secret'] = 'web'

然后就可以导入备份的MySQL文件了。

为Apache添加二级域名和重写支持
cd /etc/httpd/conf
vi httpd.conf
-->RewriteEngine on
-->RewriteMap lowercase int:tolower
-->RewriteMap vhost txt:/etc/httpd/conf/vhost.map
-->RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
-->RewriteCond ${vhost:%1} ^(/.*)$
-->RewriteRule ^/(.*)$ %1/$1
接着把所有的AllowOverride None都改成AllowOverride All
vi vhost.map
-->blog.atelier39.org /.../.../...
/etc/init.d/httpd restart
安装vsftpd
yum install vsftpd
useradd -d /.../.../... -s /sbin/nologin ftpusername
passwd ftpusername
chmod 777 /.../.../... -R (不改成777的话ftp工具无法上传,上传完成后再改回去)
service vsftpd start
chkconfig vsftpd on
vi /etc/vsftpd/vsftpd.conf
-->anonymous_enable=NO
service vsftpd restart
配置WordPress

这一步比较看RP,我通过FTP上传了备份的wp-content文件夹,还有我修改过的两个php文件,但是启用主题后进入日志页面会变成空白,其他页面都没问题。于是打开了wp-config.php的WP_DEBUG开关检查调试输出,发现提示无法找到mb_strimwidth函数,于是google之,通过这篇文章[5]提供的方法搞定了,即将header.php中的mb_strimwidth函数替换为substr即可。

最后在域名商那里把DNS的A记录映射到主机实例的Elastic IP就大功告成了。

鸣谢:
Lenville同学一直以来提供的主机空间
学姐的友情支持

参考资料:
[1] AMAZON EC2学习笔记(一)——EC2 INSTANCE的搭建
[2] 亚马逊免费云主机之六—如何免key pair而使用密码登陆Amazon EC2?
[3] CentOS 6.0 系统 LAMP(Apache+MySQL+PHP) 安装步骤
[4] Apache中通过配置http.conf绑定多个域名以及二级域名的方法
[5] Warning: mb_strimwidth() [function.mb-strimwidth]

» 转载请注明来源及链接:未来代码研究所

Related Posts:

  • No Related Posts

13 Responses to “亚马逊EC2云主机(CentOS)迁移手记”

  • Minghe says:

    国内教育网访问,图片显示不全。

  • HuangMinghe says:

    现在我的问题是这样的,我在ec2的/var/www/html/目录下建立两个wordpress博客,每一个博客都可以以这样的方式访问:IP/blog1/和IP/blog2/。 我怎么让域名指向这两个地址呢。细讲一下呗。

    • 暗影吉他手 says:

      见我上面的“为Apache添加二级域名和重写支持”,修改httpd.conf文件,然后在同一个目录下建立vhost.map文件,里面写上需要映射的域名和目录

  • RockU says:

    加链接呀

  • Dragoon Z says:

    其实可以试一试octopress的~

  • C says:

    很多时候命令行显示 没有那个目录啊!
    囧 怎么回事呢! 求解.

    [root@ip-10-161-91-16 ec2-user]# chkconfig –levels 235 mysqld on
    在 mysqld 服务中读取信息时出错:没有那个文件或目录
    [root@ip-10-161-91-16 ec2-user]# chkconfig –levels 235 mysql on
    在 mysql 服务中读取信息时出错:没有那个文件或目录
    [root@ip-10-161-91-16 ec2-user]# /etc/init.d/mysql start
    bash: /etc/init.d/mysql: 没有那个文件或目录
    [root@ip-10-161-91-16 ec2-user]#

Leave a Reply

World Line
Time Machine
Online Tools