原来一直放在香港的主机上,速度不错,没出篓子,还蛮稳定.
但是最近国内的各种云,闹腾的厉害,SAE,BAE,阿里云,盛大云...等等一堆的出现
难免让人各种心痒,所以把心一横,也刚好香港的主机马上要到期了,便搬出来体验下云.
其实也就是瞎折腾.现在分别记录几篇文章,也算是国内各种云的体验笔记吧.
一.导出原有wordpress数据
1.导出原有空间上的mysql数据库,用Phpmyadmin的导出功能,备份成一个sql文件
2.导出原有空间上的所有文件.当然最重要的是wp-content目录下的uploads,themes,还有plugins
如果wordpress本身有过修改的,请自行备份
二. SAE篇
一).
由于各种云,都不是实际意义上的虚拟主机,所以直接下载的Wordpress是无法安装的,需要对原安装文件动一下手术
比如SAE,它的应用目录是不允许上传文章里的文件的,得单独放在一个Storage中,所以就得修改原码
写这篇文章的时候,wordpress的最新版本是3.5.1,所以先从wordpress官方下载原版的文件
http://wordpress.org/download/ 解压缩到桌面上的一个文件夹中,取名wordpress
二).
给原文件动手术,这里比较长,想自己动手的,按照下面的去改.偷懒的,直接下载最后面附件中的文件
1.在wordpress根目录,新建一个文件,取名sae.php,输入以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
/**设置SAE应用里的Storage的Domain名(域名)**/
/**Set the domain name of storage belongs to your app. **/
define
(
'SAE_STORAGE'
,
wordpress
)
;
//请把这里的wordpress修改为你的Storage域名
//Please change "wordpress" to your own domain.
/**这里是设置文件上传的路径和文件路径的URL,不要更改**/
/**Here are the dir path & url path of the uploaded files,leave this, DO NOT Change.**/
define
(
'SAE_DIR'
,
'saestor://'
.
SAE_STORAGE
.
'/uploads'
)
;
define
(
'SAE_URL'
,
'http://'
.
$_SERVER
[
'HTTP_APPNAME'
]
.
'-'
.
SAE_STORAGE
.
'.stor.sinaapp.com/uploads'
)
;
|
2.新建一个 sae_app_wizard.xml 文件,输入以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<appwizard>
<introduction>
<name>
WordPress 3.5.1 for SAE
</name>
<description>
<![CDATA[
<p>
WordPress 3.5.1 ,修改自官方3.5.1 版本,多次测试,已完整适用于SAE。支持SVN安装主题、插件,在线编辑主题、插件功能等。
</p>
]
]
>
</description>
</introduction>
<platform>
<services>
<!-- 初始化应用中启用的服务,根据需要启用 -->
<service
name
=
"wordpress"
params
=
"public"
>
Storage
</service>
<!-- 例:初始化一个域名为:wordpress的Storage,域属性为“public”,更多参数配置请参考Storage的API文档 -->
<service>
Mysql
</service>
<!-- 例:初始化Mysql -->
</services>
</platform>
<code>
<!-- 初始化页面地址:即应用安装成功后跳转的地址,可以将应用初始化脚本或数据库导入脚本写在该文件中 -->
<initScript>
wp-admin/install.php
</initScript>
</code>
</appwizard>
|
3.复制一份wp-config-sample.php文件,并改名为wp-config.php文件,将其中的数据库连接部分改为以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/
/
*
*
MySQL
设置
-
具体信息来自您正在使用的主机
*
*
/
/
/** 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
)
;
/** 创建数据表时默认的文字编码 */
define
(
'DB_CHARSET'
,
'utf8'
)
;
/** 数据库整理类型。如不确定请勿更改 */
define
(
'DB_COLLATE'
,
''
)
;
/** 设置启用多数据库。这一项并非必须,共需要此功能的人使用,但是加了也无妨。**/
define
(
'WP_USE_MULTIPLE_DB'
,
true
)
;
|
4.修改 wp-includes/functions.php 文件,如下:
在require( ABSPATH . WPINC . '/option.php' );前面加上一句:
1
|
include
(
ABSPATH
.
'/sae.php'
)
;
//调用SAE的Storage文件域名设置 //for SAE
|
修改function wp_mkdir_p( $target ) {处:
把
1
2
3
4
5
6
7
8
9
10
11
|
$
wrapper
=
null
;
// strip the protocol
if
(
wp_is_stream
(
$
target
)
)
{
list
(
$
wrapper
,
$
target
)
=
explode
(
'://'
,
$
target
,
2
)
;
}
// from php.net/mkdir user contributed notes
$
target
=
str_replace
(
'//'
,
'/'
,
$
target
)
;
// put the wrapper back on the target
if
(
$
wrapper
!==
null
)
{
$
target
=
$
wrapper
.
'://'
.
$
target
;
}
|
修改为:
1
2
3
4
5
6
7
|
//for SAE begin
// from php.net/mkdir user contributed notes
if
(
substr
(
$
target
,
0
,
10
)
==
'saestor://'
)
{
return
true
;
}
$
target
=
str_replace
(
'//'
,
'/'
,
$
target
)
;
//for SAE end
|
在$basedir = $dir;上方添加下面两行:
1
2
3
4
|
// for SAE begin
$
dir
=
SAE_DIR
;
$
url
=
SAE_URL
;
//for SAE end
|
在:
1
2
|
/
*
*
*
Send
a
HTTP
header
to
limit
rendering
of
pages
to
same
origin
iframes
.
|
注释段之前添加:
1
2
3
4
5
6
7
8
|
// for SAE begin
if
(
!
function_exists
(
'utf8_encode'
)
)
{
function
utf8_encode
(
$
str
)
{
$
encoding_in
=
mb_detect_encoding
(
$
str
)
;
return
mb_convert_encoding
(
$
str
,
'UTF-8'
,
$
encoding_in
)
;
}
}
//for SAE end
|
保存(建议使用EmEditor等软件编辑).
5.修改 wp-admin/includes/file.php 文件
找到
1
2
3
4
|
// Set correct file permissions
$
stat
=
stat
(
dirname
(
$
new_file
)
)
;
$
perms
=
$
stat
[
'mode'
]
&
amp
;
0000666
;
@
chmod
(
$
new_file
,
$
perms
)
;
|
修改为
1
2
3
4
5
6
|
//for SAE begin
// Set correct file permissions
//$stat = stat( dirname( $new_file ));
//$perms = $stat['mode'] & 0000666;
//@ chmod( $new_file, $perms );
//for SAE end
|
找到
1
2
3
4
|
// Set correct file permissions
$
stat
=
stat
(
dirname
(
$
new_file
)
)
;
$
perms
=
$
stat
[
'mode'
]
&
0000666
;
@
chmod
(
$
new_file
,
$
perms
)
;
|
修改为
1
2
3
4
5
6
|
//for SAE begin
// Set correct file permissions
//$stat = stat( dirname( $new_file ));
//$perms = $stat['mode'] & 0000666;
//@ chmod( $new_file, $perms );
//for SAE end
|
保存文件.
6.把之前网站中备份的wp-plugins,wp-themes,两个文件夹,覆盖到 wp-content 目录.
7.把整个wordpress文件夹打包成wordpress.zip文件,备用.
8.结束?等等,在wp-content目录下,还有一个重要的文件夹 uploads ,包含也所有文章的文件和图片,这个另外单独放,不要打包进wordpress.zip文件.
三).
首先注册神马的,就不啰嗦了,http://sae.sina.com.cn,但是有一点SAE很挫的地方要注意的就是,务必实名认证,原因看下图
如果未实名,100云豆一天,注意,这只是应用的租金,.还不算其它一堆费用.所以,等着哭吧(博主尝试过,送的豆用完,还倒扣的欠了好多豆).
但是一实名,意味着每次发文章都得掂量下,小心各种查水表的,跨省的,请喝茶的....废话了.
四).
实名后马上建立应用吧,建空应用,不要使用应用商店的,一年最少200RMB的租金,那是给人傻钱多的人用的
5.在 代码管理 中建立一个SVN版本库,点上传代码包,选择第2步中打包的wordpress.zip文件
6.在 服务管理 中 Storage 新建一个domain,取名为wordpress
7.在 服务管理 中找到 mysql ,选择管理mysql,在打开的Phpmyadmin中,将之前导出的sql文件,导入到mysql数据库中.
8.还刻前面放在一边的uploads目录不?现在用到了.
打开Storage,再打开刚才建的wordpress这个domain,里面是不是有一个上传文件,还有一个客户端下载?
下载客户端吧,然后一步步安装,接着把整个uploads文件夹上传到Storage中,它的目录结构应该是这样的:
有没有另外的上传方法?有!请参考这篇文章 SAE Storage批量上传工具使用教程
9.打开你第1步注册应用的时候,填的应用域名(类似本站的 litonblog.sinaapp.com ),看你的博客是不是已经完全恢复了?没有?
1).是不是博客地址不对?解决方法 :
打开phpmyadmin,找到wp-options表,点浏览,修改其中的siteurl和home值为当前的应用域名.
2).伪静态不对?解决方法:
在代码管理中,找到编辑代码,打开后如下图
双击config.yaml,修改为:(其中的appname,还有version请根据你的实际情况修改)
1
2
3
4
5
|
appname
:
litonblog
version
:
1
handle
:
-
rewrite
:
if
(
!
is_file
(
)
&&
!
is_dir
(
)
)
goto
"index.php?%{QUERY_STRING}"
-
rewrite
:
if
(
in_header
[
"host"
]
~
"litonblog.sinaapp.com"
&&
path
~
"^(.*)$"
)
goto
"http://liton.me$1 [L,QSA,R=301]"
|
3).还有其它的不对?请留言.
后续1:关于SAE中代码的管理维护,建议使用TortoiseSVN,具体的使用方法,请Google.另外,后面还会介绍BAE等其它平台,还有很多开源代码,都会用到这个软件
后续2:由于 SAE 禁止了读写操作,所以安装主题和插件,无法向以前那样,直接在后台进行上传或者远程安装.必须要通过 SVN 的方式上传.
先禁用插件,然后用SVN,把新版本的插件上传到到代码的对应目录,再登陆wordpress后台,重新启用插件.
后续3:SAE的Storage中文件和图片的访问速度,有点不敢恭维,所以后续会写文章,把整个Storage中的upload文件全部放在另外的云空间中,比如最近很火热的 又拍云
后续4:嗯,待续...