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 条评论