AMH面板下搭建node.js环境安装Ghost博客系统并与PHP环境共存
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博客安装的一般过程:
- 安装Nginx (需要设置反向代理)
- 安装Mysql
- 安装Node.js环境
- 安装Ghost (需要修改config.js配置文件)
- 安装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面板后,前往虚拟主机》新增虚拟主机 按照提示填写网站信息:
记住刚才创建的网站的根目录 /home/wwwroot/timecho.cn/web,备用。
Step 3: 为Ghost博客创建数据库
同样在AMH面板,Mysql》快速建库,按照提示填写数据库信息:
记住数据库信息,后面在配置Ghost博客config.js里会用到。
Step 4: 安装Node.js
前期准备
yum update
更新yum源yum groupinstall "Development Tools"
安装开发工具包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博客后台,而与公网上的其他用户没有关系。