收到了DotCloud的邀请,于是将自己使用wordpress建立的blog迁移到DotCloud。记录一下整个的过程,同样的方法也可以用于在DotCloud上搭建一个新的wordpress,因为前半部分过程基本是一份中文版的DotCloud安装wordpress教程,若需要看原文请访问 http://docs.dotcloud.com/tutorials/wordpress/
首先请确认你的python版本至少是2.6版的,如果不是2.6版本,请更新你的python。
$ python -V
根据情况选择一下一种方式安装DotCloud客户端:
确认DotCloud的命令行程序安装成功,提示你输入API Key。登陆DotCloud网站,你的账户下的settings里有你的API Key。
$ dotcloud //这时会提醒你输入你的API Key
下载wordpress
你可以选择下载最新的wordpress的中文版或者英文版,并解压至一文件夹。
$ wget -O wordpress.zip http://wpcn.googlecode.com/files/WordPress.v3.1.Incl.Simp.Chinese.Pack.v1-wpcng.zip //下载wordpress 3.1中文版
$ unzip wordpress.zip
在DotCloud上部署服务
首先需要建立一个新项目的空间命名,在该空间命名下部署多个不同类型的服务,也可以部署多个相同类型的服务。空间命名的唯一性要求该项目的空间命名不能和DotCloud上其他用户建立的命名重复。
/***
建立一个新项目的空间命名foo(请将“foo”替换成你喜欢的名称,如果和其他户用项目名称重复会有提示)
***/
$ dotcloud create foo
/***
然后我们为foo项目下部署一些不同的类型的服务来支持我们的wordpress的运行
因为wordpress应用通常是基于PHP和MySQL,所以让DotCloud为我们的wordpress提供这两项服务支持
***/
$ dotcloud deploy -t php foo.blog //提供PHP支持
/***
部署成功后,你可以通过http://blog.foo.dotcloud.com来访问,并看见phpinfo输出的信息
***/
$ dotcloud deploy -t mysql foo.mysql //提供MySQL支持
$ dotcloud list //察看DotCloud上我们的所有项目及服务
$ dotcloud info foo.mysql //服务具体信息,尤其是MySQL的具体信息,我们在配置wordpress会需要用到
cluster: wolverine
config:
mysql_password: L2T3yuH}
deployment: sanfran
name: sanfran.db
ports:
- name: mysql
url: mysql://root:L2T3yuH}@mysql.foo.dotcloud.com:7255
- name: ssh
url: ssh://dotcloud@mysql.foo.dotcloud.com:7256
type: mysql
修改wordpress配置
将wordpress文件夹里的wp-config-sample.php并另存为wp-config.php,并打开文件,根据上面提供的mysql的具体信息(注意:如果不愿意使用DotCloud生成默认数据库,请登录MySQL,新建一个数据库),修改以下内容:
/** The name of the database for WordPress */
define('DB_NAME', 'mysql'); //若你新建一个数据库,这里填写你新建数据库名称,而非”mysql“,推荐方法是:新建一个数据库来供wordpress使用;
/** 该数据库的用户名 */
define('DB_USER', 'root');
/** 该用户的密码 */
define('DB_PASSWORD', 'L2T3yuH}');
/** 数据库的主机名(一般情况下不需要改动本项) */
define('DB_HOST', 'mysql.foo.dotcloud.com:7255'); //请注意这里填写你mysql服务的具体地址和端口,并非原文注释的不做修改。
打开 https://api.wordpress.org/secret-key/1.1/salt/ 将获取的值覆盖文件里的以下内容
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
设置永久链接
因为DotCloud是基于nginx,官方的资料上提供了让nginx支持wordpress的永久链接的配置文件。在wordpress文件夹下新建一个nginx.conf文件,输入以下内容:
try_files $uri $uri/ /index.php;
制作postinstall脚本
使用DotCloud客户端push代码,会试本地的代码与服务器上的代码作比较,并完全覆盖已存在的代码,并删除服务器上多余的代码。可以看作似乎在DotaCloud上建立一个与本地完全一样的镜像。所以DotCloud提供了一种方法来防止覆盖通过wordpress安装的插件、主题及一些上传的文件(其实就是所有在wp-content里的文件)。
在wordpress下新建一个postinstall文件并输入以下内容
#!/bin/sh
if [ -d ~/data/wp-content ]
then
rm -rf ~/current/wp-content
else
mkdir -p ~/data
mv ~/current/wp-content ~/data/wp-content
fi
ln -s ~/data/wp-content ~/current/wp-content
让postinstall脚本可执行
$ chmod +a postinstall
将wordpress代码push到DotCloud
$ cd wordpress
$ dotcloud push foo.blog . //将wordpress文件下的所有内容传送至DotCloud并覆盖原有的内容
至此基本的wordpress已经部署完毕了,打开http://blog.foo.dotcloud.com便可以开始设置你的wordpress并开始使用了。
而DotCloud建议用户通过下载新版本wordpress进行升级,解压后覆盖掉wp-config.php, postinstall and nginx.conf,将代码push到服务器上完成升级。
接下来开始数据迁移,需要对原有的blog数据进行备份,并向新的blog导入备份。
使用BackWPup备份wordpress
BackWPup是一个优秀的wordpress插件,提供了较为全面的备份服务。BackWPup使用方法。
当然你也可以使用更为熟悉的插件或者其他方式备份wordpress。
导入wordpress数据库备份
导入备份的方式有几种:
- 推荐方式:通过phpMyAdmin导入sql文件;
- 通过mysql命令行导入sql文件;
- 通过wordpress自身的xml文件导入;
通过phpMyAdmin导入数据
配置phpMyAdmin并将其运行在DotCloud,可以方便以后对数据库进行管理,推荐使用该方法导入数据,同时也因为可以突破DotCloud现在针对免费用户的2M上传限制。
通过上面的方法在DotCloud上为phpMyAdmin建立一个PHP服务foo.phpmyadmin。
$ dotcloud deploy -t php foo.phpmyadmin
配置phpMyAdmin
在 phpMyAdmin网站 下载最新的phpMyAdmin,解压后根据之前为wordpress建立的mysql服务修改配置。
phpMyAdmin版本高于3.3.x可以直接找到phpmyadmin文件夹里的/libraries/config.default.php文件并进行编辑(如果是版本低于3.3.x请将config.default.php打开,以config.php命名另存在phpmyadmin文件里进行编辑),使其可以对在DotCloud建立的数据库进行管理:
/**找到$cfg['Servers'][$i]['host'],$cfg['Servers'][$i]['user'],$cfg['Servers'][$i]['password']进行修改,并确认 $cfg['Servers'][$i]['auth_type'] = 'cookie';
**/
$cfg['Servers'][$i]['host'] = 'mysql.foo.dotcloud.com:7255'; //我们建立的mysql的地址及端口
$cfg['Servers'][$i]['user'] = 'root'; //登录数据库的用户名
$cfg['Servers'][$i]['password'] = 'L2T3yuH}'; //用户密码
$cfg['Servers'][$i]['auth_type'] = 'cookie'; //因为通过网络进行访问,请确认该值为cookie。
因为DotCloud的对通过PHP上传文件的大小限制为2M(可能收费用户没限制,我现在使用的是免费服务),所以为方便我们导入大于2M的备份文件,还需要继续修改phpMyAdmin的配置文件(具体原因请访问 让phpMyAdmin导入超过上传限制的备份文件 )。在phpmyadmin下建立一个文件夹backup,继续修改phpmyadmin文件夹里的/libraries/config.default.php文件:
$cfg['UploadDir'] = 'backup'; //赋值为phpmyadmin下刚才建立的文件夹
将phpMyAdmin代码push到DotCloud:
$ cd phpmyadmin
$ dotcloud push foo.phpmyadmin .
接下来我们可以访问http://phpmyadmin.foo.dotcloud.com登录phpMyAdmin对数据库进行管理,选中mysql数据库,导入我们的wordpress数据库备份文件。
如果我们的备份文件大于2M,请将备份文件放至backup文件夹里,确认备份为sql文件而非压缩文件或者其他格式。
再次将phpMyAdmin的代码push到DotCloud,打开phpMyAdmin的导入选项,会发现里面多了一个“网站服务器上传文件夹”选项,选中我们刚才导入的备份文件,导入文件,完成后我们便完成了数据导入过程。
通过mysql命令行导入sql文件
$ mysql -h mysql.foo.dotcloud.com -P7255 -u root -p
Enter password://数据密码
mysql>use mysql //选择到mysql数据库
mysql>source /home/jeremy/wordpress.sql //导入sql文件,请根据你的备份文件修改文件路径及名字
通过XML导入
就是通过wordpress自带的工具栏里的导入进行导入,比较简单,不作详细介绍。
完成wordpress数据库升级
完成数据导入以后,请重新登陆wordpress以便使其进行数据库数据升级。
其他
以上便是整个将wordpress搬家到DotCloud云服务上的整个过程。当然或者你还有别的需要,比如你需要在DotCloud上绑定你现有的域名:
/**
将下面的地址换成你自己的域名,并根据提示修改你的CNAME记录。
**/
$ dotcloud alias add foo.blog http://5.yupana.net