记一次Ghost-CLI的踩坑经历

暑假伊始,想把放下许久的博客再搭起来,在经过一些挑选后,还是选择了 ghost。在ghost 官网发现了有Ghost-CLI可以用,心念一动,于是,走上了不归路。这里做一些总结,以警后事。
##Ghost-CLI 安装

在安装之前,你可能需要安装一些必要的依赖,在Debian/Ubuntu下:

sudo apt install build-essential

CentOS下:

yum groupinstall "Development Tools" 

###安装 nodejs
这个可能是作为一个前端,安装中最驾轻就熟的了。我使用了nvm作为 node 版本管理:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash

之后

nvm install --lts
安装最新的长期支持版本(我使用的是v6.11.1

根据TryGhost/Ghost-CLI安装:

npm install -g ghost-cli@latest

我安装时的最新版本为1.0.0-rc.2。 ##通过 CLI 安装 GHOST
按照官网文档,一步步进行如下: ###安装 nginx:
我使用的是 CentOS7,在尝试过直接使用 yum 无果之后,发现要添加 nginx yum 源:

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

然后 yum 安装 nginx:

sudo yum install -y nginx

###安装 MySQL:
与上文类似,在 yum 安装mysql-server时找不到可用包,采用如下方式:

# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 

# rpm -ivh mysql-community-release-el7-5.noarch.rpm 
# yum install mysql-server

即可完成安装,在安装完成时候,也并不像 Ubuntu 一样可以直接设置用户,而是需要:

为 root 用户设置密码

# mysql -u root
mysql> set password for 'root'@'localhost' =password('password');

完成设置。 ###安装 ghost:
如果顺利的话,是这样的:

# ghost install
Enter your blog Url:
Enter your MySQL hostname:
Enter your MySQL username:
……

你只需要按照提示,一步步填写进去即可,但是事情的发展常常不是这么顺利:
官网有句话是这么写的,

Ubuntu 16.04 is the only officially supported OS. Other operating systems may work, but we are unable to assist with debugging or optimising for them.

也就是说只是官方支持 Ubuntu 16.04,我用 CentOS7 执行时提示我并不是 Ubuntu16,询问是否继续,当然~
安装到一半,提示Error occurred running command: 'yarn install --no-emoji --no-progress',在troubleshooting页面找到了解答:可能是你的内存不够用,建议你删除整个文件夹,重新安装。
不得不说,ghost-cli有一点非常不好,就是要求安装目录必须为空,不支持覆盖安装,于是每次的库都要重新下载。
在删除安装了 7,8 次之后,终于安装成功了!
在填写完我的域名,数据库信息后,弹出这样一个问题Do you wish to set up nginx?,然后提示找不到 nginx,自动跳过了,喵?(后来在 Ubuntu16.04 上测试并没有出现这个情况),解决办法当然是自己配置 nginx 反向代理啦,在/etc/nginx/conf.d文件夹内新建一个ghost.conf,写入

1
2
3
4
5
6
7
8
9
10
server{
listen 80 default_server;
server_name blog.battles.xyz;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
}

当然server_name要换成你自己的啦。
所有问题结束之后,通过ghost start命令,打开服务,系统用绿绿的字提示 ghost 启动,请访问你的域名 balabala。这里我又遇到了问题:浏览器打开提示 502,一定是有服务没运行起来:
检查 nginx service 并没有发现问题,用ps -ef|grep node发现没有 node 进程在运行???
ghost ls命令发现没有正在运行的 ghost 实例。(心好累,你的承诺呢)

键入ghost run,原来是 nvm 没有给 sudo 权限,(为啥你不报错呢?)挑了半天权限没有成功,就借用了一个全局的 nvm:nvm-global重新安装了 nvm 和 node,ghost 博客终于成功运行。

这就是本次 ghost 的踩坑历程。建议使用官方推荐的 Ubuntu16.04 安装 ghost,可能会少踩很多坑,如果遇到了问题,要多去官网问题汇总查看,加油~