在重新提笔开始写blog时,阿福着实为选择什么样的平台头疼了一番,最终还是被Ghost给迷上了。这款明明可以靠脸吃饭的博客程序貌似也实力非凡的。虽然目前各种功能和Wordpress相比还是简陋不堪,但写作体验会让你欲罢不能的。当然,这不是今天的重点,下面就开始记录自己建设Ghost博客的基本历程吧,如果能帮助到有需要的朋友就更好了。
我的Ghost博客地址,https://colyn.im
我家Ghost的配置信息如下:
VPS:Bandwagon Host
操作系统:Cent OS 7 X64
Nginx版本:1.10.1
Node.js版本:V4.4.7(Ghost官方推荐版本,2016.7.25)
Mysql版本:MariaDB 5.5.50
Ghost版本:0.9.0
前期准备
yum update //更新yum源
yum groupinstall "Development Tools" //安装开发工具包
yum install wget //安装wget下载工具
开始安装Nginx
首先编辑下Nginx的仓储地址,新建nginx.repo文件:
vi /etc/yum.repos.d/nginx.repo //在文件中写入以下内容:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
保存退出(按Esc结束编辑,Shift + ;键, 输入wq,回车)
现在可以使用yum下载并安装Nginx了
sudo yum install nginx -y
sudo service nginx start //开启nginx
sudo chkconfig nginx on //设置nginx为开机启动
此时应该已经将Nginx安装好了,在浏览器中输入VPS的IP或者域名就可以看见:“Welcome to Nginx!”
使用Nginx配置反向代理
如果完成上一步并且在浏览器中看见Nginx的welcome,那么我们就可以开始配置反向代理,让代理从80端口指向2368端口
去到以下这个目录:
cd /etc/nginx/conf.d
在此目录下新建一个.conf文件,文件名随意
vi myhost.conf
在文件中写入以下内容:
server {
listen 80;
server_name 自己的域名(如:colyn.im www.colyn.im);
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;
}
}
将server_name换成自己的域名,或者ip,保存退出,并重启nginx:
service nginx restart
现在你就可以使用域名访问Ghost啦。
安装配置MariaDB
Ghost v0.9.0 集成了sqlite3,不喜欢用MariaDB的话可以忽略此步骤
首先编辑下MariaDB的仓储地址,新建MariaDB.repo文件:
vi /etc/yum.repos.d/MariaDB.repo //在文件中写入以下内容:
[mariabd]
name=MariaDB
baseurl=http://yum.mariadb.org/5.5.50/centos7-amd64/
gpgkey=http://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
保存退出(按Esc结束编辑,Shift + ;键, 输入wq,回车)
安装软件包
yum install -y MariaDB-server MariaDB-client
安装完后启动服务
service mysql start
yum install mysql mysql-server
service mysql start //启动mysql
chkconfig mysql on //设置为开机启动
mysql_secure_installation 配置mysql 如下:
Set root password? [Y/n] //设置root密码 -- 根据个人需求
anonymous users? [Y/n] //删除匿名用户 -- y
Disallow root login remotely? [Y/n] //禁止root用户远程登录 --n
Remove test database and access to it? [Y/n] //删除默认的 test 数据库 --y
Reload privilege tables now? [Y/n] //是否马上应用最新的设置 --y
为了支持中文,我们还要修改MariaDB的字符支持,编辑MariaDB的配置文件:
vi /etc/my.cnf
在对应的位置加上对应的内容:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
新建一个ghost专用的MariaDB用户和专用的database:
mysql -u root -p; //用root用户登录MariaDB
create database ghost; //创建ghost数据库
GRANT ALL PRIVILEGES ON ghost.* To 'ghost'@'%' IDENTIFIED BY '密码';
//创建ghost database 和 用户名为ghost的用户
//%代表能被所有地址访问
至此已经完成MariaDB的配置,基本可以进入本次折腾的正题了。
安装Node.js
这里根据Ghost官方的建议,我们安装v4.4.7版本
wget http://nodejs.org/dist/v4.4.7/node-v4.4.7.tar.gz
tar zxvf node-v4.4.7.tar.gz
cd node-v4.4.7
./configure
make && make install
安装Ghost
我们将ghost安装在/var/www下
cd /var/www //没有就创建一个哦
wget https://ghost.org/zip/ghost-0.9.0.zip
unzip Ghost-0.9.0.zip -d ghost //解压为ghost文件夹
cd ghost
这里要将config.example.js重命名为config.js再对其进行修改配置
mv config.example.js config.js
vi config.js
我们找到生产环境的配置:production
如果选择使用sqlite则在config.js中只需要修改url地址
production: {
url: 'http://colyn.im', //这里是你自己VPS主机的域名,或者IP
mail: {},
database: {
client: 'mysql'这里我选择使用mysql作为我博客的数据库
connection: {
host : '127.0.0.1',
user : 'ghost', //mysql用户名
password : '', //密码
database : 'ghost', //之前创建的ghost数据库名称
charset : 'utf8'
},
server: {
host: '127.0.0.1',
port: '2368'//若修改该端口记得在nginx中做相应改变
}
}
为了确保Ghsot可以安全运行,请首先运行命令npm install --production,确保二进制依赖包是针对 Node.js v4 LTS 版本编译的。
现在可以用命令npm start --production 来试试启动生产模式的Ghost,启动后在浏览器输入自己VPS 主机的地址如果能看见Ghost。那么一切就成功了!//Ctrl + C 中断掉生产模式。
使用PM2让Ghost永远在线
现在只要我们一断开ssh,Ghost的进程就会被关闭,为了解决这个问题,我们可以使用PM2来守护Ghost服务进程,并让其运行在生产模式production上。
//!!首先进到ghost的安装目录
npm install pm2 -g //安装pm2
//让ghost以production模式运作,指定程序的入口index.js,并且此进程命名为ghost
NODE_ENV=production pm2 start index.js --name "ghost"
pm2 startup centos //开机启动
pm2 save //进程守护做完.
后续调教Ghsot时需要重启博客的命令是:pm2 restart ghost
现在已经可以通过浏览器访问自己的Ghost博客了,这是建立博客的一大步,却也是折腾之路的一小步,前途漫漫,我们可以共同探索。
PS1:在域名后面加上/ghost就可以进入博客后台了。
PS2:本文重点参考了zhiyi的文章http://zyden.vicp.cc/centos-ghost-blog/ 在此表示感谢。