最新消息:蔓草札记的微信公众号开通了,赶紧在微信通讯录公众号中搜索“蔓草札记”关注下吧 :)

在Windows和Heroku上搭建Ghost博客

博客经验 xhhjin 5332浏览 1评论

Ghost是在著名的众筹网站KickStarter上众筹成功后,开发的基于Node.js的开源博客平台,其目标就是尽量简化并专注于博客,直指现在流行但已日趋臃肿的Wordpress。2013年10月14日,Ghost在面向6000名KickStater支持者推出三周后,终于面向公众开放了。

Ghost比原来的Wordpress有着先天的优势,因为它是一个全新的平台,可以使用优秀的Node.js平台而不会有任何历史遗留问题。相比较,Wordpress发展到现在,在代码架构、具体实现、设计、决策过程到开源协作模式都已经变得过时而臃肿,加上大量第三方插件对特定实现的依赖,开发效率变得极低,任何大改动都是牵一发而动全身。

在Heroku上搭建Ghost博客-00

我是在Ghost 0.3.3版本发布后不久注意到这个博客平台的,当时就想着在Heroku上搭建一个玩玩,但鉴于Ghost不是很成熟,并且官网还提供了一个月的试用,也就作罢了。不过试用后,确实有耳目一新的感觉。现在试用到期了,Ghost版本也更新到0.4.2了,就想再鼓捣一个可以接着玩的地方。

这个是我搭建在Heroku上的博客,大家可以体验下:

Heroku :http://mancao.herokuapp.com/
绑定域名:http://ghost.xuhehuan.com/

在Heroku上搭建Ghost博客,可以首先在本地搭建好,然后修改再部署到Heroku上,下面就按照这个流程一步步说明。

一、在Windows上搭建Ghost博客

1、首先打开网页http://nodejs.org,点击页面中的‘INSTALL’按钮,将会下载一个‘.msi’文件下载,下载完成后点击这个msi文件来安装Node 和npm,直到屏幕上显示你已经成功安装Node.js;

2、在https://ghost.org/download/上点击‘Download Ghost’下载最新的Ghost版本(该页面已被强,请自备梯子或下载我备份在百度网盘的0.4.1版本),然后解压Ghost到指定位置,如G:ghost;

3、打开cmd命令行窗口,切换到Ghost所在文件夹,然后在命令行依次输入下面两条命令:

npm –registry http://registry.cnpmjs.org info underscore
npm install –production

一切顺利的话,你会看到类似下面的情况:

在Heroku上搭建Ghost博客-01

注:npm所定义的软件源有出现在GFW的列表中,第一行命令就是使用国内npm镜像来防止安装这些包失败,不然在经历漫长的等待后可能会看到失败的信息。

4、接下来就启动Ghost了, 输入命令,

npm start

在Heroku上搭建Ghost博客-02

然后在浏览器中输入下面地址就可以看到已经搭建好的Ghost。要停止浏览,就切换到命令行窗口,按Ctrl+C,输入‘y’终止批处理操作。

127.0.0.1:2368

在Heroku上搭建Ghost博客-03

至此,在Windows上搭建Ghost的部署就全部结束了,还是挺easy的,下面就是修改过和部署到Heroku上了。

二、修改Ghost博客为部署到Heroku做准备

由于Heroku使用的数据库是PostgreSQL而不是SQLite3,所以在完成本地搭建后,我们还需将这个Ghost博客通过下面几个步骤进行修改。

1、打开Ghost根目录下的package.json,查找”sqlite3″:这一行,并将其修改为

"pg": "latest",

2、在Ghost根目录下新建一个名为Procfile的文件,里面输入以下内容,让Heroku可以启动Ghost;

web: node index.js --production

这两处的修改和下面第三部分中对config.js文件的修改,大家可以参考我修改好的示例文件,放在百度网盘(点击下载)。

三、将Ghost博客部署到Heroku

修改完本地的Ghost后,就要准备将博客部署到Heroku上了。

1、注册Heroku,https://id.heroku.com/login,速度慢的话就把代理挂起来,这里假设大家都用过Heroku了,还没有注册或使用过Heroku的,先去Google或百度看些简单的教程吧;

2、打开https://toolbelt.heroku.com/,点击‘Heroku Toolbelt for Windows’来下载和安装Heroku Toolbelt,这个是实现在命令行窗口下登录和管理Heroku;

3、打开http://git-scm.com/,点击‘Download for Windows’,下载Windows版本的git并安装;

4、打开CMD命令行窗口,然后输入下面命令,按照提示输入你的用户名和密码登录上heroku,然后切换到刚才的Ghost目录下;

heroku login

在Heroku上搭建Ghost博客-04

5、将Ghsot目录初始化成一个git仓库,依次输入命令:

git init
git add .
git commit -m "Upload all Ghost files"

6、用命令创建一个新的Heroku APP

heroku create

或者用下面命令关联一个已经创建好的APP,里面红色的project要换成已创建的具体的APP名字

git remote add heroku git@heroku.com:project.git

然后用下面命令可以看当前目录的git关联属性,也就是你的Ghost博客要上传的地方

git remote -v

我的输入后是下面这个样子,里面的mancao对应的是我的APP的名字。

在Heroku上搭建Ghost博客-05

7、输入命令为Heroku APP增加PostgreSQL数据库

heroku addons:add heroku-postgresql:dev

这条命令完成后会输出一条类似“Attached as HEROKU_POSTGRESQL_JADE_URL”的信息,然后你需要根据JADE的具体内容来输入命令,可以参考下面图像;

heroku pg:promote HEROKU_POSTGRESQL_JADE

在Heroku上搭建Ghost博客-06

8、接下来打开Ghost目录下的config.js文件:

(1)修改里面的

url: ‘http://my-ghost-blog.com’,

为你实际的博客地址,如我的是绑定域名的

url: ‘http://ghost.xuhehuan.com’,

(2)修改里面的

host: '127.0.0.1',
port: '2368'

host: '0.0.0.0',
port: process.env.PORT

(3)修改里面的

database: {

client: ‘sqlite3’,

connection: {

filename: path.join(__dirname, ‘/content/data/ghost.db’)

},

debug: false

},

database: {

client: ‘postgres’,

connection: {

host: process.env.POSTGRES_HOST,

user: process.env.POSTGRES_USER,

password: process.env.POSTGRES_PASSWORD,

database: process.env.POSTGRES_DATABASE,

port: ‘5432’

},

debug: false

},

保存,关闭文件。

9、设置数据库信息。登录Heroku的网页,找到所用的APP,然后点击Add-ons中所用到的数据库,

在Heroku上搭建Ghost博客-07

两次单击后可以看到数据库的配置信息

在Heroku上搭建Ghost博客-08

10、依次在命令行窗口设置上图看到的各个数据信息,命令中的host等红色信息都要换成图中后面对应的具体信息;

heroku config:set POSTGRES_HOST=host
heroku config:set POSTGRES_USER=user
heroku config:set POSTGRES_PASSWORD=password
heroku config:set POSTGRES_DATABASE=database

11、将代码部署到Heroku;

git add .
git commit -m "Committing all ghost files"
git push heroku master

如果一切顺利,这时你就可以通过访问Heroku的APP地址来访问你的Ghost博客了。

在Heroku上搭建Ghost博客-09

可能碰到的错误:

如果你在运行‘git push heroku master’时碰到了如下的错误:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

这通常是由于在初始化登录Heroku时,ssh key没有放到服务器上,可以通过下面命令来改正这个问题:

add ~/.ssh/id_rsa.pub

里面~的路径要修改成Windows系统里面对应的实际路径,通常是打开cmd窗口后的默认路径,如:C:\Documents and Settings\xhh>。

后记:

1、在Heroku上实验,使用Ghost0.4.1可以正常运行,Ghost0.4.2无法正常工作;

2、Heroku和Nodejitsu提供的Node.js主机与Ghost并不兼容。它们可以工作,但会删除你的文件,所以你上传的图片和数据库的内容都会消失;Heroku支持MySQL数据库,你可以使用它来弥补这个问题,但你仍然会丢失一些上传的图片。


欢迎转载,转载请注明出处:蔓草札记 » 在Windows和Heroku上搭建Ghost博客

♥ 喜欢 0 赞赏
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 貌似是Node.js版本的问题,新的 Ghost 也可以放到Heroku
    mRNA9年前 (2016-02-06)回复