开始从mt迁移手里的几个blog到Linode,还是VPS带劲,虽然配置起来非常痛苦,随便一个小问题就要搞半天,而且我现在的技术不一定能安全平稳的管理好手里这几个流量几乎可以忽略不计的小朋友的blog,嘛嘛,这才叫折腾啊!我偷偷的搬,小朋友们不知道……
准备工作:
源主机是(mt)的(gs) gift版,目标主机是Linode 512,跑着Ubuntu 10.04 64bit。首先Getting Started,然后setup locale,接着Set up a LAMP Server,建好新的数据库。域名全部都在godaddy,到godaddy把dns都改成Linode的,一般几个小时就好,保险点等第二天全域的dns都缓冲完了,到Linode后台添加域名,全部master。(mt)的FTP和database都有自己内部的地址,域名转走不影响备份数据。
A. 源机:
wordpress的blog就两部分,备份出所有文件,备份出数据库。(mt)的FTP地址类似这种s#####.gridserver.com,#是数字。database的内部访问地址类似internal-db.s#####.gridserver.com。
A.1 备份文件,
ssh到(mt)主机,cd到html目录下,执行,
$ tar -czvf findingneverland.tar.gz *
用FileZilla连接到主机,把生成的文件拖下来。
A.2 导出数据库,
ssh到(mt)主机,执行,
$ mysqldump -h internal-db.s#####.gridserver.com -u db##### -p db#####_wpdb > mt_wpdb.sql
-h:后面跟database地址
-u:(mt)默认给的权限最大那个user
db#####_wpdb:(mt)的数据库都是这个形式的
mt_wpdb.sql:导出的文件名
同样,FileZilla拖下来。
B. 目标机:
B.1 上传文件,
用FileZilla,新建连接,类型选择SFTP,然后把压缩文件上传到public_html下。ssh到主机,cd到public_html,执行
$ tar -xzvf findingneverland.tar.gz
用新建的数据库信息修改wp-config.php文件中的参数,记得把DB_HOST改回localhost,(mt)的数据库是有地址的。
vi新建一个.htaccess文件,添加下面的内容,
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
这步也可以不做,wordpress会自动创建和填写,然后执行,
$ a2enmod rewrite $ /etc/init.d/apache2 restart
以上打开了apache的rewrite模块,填写了wordpress要用的.htaccess文件,接着要修改权限,cd到public_html上级目录,执行,
$ chown -R www-data:www-data public_html $ chown root:root public_html/wp-config.php
这步把public_html下所有文件的权限给了www-data,这个www-data是apache2的用户名。但为了安全起见,仍然把wp-config.php保留给root。这样一来,包括Permalinks功能(rewrite),后台安装删除插件主题和自动更新都能正常使用了(权限问题)。
B.2 导入数据库,
把mt_wpdb.sql上传到主机,位置随意,
$ mysql -u root -p -e "source mt_wpdb.sql" linode_wpdb
mysqldump的导入功能我没有试成功,还好上面这个命令能用。(mt)的gift版本数据库只能开2个,所以小朋友们的blog都挤在一个数据库里,现在Linode里可以轻松的分开了。每个数据库用drop清理一下,就是不知道为啥mysql没有批量drop的命令。
最后的清理工作,删掉数据库文件mt_wpdb.sql,网站文件压缩包findingneverland.tag.gz,把wp-config.php权限改成644。其余文件和文件夹权限随意,如果更新有问题就改成755或者775,千万别设成777,不安全。
大功告成,完全无损,也没乱码,全程ssh搞定。
10-08-19补充:打开wordpress后台,进入设置Settings – 媒体Media,上传文件Uploading Files – 默认上传路径Store uploads in this folder,把原先(mt)下的一串/nfs/c##/h##/mnt/#####/domains/findingneverland.org/html/wp-content/uploads改成默认值wp-content/uploads。否则使用媒体库添加文件会出错。
