概述
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是不是被激活
ghost@bboysoul:/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的连接
ghost@bboysoul:/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
ghost@bboysoul:/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
ghost@bboysoul:/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
{
"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