在Ubuntu/Debian主机上安装Ghost

Step 1 安装 Node 和 NPM

目前 Ghost 最高支持到 Node 4.X

1
2
curl -sL https://deb.nodesource.com/setup_4.x | bash -
apt-get install nodejs

Step 2 安装 Ghost

下载最新的 Ghost 发行版,并解压到 /var/www/ghost(推荐)

1
2
3
4
5
6
mkdir /var/www
mkdir /var/www/ghost
cd /var/www/ghost

wget https://ghost.org/zip/ghost-latest.zip
unzip ghost-0.7.2.zip

安装依赖的 node 模块

1
npm install --production

Step 3 安装 MySQL 数据库

如果用自带的 SQLite,可以跳过这些步骤

1
apt-get install mysql-server mysql-client

为 Ghost 创建 Database 和用户

1
mysql -uroot -p

登陆后,输入

1
2
3
create user 'ghost'@'localhost' identified by 'ghost';
create database ghost;
grant all privileges on ghost.* to 'ghost'@'localhost' identified by 'ghost';

最后改一下 Ghost 的配置文件,让它使用 MySQL 而不是默认的 SQLite,(部分)如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
production: {
url: 'http://eric.ga',
mail: {},
database: {
client: 'mysql',
connection: {
host: '127.0.0.1',
user: 'ghost',
password: 'ghost',
database: 'ghost',
charset: 'utf8'
}
},

server: {
host: '127.0.0.1',
port: '2368'
}
}

Step 4 安全设置

添加 Ghost 专用的用户(不然就要用 root 运行了)

1
adduser --gecos 'Ghost application' --no-create-home --shell /usr/sbin/nologin ghost

把刚刚的装好的 Ghost 目录以及所有内部文件的 owner 设为该用户

1
chown -R ghost:ghost /var/www/ghost

Step 5 设置 NGINX

安装 NGINX

1
apt-get install nginx

修改 /etc/nginx/sites-available/ghost

1
2
3
4
5
6
7
8
9
10
server {
listen 80;
listen [::]:80;
server_name ericfu.me;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
}

/etc/nginx/sites-enabled 里的文件(默认只有一个 default)删掉,然后创建上述文件的符号连接

1
2
cd /etc/nginx/
ln -s sites-available/ghost sites-enabled/ghost

重启 NGINX 使设置生效

1
service nginx restart

Step 6 设置 Supervisor

Supervisor 是一个进程控制系统,允许在启动的时候无需初始化脚本就能运行 Ghost

1
apt-get install supervisor

新建配置文件 /etc/supervisor/conf.d/ghost.conf 如下

1
2
3
4
5
6
7
8
9
[program:ghost]
command = node /var/www/ghost/index.js
directory = /var/www/ghost
user = ghost
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/ghost.log
stderr_logfile = /var/log/supervisor/ghost_err.log
environment = NODE_ENV="production"

重启 Supervisor 使配置生效

1
service supervisor restart