Upd 2018-12-26: 这篇流程仅针对ghost v0.x,新版ghost可以直接用官方推荐的工具ghost-cli来完成安装,我这几天也将博客升级成了ghost v2.x。
需要注意的是,ghost官方的安装教程是基于ubuntu的。如果你像我一样在centos7上安装ghost,数据库最好不要用yum
中默认的mysql开源版本mariaDB,否则可能会出现各种神乎其神的bug。推荐使用官方源安装mysql,或者改用sqlite3。
连续搞了几个晚上 (肝要废了),今天终于弄好了Ghost Blog+域名+全局SSL (好菜啊)。那第一篇blog就来说说搭建流程咯。
准备服务器
首先你需要买个服务器,国外的话可以考虑Vultr或者DigitalOcean,这两个有5刀/月的服务器卖;国内的不是很了解,但要注意若服务器在国内,建网站是需要去备案的。我用的是Vultr的5美元服务器(CPU*1 + 1G内存 + 1T流量 + 25G SSD),系统是CentOS 7。Ghost安装步骤基本参考这篇文章。
第一次进入系统后建议先修改ssh登陆端口。打开ssh的配置文件:
vi /etc/ssh/sshd_config
找到# port 22
这一行,把前面的#号注释删掉,同时再添加一行:
port xx
xx是你想要用的新的端口号。
之后重启sshd
服务:
systemctl restart sshd.service
接下来在防火墙开放端口并使之生效:
firewall-cmd --permanent --add-port=xx/tcp
firewall-cmd --reload
xx是你的端口号。然后退出后重新指定端口登陆:
ssh -p xx [email protected]
如果设置正确那么此时应该就可以登陆上去了。如果无法登陆的话那就再从22端口登陆,检查设置是否正确。
最后我们要关闭22端口。重新打开/etc/ssh/sshd_config
,把port 22
那一行注释掉并重启sshd
就可以了。
安装Ghost
首先更新软件包信息,然后安装unzip,npm和nginx:
sudo yum update -y
sudo yum install unzip -y
sudo yum install nginx -y
sudo yum install npm -y
之后下载最新版Ghost:
wget https://ghost.org/zip/ghost-latest.zip
下载好后将其解压到/var/www/ghost/
目录下:
sudo mkdir /var/www
sudo unzip -d /var/www/ghost ghost-latest.zip
切换到/var/www/ghost/
目录并安装Ghost:
cd /var/www/ghost/
sudo npm install --production
接下来开始配置Ghost,它的配置文件为/var/www/ghost/config.js
,但这个文件一开始是不存在的,所以我们要将同一目录下的模版文件复制过去:
sudo cp config.example.js config.js
打开config.js
,找到production
部分,将url
修改成你服务器的IP地址或域名,例如:url: 'xxx.xxx.xxx.xxx';
,同时记下server
处的内网地址和端口,默认应该是127.0.0.1:2368
。当你的Ghost运行时,内网用户将通过这个地址访问Ghost。
但是现在是无法从外网访问Ghost的,所以我们接下来要配置Nginx内网转发,使得Nginx把来自80端口的http请求转发到内网地址127.0.0.1:2368
。
配置Nginx实现内网转发
刚刚的这些操作都是在/var/www/ghost
下进行的,接下来我们将配置nginx内网转发。切换目录到/etc/nginx
:
cd /etc/nginx
打开Nginx的配置文件nginx.conf
:
vi nginx.conf
找到监听80端口(写着listen 80
)的server
段,将这个server
段修改成:
server {
listen 80;
server_name your_domain_or_ip_address;
access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;
location / {
proxy_pass http://127.0.0.1:2368;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
}
}
其中,your_domain_or_ip_address
要改成你自己的域名或IP地址;proxy_pass
填的就是Ghost的内网地址。
接下来重启Nginx:
sudo service nginx restart
这时再切换到/var/www/ghost
目录来启动Ghost:
sudo npm start --production
现在在浏览器中输入你的IP地址并访问,就可看到你的博客了。
让Ghost以非root权限在后台运行
让Ghost以root权限运行是非常不安全的,因为Ghost一旦被人攻破,那么攻击者就很容易获得root权限。因此我们要单独开一个权限较低的用户来运行Ghost。
添加一个名字叫做ghost
的用户,并让它成为Ghost所在目录的所有者:
sudo adduser --shell /bin/bash ghost
sudo chown -R ghost:ghost /var/www/ghost/
接下来令Ghost成为一个系统服务。添加配置文件:
sudo vi /etc/systemd/system/ghost.service
在这个配置文件里写入这些东西:
[Unit]
Description=Ghost
After=network.target
[Service]
Type=simple
WorkingDirectory=/var/www/ghost
User=ghost
Group=ghost
ExecStart=/usr/bin/npm start --production
ExecStop=/usr/bin/npm stop --production
Restart=always
SyslogIdentifier=Ghost
[Install]
WantedBy=multi-user.target
保存配置文件并使其生效:
sudo systemctl enable ghost.service
sudo sytemctl start ghost.service
现在访问http://your_domain_or_ip_address
就可以看到你的博客了。若要停止Ghost只需输入命令:
sudo systemctl stop ghost.service
重启Ghost只需输入:
sudo systemctl restart ghost.service
简单管理Ghost
建立好Ghost的第一件事就是创建后台用户。访问:
http://your_domain_or_ip_address/ghost/
初次登陆要创建新管理员,按照它的提示操作就可以了。注意如果忘记了密码的话,它是可以邮箱找回密码的,但这个功能需要自行配置,所以一个比较简单的方法是直接从后台操作数据库。这个网上有很多教程,这里就不说了。
Ghost的数据基本上都存在/var/www/ghost/content
里面,所以备份博客时直接备份这个文件夹就可以了。
至此终于把Ghost肝完了,接下来还要肝域名和SSL (主要是在肝SSL)。过几天有空了再把第二篇补上。