偶然的机会看到Ghost这个平台,竟然感到十分喜欢(因为简单2333),所以决定在自己的VPS部署一个这样的博客。
在Ghost之前,VPS上面就已经安装了Apache,并且帮朋友部署了一个他的主页在上面(对应他自己的域名)。
我希望最终的结果是,服务器可以根据域名来返回不同的访问结果,也就是说:
- 当用我的域名访问服务器时 --> 返回我自己的博客首页
- 当用朋友的域名访问服务器时 --> 返回他自己的主页
因此这次工作的大概步骤就是:
- 安装Ghost
- 配置Apache的VirtualHost
- 让Ghost保持运行
安装Ghost
1.node安装
Ghost需要node的支持,而Ghost官方推荐的node版本是0.10.40(具体可以参考这里),
首先到node的官方网站找到对应版本的压缩包https://nodejs.org/dist/v0.10.40/node-v0.10.40-linux-x64.tar.gz
将其下载到VPS本地:
wget https://nodejs.org/dist/v0.10.40/node-v0.10.40-linux-x64.tar.gz
接着使用tar命令将其解压:
tar -xvf node-v0.10.40-linux-x64.tar.gz
解压出来的包就已经是编译好的了,在bin目录下可以看到node和npm两个可执行文件
修改用户目录下的.bash_profile,添加以下一行:
export PATH=$PATH:/path/to/node/bin #这里要将目录改成node对应的安装目录
运行让新配置生效
. ~/.bash_profile
这时候运行:
node -v
如果成功输出版本号,则node的安装就基本上成功了
Ghost在低版本的(<2.0)的npm下可能会出现安装失败的问题,因此我们将npm更新到最新:
npm install -g npm
等待更新完成之后,下面我们就开始正式安装Ghost啦
2.Ghost安装
Ghost的安装比较简单,基本上就是按照官方的教程一步步来。
如果系统还没安装curl或者unzip的话要事先安装好。
首先是下载:
curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
接着将其解压到/var/www/ghost目录下(官方推荐的目录):
unzip -uo ghost.zip -d /var/www/ghost
接着cd进入安装目录并执行安装:
cd /var/www/ghost && npm install --production
如果没有报错,那么恭喜你,你的Ghsot已经安装完成啦!
3. 配置和启动Ghost
这个时候,就可以启动Ghost服务了:
npm start --production
Ghost默认是监听2368端口,如果是在本地机器部署的话,这个时候就可以通过浏览器访问:
- http://localhost:2368 (博客首页)
- http://localhost:2368/ghost (博客设置页面)
不过,在VPS部署Ghost是希望能通过域名来访问,而这个时候,无论是通过域名还是直接通过ip地址,都无法访问Ghost
所以接下来,我们先 ctrl + c 把Ghost给停掉, 然后对Ghost安装目录下的 config.js 进行小小的配置
需要注意的是:第一次运行Ghost的时候这个文件会自动生成,如果尚未启动过Ghost,可以从 config.example.js 复制一份:
cp config.example.js config.js
然后将 production{} 里面的 url 字段的值改成我们自己的公开域名,然后保存退出
production: {
url: 'http://your.domain',
...
...
}
如果需要邮件服务,可以参考官方教程进行配置,其他的字段一般不需要再进行更改
配置Apache的VirtualHost
首先进入Apache的安装目录:
cd /etc/httpd/
新建目录用来存放配置文件:
mkdir vhost-test.d
通过 vi 新建并编辑配置文件:
vi vhost-test.d/vhost-test.conf
输入内容:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName your.domain
ProxyPreserveHost on
ProxyPass / http://127.0.0.1:2368/
</VirtualHost>
<VirtualHost *:80>
ServerName other.domain
ProxyPreserveHost off
DocumentRoot /var/www/html/
</VirtualHost>
上述配置就是告诉Apache,
当通过 your.domain 访问时,将请求移交给监听于2368的Ghost处理,
当通过 other.domain 访问时,访问 DocumentRoot 下的文件
接下来将该配置文件包含在 httpd.conf 中:
vi /etc/httpd/conf/httpd.conf
在最后加入一行然后保存退出:
Include vhost-test.d/*.conf
重启Apache:
service httpd restart
这个时候重新进入Ghost安装目录:
cd /var/www/ghost
启动ghost:
npm start --production
这个时候就可以通过自己的域名访问ghost啦,而且用朋友的域名访问的依旧是他自己的主页。
我们可以进入 http://<your.domain>/ghost 来进行博客的一些基本设置,第一次进入时要设置登录邮箱和密码,之后就可以用这个账户来管理你自己的博客啦
3. 让Ghost保持运行
虽然Ghost已经可以被成功访问,但是当你关闭终端或者断掉和远程VPS的的ssh连接时,ghost都会被停止,这并不是我们想看到的,所以我们需要找一个方法让Ghost保持运行
官方教程里面提到了几个方式,这里我选择的是 pm2
首先 ctrl + c 停止Ghost服务
在安装 pm2 之前,确保机器已经安装 git ,否则安装过程可能会报错:
yum install git
然后进入ghost安装目录,安装 pm2:
npm install pm2 -g
接着启动Ghost:
NODE_ENV=production pm2 start index.js --name "Ghost"
这个时候,可以看到 pm2 的输出:
>┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬──────────────┬──────────┐
>│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
>├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼──────────────┼──────────┤
>│ Ghost │ 0 │ fork │ 20805 │ online │ 3246 │ 25h │ 125.996 MB │ disabled │
>└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴──────────────┴──────────┘
说明Ghost已经成功运起来了。这个时候即使你关闭终端或者断开和VPS的远程连接,ghost都不会被停止。
接下来你还可以使用下列命令来停止、重启Ghost:
pm2 stop Ghost
pm2 retart Ghost
pm2 reload Ghost
好了,到这里基本上Ghost的部署就完成了。享受之~
参考链接:
http://support.ghost.org/getting-started/
http://www.thegeekstuff.com/2011/07/apache-virtual-host/
https://www.iceoa.com/centos7-apache/