前面三篇文章分别讲解了 Node.js、Nginx、MySQL 的安装,如果前几步没搞定的话,先回去转转吧:
现在我们准备进入 Ghost 的世界吧!
做些准备工作
创建数据库
我们希望 Ghost 搭配 MySQL 数据库运行,因此需要为 Ghost 创建一个 MySQL 数据库。前面已经安装好 MySQL 了,现在我们就来创建数据库吧:
mysql -uroot -p -e 'create database ghost;'
系统会提示你输入 MySQL 数据库的 root
账户密码(还记得前一章节安装 MySQL 时设置的密码吗?)。指令执行之后就创建了一个叫做 ghost
的数据库,将来,你的文章就是存在这里喽!
配置 Nginx
我们希望利用 Nginx 做 Ghost 的前端代理服务。OK, 我们进入 /etc/nginx/sites-available/
目录设置 Nginx :
cd /etc/nginx/sites-available/
sudo touch ghost.conf
sudo vi ghost.conf
最后一条指令是用 vim 编辑器打开 ghost.conf
文件进行编辑。我们输入如下内容:
server {
listen 80;
server_name ghostchina.com; //替换为你自己的域名!
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
}
如果不会用 vim 的话,请百度一下吧。只要会基本操作就 OK 了。
然后我们为 ghost.conf
文件做一个软链接到 /etc/nginx/sites-enabled/
目录下:
sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf
安装 forever
目前我们推荐采用
Upstart
进程守护工具来启动 Ghost。关于如何通过 Upstart 启动、监控 Ghost,请参考这篇文章:用 Upstart 守护 Ghost。
如果是通过 npm start
启动 Ghost 的话,只要你关闭了远程连接,Ghost 也就停了,这个我们当然不希望喽。幸好,有 forever
工具帮我们解决这个问题。接下来执行以下指令来安装 forever
:
sudo npm install forever -g
注意:这条指令将
forever
安装到全局环境。安装的时候系统会提示一些WARN
,这是因为forever
依赖的 Node.js 版本过低,没关系,不用理会。
Ghost,走你!
下载 Ghost
Ghost 安装包是经过压缩的,在 Linux 上我们需要用 unzip
工具对其解压,因此,首先要安装 unzip
工具:
sudo apt-get install unzip
接下来我们下载 Ghost 安装包:
cd /srv/
sudo curl -L http://dl.ghostchina.com/Ghost-0.4.1.zip -o ghost.zip
注意:上述下载链接是 Ghost中文网 提供的 CDN 加速下载。除了加速,还有一个原因就是:某些网站随时都可能被和谐掉!
将其解压缩:
sudo unzip ghost.zip -d ghost
现在,/srv/ghost/
目录下面就是我们的 Ghost 系统了!
修改 Ghost 配置文件
我们进入 Ghost 系统目录,为 Ghost 增加配置文件并配置数据库:
cd /srv/ghost/
sudo cp config.example.js config.js
sudo vi config.js
最后一条指令是用 vim 打开 config.js 文件进行编辑。我们只修改 production
一节的配置信息,修改为如下形式(注意按照你自己的实际情况替换!):
// ### Production
// When running Ghost in the wild, use the production environment
// Configure your URL and mail settings here
production: {
url: 'http://ghostchina.com', //替换为你自己的域名。
mail: {},
database: {
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'root', //我们暂且用 MySQL 的 root 账户
password : '123456', //输入你的 MySQL 密码
database : 'ghost', //我们前面为 Ghost 创建的数据库名称
charset : 'utf8'
}
},
server: {
// Host to be passed to node's `net.Server#listen()`
host: '127.0.0.1',
// Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
port: '2368'
}
},
检查无误后我们保存并退出编辑器。
安装 Ghost 依赖的库
很多同学安装到这一步都会遇到 sqlite 安装失败的情况,究其原因,还是我们伟大的“墙”在捣乱。由于安装 sqlite 时需要从亚马逊的 S3 服务器上下载一些组件,但是国外服务器经常被墙,所以在这一步上掉进坑里的同学都很无辜。
不幸的是,目前没有好的解决办法。
不过,我们这一系列教程讲解是采用 MySQL 数据库搭配 Ghost ,所以我们可以不安装 sqlite,具体操作如下:
打开 Ghost 系统的目录下面的 package.json
文件,将 "sqlite3": "2.2.0",
这一行删除掉(注意,你看到的 sqlite 版本可能会不一样,但是,只要是 sqlite3
字样,删除即可)。
接下来,进入存放 Ghost 系统的目录并安装 Ghost 所依赖的 npm
包:
cd /srv/ghost/
sudo npm install --production
很快,所有依赖包就安装好了,当前目录下会多出一个 node_modules
目录。
启动 Ghost
执行如下指令重启 Nginx、启动 Ghost:
sudo service nginx restart
cd /srv/ghost
sudo NODE_ENV=production forever start index.js
YEAH! 现在打开浏览器并输入你的域名看看是否出现了熟悉的画面:
大结局
没了!