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死活都登不上,导致不得不重装主机,于是决定变为使用密码登录的方式。
-->PasswordAuthentication yes
/sbin/service sshd restart
passwd ec2-user
安装MySQL
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start
mysql_secure_installation
设置root密码即可。
安装Apache
chkconfig --levels 235 httpd on
/etc/init.d/httpd start
安装PHP
/etc/init.d/httpd restart
然后可以写个phpinfo文件测试一下PHP服务是否运行正常。
将PHP与MySQL进行关联
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
wget http://wordpress.org/latest.zip
unzip latest.zip
rm -f latest.zip
chmod o+w wordpress
安装phpMyAdmin
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添加二级域名和重写支持
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
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
-->pam_service_name=vsftpd
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]
» 转载请注明来源及链接:未来代码研究所
国内教育网访问,图片显示不全。
是显示慢还是404?
原来只是当天晚上原因,现在显示正常,速度还不错。
Thanks!
现在我的问题是这样的,我在ec2的/var/www/html/目录下建立两个wordpress博客,每一个博客都可以以这样的方式访问:IP/blog1/和IP/blog2/。 我怎么让域名指向这两个地址呢。细讲一下呗。
见我上面的“为Apache添加二级域名和重写支持”,修改httpd.conf文件,然后在同一个目录下建立vhost.map文件,里面写上需要映射的域名和目录
加链接呀
友链么?好啊
对呀。
其实可以试一试octopress的~
很多时候命令行显示 没有那个目录啊!
囧 怎么回事呢! 求解.
[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]#
请确认你的mysql已经正常安装