ghost博客部署

概述

ghost是基于nodejs构建的开源博客平台
网上有很多部署ghost博客的文章,包括ghost中文网,部署的方法很多,但是我觉得最方便的就是用ghost_cli去部署ghost,ghost-cli是1.0版本之后出现的新工具。简单来说就是它能够帮助我们更加方便地安装,启动,升级和管理我们的ghost-blog.
下面就来介绍这种部署的方式

系统要求

下面是官方要求的系统和系统环境

  • Ubuntu 16.04
  • MySQL
  • NGINX (minimum of 1.9.5 for SSL)
  • Systemd
  • Node v6 installed via NodeSource
  • At least 1GB memory (swap can be used)
  • A non-root user for running ghost commands

安装部署

因为官方推荐使用ubuntu16.04,所以我的系统也是ubunut16.04的,大家最好也和我一样

用户设置

为了安全建议使用非root的用户去管理关于ghost博客的东西,所以推荐要新建一个账户,专门用来管理ghost
sudo adduser ghost
把这个用户添加到sudo用户组中,使它具有使用sudo的权限
sudo usermod -aG sudo ghost
以ghost用户身份登录
su - ghost

更新一下系统

sudo apt update && sudo apt upgrade

安装nginx

sudo apt-get install nginx

打开HTTP / HTTPS的防火墙

查看一下ufw是不是被激活

1
2
3
4
5
6
7
8
[email protected]:/etc/init.d$ sudo service ufw status
● ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2017-09-16 15:24:12 CST; 29min ago
Main PID: 337 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/ufw.service

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

如果被激活,那么要确保防火墙允许http/https的连接

1
2
3
[email protected]:/etc/init.d$ sudo ufw allow 'Nginx Full'
Rules updated
Rules updated (v6)

安装mysql

sudo apt-get install mysql-server

安装nodejs

因为ghost博客是用nodejs写的,所以要使用安装nodejs
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash
sudo apt-get install -y nodejs

安装Ghost-CLI

因为身处中国,所以要切换一下nodejs的源,不然下载会很慢
npm config set registry https://registry.npm.taobao.org
之后安装ghost-cli
sudo npm i -g ghost-cli

1
2
3
4
5
6
[email protected]:/etc/init.d$ sudo npm i -g ghost-cli
[sudo] password for ghost:
npm WARN deprecated [email protected]: Use uuid module instead
/usr/bin/ghost -> /usr/lib/node_modules/ghost-cli/bin/ghost
/usr/lib
└── [email protected]

安装ghost

首先新建一个站点文件夹
sudo mkdir -p /var/www/ghost
把这个文件夹的所有者改为ghost
sudo chown ghost:ghost /var/www/ghost/
切换到这个文件夹中
cd /var/www/ghost/
安装ghost
ghost install

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[email protected]:/var/www/ghost$ ghost install
✔ Checking system Node.js version
✔ Checking current folder permissions
✔ Checking operating system
✔ Checking MySQL is installed
✔ Checking for latest Ghost version
✔ Setting up install directory
✔ Downloading and installing Ghost v1.8.6
✔ Finishing install process
? Enter your blog URL: http://localhost:2368
? Enter your MySQL hostname: localhost
? Enter your MySQL username: root
? Enter your MySQL password: [hidden]
? Enter your Ghost database name: ghost
✔ Configuring Ghost
✔ Setting up instance
Running sudo command: chown -R ghost:ghost /var/www/ghost/content
[sudo] password for ghost:
✔ Setting up "ghost" system user
? Do you wish to set up Nginx? No
ℹ Setting up Nginx [skipped]
Task ssl depends on the 'nginx' stage, which was skipped.
ℹ Setting up SSL [skipped]
? Do you wish to set up "ghost" mysql user? No
ℹ Setting up "ghost" mysql user [skipped]
? Do you wish to set up Systemd? Yes
✔ Creating systemd service file at /var/www/ghost/system/files/ghost_localhost.service
Running sudo command: ln -sf /var/www/ghost/system/files/ghost_localhost.service /lib/systemd/system/ghost_localhost.service
Running sudo command: systemctl daemon-reload
✔ Setting up Systemd
✔ Running database migrations
? Do you want to start Ghost? Yes
✔ Validating config
Running sudo command: systemctl start ghost_localhost
✔ Starting Ghost
You can access your blog at http://localhost:2368/

Ghost uses direct mail by default
To set up an alternative email method read our docs at https://docs.ghost.org/docs/mail-config

这样的话你在本地浏览器就可以打开自己的ghost网站,如果访问不了请耐心等一下,因为程序的启动可能会比较慢,如果你要在别的机器上访问自己的博客。那么修改它的配置文件,就像下面
vim config.production.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
"url": "http://192.168.1.102:2368/",
"server": {
"port": 2368,
"host": "192.168.1.102"
},
"database": {
"client": "mysql",
"connection": {
"host": "localhost",
"user": "root",
"password": "woyaoxuehuilinux",
"database": "ghost"
}
},
"mail": {
"transport": "Direct"
},
"logging": {
"transports": [
"file",
"stdout"
]
},
"process": "systemd",
"paths": {
"contentPath": "/var/www/ghost/content"
}
}

注意修改的是url和host要改为自己机器的实际ip而不是127.0.0.1
当然我没有配置nginx,如果你配置了nginx,只要修改nginx中的配置文件就可以了
Have Fun

欢迎关注我的其它发布渠道