BAE3.0部署WordPress(未完结)

老婆突发奇想,需要一个blog。于是我拍拍胸脯说,包在我身上!


其实在BAE上搭建WordPress并不像想象的那么容易。通过我的经验,可能会遇到以下问题:

WordPress安装、添加插件、上传图片都是放在代码库中的。但是,BAE作为一个云平台,并不会托管程序生成的文件(包括文件的写入、图片附件等的上传)。如果上传附件,在下一次提交代码时,很有可能会丢失。即使不提交代码,过一段时间也可能丢失上传的文件。此外,主题的更换、插件的增加也会面临同样的问题。


解决上述问题的方案包括:

1、在本地安装一个PHP+Apache+MySQL环境,将WordPress安装到本地,修改好主题、插件等,再上传至BAE中。以后若要修改主题、添加插件,也需要现在本地环境弄好后再提交。

2、修改WordPress源代码,将上传的文件(包括附件、图片等)上传到BOS中。


下面,我将解决步骤可能遇到的问题及其解决方案记录下来。

1、本地安装Wamp。此前一直用Appserv,但是AppServe很久都没有更新了。后来发现Wamp功能更为强大。官网地址:http://www.wampserver.com/en/。在安装是,可能80端口被其他程序暂用。若不能正常开启apache,这里可以帮助你:http://www.kangry.net/blog/?type=article&article_id=371

2、创建百度云账号,在应用引擎中添加部署(我选择的时SVN代码管理器)。在扩展服务中开启Mysql服务(一个账号只能有一个免费的MySQL)。在BOS中创建一个Bucket,权限为公共读。为了以后迁移方便,我会给其绑定一个域名。

3、安装SVN。官网下载地址:https://tortoisesvn.net/index.zh.html。选择一个特定的文件夹(比如:D:/BAE),右键,checkout。输入下方的SVN地址。然后输入BAE的用户名和密码,能够将百度云中的代码下载到本地中。

4、下载WordPress。当前WordPress版本为4.4中文版:https://cn.wordpress.org/。将下载的包解压到第3步的文件夹D:/BAE中。建议不要外一层的wordpress文件夹了。

5、编辑wamp的alias,添加一个wordpress指向D:/BAE文件夹。你可能会遇到错误:You don't have permission to access /wordpress/ on this server。解决方法是,修改httpd.conf文件,将

<Directory />
   AllowOverride none
   Require all denied
</Directory>

修改为:

<Directory "c:/path-to-your-alias-folder...">
   AllowOverride none
   Require all granted
</Directory>

重启wamp即可。

6、安装WordPress。在浏览器中输入http://localhost/wordpress,按照提示安装即可。

7、在本地安装好你需要的插件,选择主题。

8、修改可能出现的问题。

(1)我遇到了中文博客、中文分类、中文标签的404错误。网上的一些方法均不能解决问题。修改wp-includes/class-wp.php文件的parse_request方法中的以下两行,解决问题。其他不变。发现默认的模板竟然不支持分类查询,真是醉了~~

$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? urldecode($_SERVER['PATH_INFO']) : '';    //这里添加了一个urldecode过程
list( $pathinfo ) = explode( '?', $pathinfo );
$pathinfo = str_replace( "%", "%25", $pathinfo );

list( $req_uri ) = explode( '?', urldecode($_SERVER['REQUEST_URI']) );                //这里添加了一个urldecode过程

(2)修改上传大小限制。在根目录下的.htaccess中添加以下代码:

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300

修改后的内容如下所示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300


未完待续。。。

0 条评论

    发表评论

    电子邮件地址不会被公开。 必填项已用 * 标注