CentOS Ghost安装教程(PM2+Nginx)

前天有个朋友联系我说安装Ghost的时候遇到了问题(Nginx),想让我帮忙看看——我没配过啊,但是这正好是一次机会,玩玩除了PHP以外的东西。

好了,废话不多说,于是昨天我就尝试了一把,踩了一些坑,这里做个总结性发言,顺便表扬一下Ngnix反代大法。

看完本文,基本上你会知道Ghost的搭建,PM2的使用,Nginx的配置。

什么是Ghost?

Ghost是一个基于Node.js的博客程序。

Ghost 官方推荐使用 Node 0.10.x 版本,同时支持 Node 0.12.x 和 4.2.x 版本。

安装Ghost

首先先需要安装Node.js,安装Node.js教程太多,这里不再赘述。过去写过一篇编译安装Node.js可供参考(版本号自己改:http://codesky.me/archives/centos-nodejs-install.wind

接下来下载Ghost,除了官网下载之外,这里推荐一下:http://www.ghostchina.com/download/

我下载了中文标准版,上传到服务器之后解压缩:unzip -uo ghost.zip -d ghost

接下来切换到Ghost目录:cd /你的 Ghost 解压目录

npm install --production来进行安装。

Ghost默认选用的是SQLite,如果你需要搭配其他数据库(比如MySQL),见此参考链接:在CentOS 系统上搭建安装 Ghost博客。如果你是新手,不建议对MySQL/Nginx等做过多修改(避免Boom),可以之后在自己的虚拟机之类的地方折腾积累经验,毕竟博客重要的是写文,所以那篇……看看就好。

这里顺便友情提示,MySQL的日志文件查看:less /var/log/mysqld.log

如果你的MySQL无法启动,第一时间看看日志文件。

全部完成之后npm start,注意,此时启动是使用的默认的development环境,我们上线时,肯定用的是production,development可供调试和二次开发等。

默认会运行在:127.0.0.1:2368中,通过127.0.0.1:2368/ghost可以访问后台(初始化博客)

配置Ghost

如果测试无误,也就是说我们安装完毕了,下一步就要开始配置Ghost了,其实也没什么好改的,在production里把url修改为你需要绑定的域名或IP即可(此处似乎与后台传送门相对应,因此需要修改),其他可以不用动。

之后我们把Node改为production环境

echo "export NODE_ENV=production" >> ~/.profile
source ~/.profile

配置PM2

如果你还没有安装过,那么接下来先安装PM2:npm install -g pm2

此处可见教程:Node.js PM2 愉快部署Node.js

选择PM2是因为其方便快捷,你也可以选用其他服务,在本文参考链接中将给出。

于是pm2 start index.js -n ghost

配置Nginx

如果你还没有安装过,可以参考:CentOS yum配置LNMP服务器(Nginx+PHP+MySQL)

在CentOS中,尤其注意需要配置iptables打开80端口,否则外部无法访问。(当然高版本的CentOS7貌似是没有iptables的?如果是Ubuntu,我记得也是没有这个的)

配置Nginx反向代理,使其通过80端口访问,日后我们可以绑定多个端口,过去也有博文:CentOS Nginx反向代理 + Apache配置

由于这里我们不用配置Apache,所以步骤没有那么多:
vi /etc/nginx/conf.d/default.conf

server_name一行后加入(大致可以参考上文):

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }

基本上就变成了:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

当然,如果我们需要配置多个子目录,也很简单:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:3000;
    }

    location /ghostblog {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

虽然我们不懂Nginx,不过这里很简单就能看出来,做反向代理还是很简单的,这样可以节约对外映射的端口数,也更加友好——试想一下别人看到你莫名其妙端口号的表情。(由于我的VPS是配置过PHP的,通过这种方法也能够让PHP和Node程序共用端口——其实是反向代理,非常爽)如果你的Node或者其他程序还在不断的占用你的端口们,请快点用Nginx解脱你的对外端口吧(Apache亦可,不过性能Nginx更好)。

配置完成,重启Nginx:/etc/init.d/nginx restart

参考资料

MySQL安装:

CentOS yum配置LNMP服务器(Nginx+PHP+MySQL)

CentOS 编译安装MySQL5.6.17

PM2:
Keep Ghost Running with pm2

其他:

Ghost部署与安装全教程

标签: centos, 命令, 安装, node.js

仅有一条评论

  1. 拜读了,好文!

添加新评论