Mar 31

Heroku是支持语言最多的云平台之一,官方没有公开提示可以支持PHP语言,但是有大牛已经试验过了,可以在这个云平台上安装Wordpress,过程稍稍有点麻烦,但是Heroku提供5Mb的数据库,考虑到云平台的安全性,而且可以绑定域名,所以用来写写博客还是不错的选择。下面就将具体的步骤记录下来,以备不时之需。

(1).在Heroku注册账号
Heroku的官方网站是https://heroku.com/,注册过程很简单,在这里就不详细记述了,建议使用国外的邮箱注册,国内的邮箱可能收不到验证邮件。

(2).安装heroku toolbelt
登陆https://toolbelt.herokuapp.com/,有三种平台Mac OSX、Windows、Debian/Ubuntu可供选择,由于我使用的是XP系统,所以我就下载Windows平台下的heroku toolbelt。安装完成后可以一并将Rails和Git安装了。

(3).下载Wordpress软件和PostgreSQL for WordPress插件
到http://wordpress.org/下载最新的软件包和PostgreSQL for WordPress (PG4WP)并解压,将pg4wp文件夹放到wordpress/wp-content/文件夹下,然后再将pg4wp文件夹里面的db.php文件复制到wordpress/wp-content/文件夹下。因为Wordpress需要MYSQL数据库,但是Heroku提供的是PostgreSQL数据库,所以需要使用PostgreSQL for WordPress (PG4WP)插件。复制配置文件wordpress/wp-config-sample.php文件为wordpress/wp-config.php,并修改数据库账号、密码等信息。将wp-config.php中的代码

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');

/** MySQL database username */
define('DB_USER', 'username_here');

/** MySQL database password */
define('DB_PASSWORD', 'password_here');

/** MySQL hostname */
define('DB_HOST', 'localhost');

修改为

// ** MySQL settings - You can get this info from your web host ** //
$db = parse_url($_ENV["DATABASE_URL"]);

/** The name of the database for WordPress */
define('DB_NAME', trim($db["path"],'/'));

/** MySQL database username */
define('DB_USER', $db["user"]);

/** MySQL database password */
define('DB_PASSWORD', $db["pass"]);

/** MySQL hostname */
define('DB_HOST', $db["host"]);

修改完成后保存退出。

(4).生成public key
进入wordpress文件夹,在DOS命令行下输入命令生成public key。

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/adam/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/adam/.ssh/id_rsa.
Your public key has been saved in /Users/adam/.ssh/id_rsa.pub.
The key fingerprint is:
a6:88:0a:0b:74:90:c6:e9:d5:49:d6:e3:04:d5:6c:3e [email protected]

如果以前没有生成public key,只需要默认下一步就可以了,如果以前有现成的可以不生成。

(5).登陆Heroku账号
在DOS命令行下输入命令:

heroku login
Enter your Heroku credentials.
Email: [email protected]
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /Users/adam/.ssh/id_rsa.pub

输入账号和密码登陆后,会将在前面的步骤中生成的public key上传到Heroku中。
如果没有上传成功可以手动添加,命令为:

heroku keys:add
Uploading ssh public key /Users/adam/.ssh/id_rsa.pub

删除public key的命令为:

heroku keys:remove [email protected]
Key [email protected] removed.

查看public key的命令为:

heroku keys
=== 1 key for [email protected]
ssh-dss AAAAB8NzaC...DVj3R4Ww== [email protected]

(6).新建Heroku Apps账户
Heroku平台支持三种类型:Aspen、Bamboo和Cedar。其中Aspen、Bamboo只支持Ruby,而且操作系统不同。而Cedar则比较新,支持PHP,所以我们需要选用Cedar平台。

在DOS命令下输入命令:

heroku create --stack cedar

这是会生成一个随机的Heroku Apps账户,如果你需要生成自己的喜欢的账号就需要使用-app参数,具体命令如下:

heroku create --stack cedar -app yourappsname

这是生成的账号的地址为http://****.herokuapp.com/,如果选择是Aspen、Bamboo,则会生成http://****.heroku.com/的地址。

(7).上传Wordpress源文件
DOS命令下切换到wordpress源代码所在的地址,一次输入以下的命令:

git init
git add .
git commit -m "init"

然后将源文件推送到Heroku服务器,使用如下的命令:

git push heroku master

(8).完成Wordpress的安装
按照Wordpress正常的安装流程完成安装。

(9).绑定域名
这一步还是需要在DOS命令下完成。绑定域名的命令如下:

heroku domains:add www.example.com
Added www.example.com as a custom domain name to myapp.heroku.com

删除一定绑定的域名的命令如下:

heroku domains:remove www.example.com
Removed www.example.com as a custom domain name to myapp.heroku.com

如果需要将所有绑定的域名一次性全部删除咋可以使用下面的命令:

heroku domains:clear
Removed all domain names for myapp.heroku.com

如果要绑定裸域名,这需要在DNS解析服务器上使用A记录,Heroku提供了三个可以使用的ip可供绑定:

75.101.163.44
75.101.145.87
174.129.212.2

如果不需要绑定裸域名而绑定二级域名的话,使用CNAME记录就可以了,只需要将www.example.com指向myapp.herokuapp.com就可以了。

最后提醒一下,Heroku不能在线安装插件和皮肤,所以需要事先将需要安装的皮肤和插件到放到指定的文件夹里面,然后推送安装。如果需要更新Wordpress,也需要下载最新的Wordpress最新的源代码然后再推送到Heroku服务器。

Feb 11

开始建立这个博客的时候因为com域名已经被注册了,所以我就将其余的几个顶级国际域名一起注册了,但是觉得闲置起来也不好就在后台都绑定了。在使用中发现只有主域名使用起来是正常的,备用的域名直接是跳转的,感觉起来很不爽,后来Google了一下就发现了这个解决方法。做SEO的人说一个网站绑定多域名容易被K,由于这个博客是我个人使用的,一开始就没有考虑要做的很大,所以这方面的负面影响还是可以忽略的。

编辑根目录下的 wp-config.php 文件,添加以下代码:

$home = 'http://'.$_SERVER['HTTP_HOST'];
$siteurl = 'http://'.$_SERVER['HTTP_HOST'];
define('WP_HOME', $home);
define('WP_SITEURL', $siteurl);

PHP 中的 $_SERVER[‘HTTP_HOST’] 用于获得来路域名。这样,就能根据来路为 WP_HOME 和 WP_SITEURL 变量赋值,实现 WordPress 多域名绑定。

为防止域名改变而造成图片不可用,必须在控制面板的“设置(Options)–杂项(Misc)”里将“文件的完整 URL 地址”设为 “wp-content/uploads”(与“默认上传路径”参数相同)。

Dec 26

Delete-Revision插件本来是用来删除重复的文章,但是这个启用这个插件后会在模板的下方自动插入“WordPress Plugins – CleverPlugins.com”这样的一个链接,感觉很不舒服。

本来你发布Wordpress插件是无可厚非的,但是你在没有任何提示的情况下就在主页插入这样一个链接,破坏了整体的美观性,太不厚道了,最讨厌这样鬼鬼祟祟的行为。

最开始我怀疑是博客被攻破后插入木马了,找了好久没有找到,最后查看了一下启用的插件就发现它了,果断停用并删除。我这个博客主要是自己写写,最开始的时候我什么都不懂的时候我只启用一个防止垃圾评论的插件还是不是照样运行,所以多一个少一个影响不是很大的。最后说一句,这个插件好像是国产的。