安装 Ghost 并配置 Nginx 反向代理(Cent OS 7)

本文要解决的问题:在服务器上安装 Ghost 博客软件,并通过 Web Server 设置反向代理的方式进行发布,涉及的系统环境和工具有:

  • CentOS 7.1
  • Ghost 0.7
  • Nginx

1 安装

1.1安装 Nginx

更新 CentOS 软件,安装开发工具包、Vim 和 wget:

yum update -y
yum groupinstall -y "Development Tools"
yum install -y vim wget

首先我们安装Nginx启动HTTP服务器,安装成功后输入你的网站IP就可以看到“Welcome to Nginx!”。

编辑Nginx的仓储地址。输入:
vim /etc/yum.repos.d/nginx.repo
接着按键盘上的 “S” 便于用vim编辑内容,把下面的内容粘贴进去。
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
编辑完成,按下 Esc,输入 :wq! 回车退出。 现在,用 yum 自动下载安装。

sudo yum install nginx -y
sudo service nginx start
sudo chkconfig nginx on

NOTE: 在 CentOS 7 执行上述操作时会出现提示。应该使用 /bin/systemctl start nginx.service和systemctl enable nginx.service 来开启Nginx服务器。

1.2 安装 Node.js

方法一: 下载源代码后执行编译和安装。缺点:编译程序往往要消耗很多时间。

从官方仓库获得最新的 Node.js 源代码包:
wget http://nodejs.org/dist/node-latest.tar.gz
tar -xzf node-latest.tar.gz
cd node-v*
编译和安装 Node.js:
./configure
make
sudo make install
完成后我们可以通过 node -v 和 npm -v 命令来检查 Node.js 的版本。

方法二:从网络仓库下载已经编译完成的安装包。

首先添加仓库:
curl -sL https://rpm.nodesource.com/setup | bash -
直接下载安装 Nodejs:
yum install -y nodejs
分别用 node -v 和 npm -v 检查 Node.js 的版本。两种方法的最终效果都一样哟!

安装 Ghost

创建一个文件夹,用来放置网站文件和 Ghost 博客程序。
sudo mkdir -p /var/www/
cd /var/www/
从官方网站下载最新版本的 Ghost(ghost-latest.zip):
wget https://ghost.org/zip/ghost-latest.zip
解压:
unzip -d ghost ghost-latest.zip
进入 Ghost 安装目录:
cd /var/www/ghost
执行安装命令,安装 Ghost:
sudo npm install --production
安装完成后用 npm start 命令启动开发者模式下的 Ghost,用于检查有没有安装成功。 成功了,Ghost会运行在本地局域网内 127.0.0.1:2368。如果是在电脑上安装的,用浏览器访问此地址即可预览 Ghost。

2 配置

2.1 以生产模式运行 Ghost

但是要部署,我们不能让其运行在开发模式。需要让其运行在生产模式,且当其运行进程退出时自动重启。因此我们可以使用强大的进程守护程序“pm2”达到此目的。(也可以使用Forever)
• 进入到刚才的Ghost安装目录,执行下面的命令安装PM2:
sudo npm install pm2 -g
• 我们要设置环境变量为“production”生产模式!“index.js”是程序启动的入口。最后给这个pm2的进程命名为"ghost" 于是,执行下面的命令:
NODE_ENV=production pm2 start index.js --name "ghost"
• 让PM2知道在开机后自动运行我们的网站:
pm2 startup centos
pm2 save
• 提示: pm2 kill ghost (清除所有ghost进程)
pm2 <start|stop|restart> ghost (启动|停止|重启ghost进程)
pm2 startup <centos|ubuntu|amazon> (让pm2能够在这3个系统上自动启动)
至此,pm2 已经可以守护 Ghost 博客永远在线。

2.2配置 Nginx 的反向代理

前面,如果你已经安装好了 Nginx。 新建一个 Nginx 代理配置文件,并将代理指向到本地的Ghost端口:
sudo vim /etc/nginx/conf.d/ghost.conf
先按下 S 键,再将如下内容拷贝到到新文件中。注意将 My-Domain-Name.com 改成你要设置的网址。在编辑完成后,按下 Esc,输入 :wq! 回车退出。
server {
listen 80;
server_name My-Ghost-Blog.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
}
重新启动 Nginx 服务器,让设置生效。(这里针对 CentOS 7 使用 sudo /bin/systemctl restart nginx.service)
sudo service nginx restart
PS: 关键的工作都已做完了! 你的博客程序能够跟随操作系统自动运行了。