本文介绍如何将本地WordPress代码通过代码版本管理SVN,上传到新浪云平台。主要步骤有:搭建开发环境,创建应用,从SVN检出项目,修改好本地代码,提交,安装WordPress。
0. 写在前面
我个人博客Spark & Shine用的是香港主机91,服务态度是挺好的,但服务器不稳定性,一直再找更好的主机。各种云(新浪云、阿里云、百度云、谷歌云、亚马逊云、Ucloud)眼花缭乱,也就是通过这次简单了解,了解到新浪云。看到一篇博文说,新浪云赠送2500云豆(成功注册500 + 实名验证2500),对于流量不多的网站,一年也用不完。我手头恰有两个闲置的域名,想着就拿新浪云作主机吧。
新浪云提供一些现成的应用,比如WordPress,一键安装确实方便,但我很快发现,在线修改代码实在太不方便,半天找不开代码编辑器。再加上,新浪云没有英文版的WordPress,有两个选择:其一,可以更改自带的WordPress;其二,直接下载WordPress英文版安装。个人倾向于后者。还有,我想用OSQA搭建一个网站,OSQA用Python语言写的,在新浪云创建Python应用,里面什么都没有。这些因素促使我去折腾如何在本地调试好代码,再通过代码版本管理软件上传到新浪云平台。
PS:在新浪云安装WordPress方法。在新浪云平台SAE首页搜索WordPress,直接安装wordpress应用,在弹出对话框填入二级域名,即可完成安装。可能是我网速不好,有时候不能成功安装,访问zhilitea.sinaapp.com会提示“建立数据库连接时出错”(搜了下,解决办法是到后台修复mysql的wp_options
)。
1. 安装开发环境
1.1 Eclipse + subclipse
新浪云官方手册《代码部署手册》介绍了TortoiseSVN客户端(只支持Windows,不过smartSVN同时支持3个平台)使用,Notepad++集成SVN插件、EditPlus、UltraEdit Studio的部署。我是直接安装Eclipse+subclipse,方便跨平台。
在Eclipse官网下载Eclipse,解压即可。打开Eclipse,Help --> Eclipse MarketPlace,在搜索框subclipse
,按提示安装即可。
1.2 PHP Development Tools (PDT)
- 为eclipse安装PHP Development Tools (PDT)插件,Help --> Install new software,在
Work with
填入http://download.eclipse.org/tools/pdt/updates/latest/ - 显示eclipse的Package explorer窗口,Window --> Show View --> Other... --> Java --> Package Explorer
- 解决eclipse中文乱码,Windows --> Preferences... --> General --> Workspace,右侧
Text file encoding
选择UTF-8
[1]
2. 本地与远程同步
在新浪云平台创建一个应用,用SVN将远程的代码同步到本地,在本地文件夹,添加或修改源代码,修改完后再提交到服务器。
2.1 创建应用
创建一个应用,并在在管理应用 --> 服务管理下,初始化Mysql, Memcache, Storage(为后续安装WordPress做准备):
- MySQL --> 管理MySQL
- Memcache --> 初始化Memcache,设置MC大小(1~200M,决定了云豆的开销),刚开始设1M就好了
- Storage --> 新建domain,名称填入wordpress
2.2 从SVN检出项目
Ctrl+N
打开新建窗口,选择SVN下的Checkout Projects from SVN --> Create a new repository location, 在Url
填入SVN仓库地址(如https://svn.sinaapp.com/zhilitea),在弹出对话框填入输入用户名(SAE安全邮箱)和密码(SAE安全密码)。
- SVN仓库地址 https://svn.sinaapp.com/YOUR_APP_NAME
- SVN用户名 SAE安全邮箱
- SVN密码 SAE安全密码
Check Out As
选择Check out as a project in the workspace
,点击finish
就可以了。代码就存放在eclipse的workspace/zhilitea/1
(1是代码版本,默认版本)。
3. 安装WordPress
在这里下载WordPress中文版,将wordpress-4.1-zh_CN.zip
解压到workspace/zhilitea/1/
目录下(注:会覆盖之前之前的1/index.php
)。 回到eclipse,在左侧Package Explorer右击项目 --> Team --> Commit,提交代码。 (其实提交之前,需要做一些修改,以下描述包括走的弯路)
在浏览器访问https://svn.sinaapp.com/zhilitea/wp-admin/install.php,需要填入如下与数据库相关的信息:
- 数据库名
- 数据库用户名
- 数据库密码
- 数据库主机
- 数据表前缀(table prefix,特别是当您要在一个数据库中安装多个WordPress时)
郁闷的是,进入PHPMyAdmin,压根就没地方创建数据库、用户名、密码的地方。查了下官方文档,新浪云基于MySQL作了一些扩展,SaeMySQL数据库,定义了如下常量:
用 户 名 : SAE_MYSQL_USER
密 码 : SAE_MYSQL_PASS
主库域名 : SAE_MYSQL_HOST_M
从库域名 : SAE_MYSQL_HOST_S
端 口 : SAE_MYSQL_PORT
数据库名 : SAE_MYSQL_DB
然而,我在WordPress填入上述的数据库信息,还是提示数据库信息有误。
通过手动创建wp-config.php
来解决这个问题,具体做法是这样:拷贝一份wp-config-sample.php
为wp-config.php
,修改wp-config.php
里面与数据库有关的代码,相关代码如下:
/** WordPress 数据库的名称 */
define('DB_NAME', SAE_MYSQL_DB);
/** MySQL 数据库用户名 */
define('DB_USER', SAE_MYSQL_USER);
/** MySQL 数据库密码 */
define('DB_PASSWORD', SAE_MYSQL_PASS);
/** MySQL 主机 */
define('DB_HOST', SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT);
将改动的代码提交,在浏览器访问https://svn.sinaapp.com/zhilitea/wp-admin/install.php,出现的是WordPress设置页面,填入站点标题、用户名、密码、邮箱,点击安装WordPress,大功告成。现在可以妥妥地访问:http://zhilitea.sinaapp.com/。
4. 绑定独立域名
在新浪云应用管理下的应用首页,右侧有个独立域名绑定,输入域名,确定后会得到如下信息:
请把zhilitea.com CNAME到jp.cname.saebbs.com以完成域名绑定。 同时把0afc113f11.zhilitea.com通过A记录解析到103.9.185.155以完成域名身份认证
zhilitea.com CNAME
到jp.cname.saebbs.com
,提示不能创建CNAME
(因为已经存在),然后我将A记录映射改成: @ --> 36.51.255.136
(用ip138.com查了下jp.cname.saebbs.com的ip地址)。等上一段时间,http://zhilitea.com/可以正常访问了。
值得注意的是,上述的做法还不彻底,因为网站所有页面还是基于SAE提供的二级域名。进入到新浪云应用管理 --> PHPMyAdmin,打开wp-options
表,将siteurl
和home
改成独立域名,举例如下:
- siteurl http://zhilitea.sinaapp.com 改成 http://zhilitea.com/
- home http://zhilitea.sinaapp.com 改成 http://zhilitea.com/
值得注意的是,尽管独立域名可以正常访问,但不能成功上传媒体文件(比如上传背景图像),因为uploads
没有写权限,需要将WordPress的uploads
映射到新浪云的Storage
,详情操作见博文《在新浪云搭建WordPress博客:解决uploads目录权限问题》。
参考资料:
[1] 博文《解决Eclipse中文乱码》