Yeah,经过三个小时的奋战,博客终于上线了!这篇文章的目的是向你介绍如何实现在AMH面板下搭建node.js环境安装Ghost博客系统并与PHP环境共存。

虽说现在VPS也不贵,可一台VPS只装一个ghost博客真的是有点浪费资源,更何况我还打算用这台VPS跑wordpress和Typecho,这就要求VPS同时具备Node.js以及PHP运算解析的能力。好了,停止废话,来一起探索吧:

我的VPS信息:

  • VPS:Vultr
  • 操作系统版本:32位的CentOS 6
  • nginx版本:1.8.0
  • node版本:node-v0.10.40 (目前Ghost官方建议的版本)
  • Mysql版本:5.1.73
  • Ghost版本:v0.7.4 full (zh)

思路:

  • Ghost博客安装的一般过程:

    1. 安装Nginx (需要设置反向代理)
    2. 安装Mysql
    3. 安装Node.js环境
    4. 安装Ghost (需要修改config.js配置文件)
    5. 安装pm2
  • AMH 面板安装的一般过程:
    使用官方提供的一键安装脚本即可,本文中使用的AMH版本为AMH4.2
  • 原料/工具:虚拟专用服务器VPS,SSH工具

Ghost博客运行在nginx服务器上,而运行Node.js应用需要独占一个端口(默认2638),如果想实现通过某个域名直接访问到Ghost应用,就需要做反向代理端口转发。AMH面板自带了Nginx,Mysql,并且支持在面板上添加虚拟主机并绑定域名,非常方便,但绑定的域名默认访问的是80端口,因此依然需要修改conf文件实现端口转发。因此实现搭建node.js环境安装Ghost博客系统并与PHP环境共存这个目的,只要将Ghost博客安装在AMH创建好的网站目录下,并做好反代端口转发即可。

实现

Step 1: 安装AMH面板
  • 打开SSH工具,使用root用户登录服务器,执行一键安装AMH4.2脚本:
    wget http://amh.sh/file/AMH/4.2/amh.sh && chmod 775 amh.sh && ./amh.sh 2>&1 | tee amh.log

输入1回车,接着输入MySQL与AMH密码即进入安装流程,安装过程大约需10至20分钟(以服务器性能为准),最后如看到安装成功提示,说明系统已安装完成。
成功安装后有必要请删除日志文件:amh.log,如安装失败需协助安装请把错误日志反馈我们。
访问http://ip:8888 即可进入AMH web端管理,默认账号为admin。

记住服务器Nginx目录 : /usr/local/nginx

如能正常登陆,则说明安装成功。Step 1结束。

Step 2: 创建网站目录

登陆AMH面板后,前往虚拟主机》新增虚拟主机 按照提示填写网站信息:

Mkdir for the website

记住刚才创建的网站的根目录 /home/wwwroot/timecho.cn/web,备用。

Step 3: 为Ghost博客创建数据库

同样在AMH面板,Mysql》快速建库,按照提示填写数据库信息:

databese for ghost
记住数据库信息,后面在配置Ghost博客config.js里会用到。

Step 4: 安装Node.js

前期准备

  1. yum update 更新yum源
  2. yum groupinstall "Development Tools" 安装开发工具包
  3. yum install wget 安装wget下载工具

Node.js安装

这里根据Ghost官方的建议,我们安装v0.10.40版本

wget http://nodejs.org/dist/v0.10.40/node-v0.10.40.tar.gz

tar zxvf node-v0.10.40.tar.gz

cd node-v0.10.40

./configure

make && make install

耐心等待编译安装完成后,在SSH控制台中输入 node -v,如果能正确显示版本号,则说明node.js安装成功。

Step 5:配置反向代理文件

如果完成上一步,那么我们就可以开始配置反向代理,让代理从80端口指向2368端口
去到以下这个目录:

cd /usr/local/nginx/conf/vhost/

创建配置文件myself.conf

vi myself.conf

在文件中写入如下内容:

` server {

listen 80;
server_name timecho.cn; // timecho.cn 换成你想要使用的域名
location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_host;
    proxy_pass         http://127.0.0.1:2368;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}`

保存退出(VI的使用方法不在这里赘述,请自行学习)。

Step 6: 安装Ghost博客

去到刚才创建的网站根目录下:

cd /home/wwwroot/timecho.cn/web

下载Ghost v0.7.4 full (zh):

wget wget http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip

解压为ghost文件夹:

unzip Ghost-0.7.4-zh-full.zip -d ghost

cd ghost

这里要将config.example.js重命名为config.js再对其进行修改配置

mv config.example.js config.js

vi config.js

我们找到生产环境的配置:production

Ghost-0.7.4-zh-full这个版本默认集成 sqlite3 原生库,但博客篇幅比较大时,sqlite读写数据量太大时将会影响页面加载速度,我们可以根据个人需求改用mysql

如果选择使用sqlite则在config.js中只需要修改url地址

`production: {

url: 'http://timecho.cn', //这里是你自己VPS主机的域名,或者IP
mail: {},
database: {
    client: 'mysql'这里我选择使用mysql作为我博客的数据库
    connection: {
        host     : '127.0.0.1',
        user     : 'user', //mysql用户名
        password : 'password', //密码
        database : 'database', //之前创建的ghost数据库名称
        charset  : 'utf8'
    },
server: {
        host: '127.0.0.1',
        port: '2368'//若修改该端口记得在nginx中做相应改变
    }
} ` 

现在可以用命令npm start --production来试试启动生产模式的Ghost,启动后在浏览器输入自己VPS 主机的地址如果能看见Ghost。那么一切就成功了! Ctrl + C 中断掉开发者模式。

Step 7: 使用PM2让Ghost永远在线

只要我们一断开ssh,Ghost的进程就会被关闭,这里我们使用PM2来守护Ghost服务进程,并让其运行在生产模式production上

//!!首先进到ghost的安装目录

cd /home/wwwroot/timecho.cn/web

//安装pm2

npm install pm2 -g

让ghost以production模式运作,指定程序的入口index.js,并且此进程命名为ghost:

NODE_ENV=production pm2 start index.js --name "ghost"

开机启动

pm2 startup centos

pm2 save

ok,在浏览器可以看见自己的Ghost博客了,地址后面加上/ghost就可以访问后台,一开始需要注册个账户(保存在你的数据库里),这个用户是对于你主机上的Ghost博客管理人员而言的,用于登陆你的Ghost博客后台,而与公网上的其他用户没有关系。

部分内容摘自http://zyden.vicp.cc/centos-ghost-blog/

标签: Node.js, Ghost, VPS

分享到: