Ghost是在著名的众筹网站KickStarter上众筹成功后,开发的基于Node.js的开源博客平台,其目标就是尽量简化并专注于博客,直指现在流行但已日趋臃肿的Wordpress。2013年10月14日,Ghost在面向6000名KickStater支持者推出三周后,终于面向公众开放了。
Ghost比原来的Wordpress有着先天的优势,因为它是一个全新的平台,可以使用优秀的Node.js平台而不会有任何历史遗留问题。相比较,Wordpress发展到现在,在代码架构、具体实现、设计、决策过程到开源协作模式都已经变得过时而臃肿,加上大量第三方插件对特定实现的依赖,开发效率变得极低,任何大改动都是牵一发而动全身。
我是在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
一切顺利的话,你会看到类似下面的情况:
注:npm所定义的软件源有出现在GFW的列表中,第一行命令就是使用国内npm镜像来防止安装这些包失败,不然在经历漫长的等待后可能会看到失败的信息。
4、接下来就启动Ghost了, 输入命令,
npm start
然后在浏览器中输入下面地址就可以看到已经搭建好的Ghost。要停止浏览,就切换到命令行窗口,按Ctrl+C,输入‘y’终止批处理操作。
127.0.0.1:2368
至此,在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
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的名字。
7、输入命令为Heroku APP增加PostgreSQL数据库
heroku addons:add heroku-postgresql:dev
这条命令完成后会输出一条类似“Attached as HEROKU_POSTGRESQL_JADE_URL”的信息,然后你需要根据JADE的具体内容来输入命令,可以参考下面图像;
heroku pg:promote HEROKU_POSTGRESQL_JADE
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中所用到的数据库,
两次单击后可以看到数据库的配置信息
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博客了。
可能碰到的错误:
如果你在运行‘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博客