安装过程中不能使用root账户进行安装。如果安装完成后重启出现502错误,需要手工重启ghost blog的服务,未解决FTP的权限问题。

由于Ghost不允许root安装,所以需要新建一个普通的账户:

adduser # ghost不允许root用户安装,所以需要新建个用户
usermod -aG sudo # 给予用户为超级权限
su – # 登录用户

sudo apt update
sudo apt upgrade # 更新软件
这里的用户名可以自己任意修改,例如jaxson、ubuntu等。

但请不要使用ghost作为用户名,因为和ghost-cli用户名产生冲突。

执行下面的命令安装node.js

# 添加 Nodejs 10 源
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash

# 安装 Node.js
sudo apt-get install -y nodejs
国内的机器安装可能比较慢,因为不可描述的原因导致的,如果着急的话可以试试上面的老方法。

设置Nodejs镜像源(非中国大陆机器不用设置):

npm config set registry https://registry.npm.taobao.org #npm镜像替换为淘宝npm节点
npm config get registry #配置后可通过下面方式来验证是否成功
安装Nginx环境
如果你需要SSL配置需要NGINX 1.9.5或更高版本,当然你可以选择下载Nginx源码进行编译安装,省事可以直接执行:

sudo apt-get install nginx
nginx -v # 输出版本号
如果ufw已激活,则防火墙允许HTTP和HTTPS连接,所以打开防火墙:

sudo ufw allow ‘Nginx Full’
安装数据库
Ghost安装数据库推荐的是MySQL:

sudo apt install mysql-server
如果运行的是Ubuntu 18.04,则需要输入密码以确保MySQL与Ghost-CLI兼容:
# 进入数据库管理
sudo mysql

# 执行下列语句进行修改数据库密码
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘这是你要替换的密码’;

# 退出数据库管理
quit;

# 退出mysql用户并且登录用户账户
su –
安装Ghost-Cli & Ghost
sudo npm install ghost-cli@latest -g # 安装Ghost脚手架
创建网站目录:

# 创建ghost文件夹的网站目录,这个名字可以自己随便定义
sudo mkdir -p /var/www/ghost

# 使文件夹拥有权限,是当前用户名
# 例如当前用户名是ubuntu,那么应该是:sudo chown ubuntu:ubuntu /var/www/ghost
sudo chown : /var/www/ghost

# 设置读写权限
sudo chmod 775 /var/www/ghost

# 定位
cd /var/www/ghost

# 进行Ghost博客平台安装
ghost install
安装过程根据主机性能来决定,下面是选项配置讲解:

Enter your blog URL: 博客展示地址,格式:http(s):(www.)example.com,不支持ip地址。
Enter your MySQL hostname: 数据库主机地址,回车默认是localhost。
Enter your MySQL username: / Enter your MySQL password: 数据库用户名/密码,上面安装的数据库用户名是root,密码是自己设置的。
Enter your Ghost database name: Ghost博客数据库名
Do you wish to set up “ghost” mysql user? 设置数据库用户名为ghost,这个为了避免权限太大导致数据瞎搞,Ghost官方推荐是y。
Do you wish to set up Nginx? 自动化Nginx,推荐y。
Do you wish to set up SSL? 配置SSL证书,推荐y,如果你有证书问题,请查看文章最下面的问题。
Enter your email (For SSL Certificate):个人邮箱,配置ssl证书需要的邮箱地址。
Do you wish to set up Systemd? 使用ghost进程管理工具,推荐y,个人觉得海星。
Do you want to start Ghost? 启动Ghost博客就可以进入网址访问。
图片优化
图床使用的是Ghost qiniu图床:https://github.com/minwe/qn-store

例如在/var/www/ghost/content/adapters文件下新建个storage文件夹

cd /var/www/ghost/content/adapters/storage # 定位
git clone https://github.com/Minwe/qn-store.git # 拉取源码
cd qn-store # 定位
npm install # 安装模块依赖
然后打开/var/www/ghost/config.production.json文件,添加代码:

{
// …
“storage”: {
“active”: “qn-store”,
“qn-store”: {
“accessKey”: “your access key”, // https://portal.qiniu.com/user/key获取AK密匙
“secretKey”: “your secret key”, // https://portal.qiniu.com/user/key获取SK密匙
“bucket”: “your bucket name”, // 存储对象空间名字
“origin”: “http://xx.xx.xx.glb.clouddn.com”, // 七牛CDN地址
“fileKey”: {
“safeString”: true,
“prefix”: “YYYYMM/”
}
}
}
// …
}
然后重启Ghost:

cd /var/www/ghost
ghost restart
SSL错误
如果你域名设置@域名例如:https://iiong.com,访问是没有问题,但如果是访问www.iiong.com就会报错,如何解决这个问题呢:

重新配置:ghost config url https://www.mydomain.com
执行ghost setup nginx ssl
再修改回来:ghost config url https://mydomain.com
打开/var/www/ghost/system/files/下的俩个www.*.conf文件,添加301跳转到顶级域名代码:

if ($ssl_protocol = “”) {
return 301 https://$host$request_uri;
}
if ($host != iiong.com) {
return 301 $scheme://iiong.com$request_uri; #请注意这里的iiong.com替换你的域名。
}
重启sudo nginx -s reload服务

安装 ftp 服务上传修改主题
如果使用 sftp 服务来修改上传主题文件会出现权限不足的错误,如果有着频繁修改主题的需求需要额外安装 ftp 服务并且指定账号来达到读写操作效果。

sudo apt-get install vsftpd -y # 安装ftp服务

sudo useradd -d /var/www/ghost/ -s /usr/sbin/nologin # 是上面指定的账号

//设置该帐户密码:
sudo passwd
先检查一下 nologin 的位置, 通常在 /usr/sbin/nologin 或者 /sbin/nologin 下

配置 vsftp

修改配置文件:

sudo vim /etc/vsftpd.conf
将配置文件中 anonymous_enable=YES 改为 anonymous_enable=NO

取消如下配置前的注释符号:

local_enable=YES
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
local_umask=002 # 务必修改 002 对应目录775 文件664 权限
保存退出后继续编辑 vsftpd.chroot_list 文件,将将 ftp 的帐户名 添加进去::

sudo vim /etc/vsftpd.chroot_list
修改 shell 配置:

sudo vim /etc/shells
如果该文件里没有 /usr/sbin/nologin 或者 /sbin/nologin (具体看当前系统配置) 则 追加进去,然后重启服务:

sudo service vsftpd restart
然后重启服务后登陆 ftp 软件上传文件即可。

如果上传、删除和修改文件出现失败的时候,绝大部分原因是权限问题,执行下面问题即可修复:

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