
前言
最近腦子一抽,想用ghost搭建一個(gè)博客。本來(lái)以為,直接把東西往服務(wù)器上一扔就行了。沒(méi)想到還要搞什么Linux,我這個(gè)Linux小白,被折磨的生無(wú)可戀。
零零碎碎的花了好幾天總算是能啟動(dòng)了,寫(xiě)個(gè)博客記錄一下部署過(guò)程。
開(kāi)始
1. 連上你的服務(wù)器
連上服務(wù)器我就不說(shuō)了,我用的服務(wù)器版本是 ubuntu16.04
2. 安裝nodejs環(huán)境
這里我們先來(lái)安裝nvm來(lái)管理node版本。
2.1 首先安裝wget
apt-get install wget
2.2 安裝nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
執(zhí)行完以上面命令后,重新登錄一下服務(wù)器。重新登錄后,輸入
nvm --version

這條命令會(huì)打印當(dāng)前nvm版本號(hào),如果命令能夠正常執(zhí)行,就說(shuō)明nvm安裝成功了。
2.2 安裝nodejs
有了nvm,安裝nodejs就是易如反掌了,執(zhí)行類(lèi)似下面命令
nvm install v6.11.0
其中 "v6.11.0" 可以換成任意你需要的版本。
安裝完成后,nvm會(huì)默認(rèn)選擇剛剛安裝的版本,接著我們運(yùn)行一下node -v和npm
-v查看一下這兩個(gè)是否安裝成功。
node -v
npm -v


至此nodejs安裝成功。
3. 安裝Nginx
安裝Nginx很簡(jiǎn)單,只需要一條命令即可。
apt-get install nginx
4. 安裝Ghost
4.1 創(chuàng)建目錄
首先我們新建一個(gè)存放Ghost目錄,并且進(jìn)入到該文件夾,執(zhí)行如下命令
mkdir -p /var/www/ghost
cd /var/www/ghost
4.2 下載,解壓ghost
我們先下載ghost
接著解壓ghost的壓縮包,首先你的必須有unzip,沒(méi)有的話就先安裝一個(gè)。
apt-get install unzip
安裝好unzip后,我們解壓剛剛的壓縮包到/var/www/ghost目錄下
unzip -d /var/www/ghost ghost-latest.zip
確保你當(dāng)前目錄是在/var/www/ghost下,就可以安裝依賴(lài)模塊了
npm install --production
注意加 --production是只安裝生產(chǎn)環(huán)境的模塊,這樣安裝起來(lái)比較快。
你可能發(fā)現(xiàn)npm非常慢,而且還可能安裝失敗,那么我們來(lái)弄個(gè)淘寶鏡像cnpm吧,執(zhí)行如下命令
alias cnpm="npm --registry=https://registry.npm.taobao.org
--cache=$HOME/.npm/.cache/cnpm
--disturl=https://npm.taobao.org/dist
--userconfig=$HOME/.cnpmrc"
然后執(zhí)行
cnpm install --production
- 2017年1月4號(hào)更新
現(xiàn)在安裝完直接運(yùn)行會(huì)報(bào)錯(cuò),根據(jù)提示先手執(zhí)行
npm install -g knex-migrator
knex-migrator init

等待安裝完成后,啟動(dòng)ghost
npm start
最后如果你看見(jiàn)類(lèi)似于下面的界面,就說(shuō)明你運(yùn)行成功了。

5. 配置Ghost
如果觀察仔細(xì)的話,你會(huì)發(fā)現(xiàn)在/var/www/ghost下面多了一個(gè)config.js ,這是之前執(zhí)行了npm start后自動(dòng)生成的。我們先Ctrl+c停止ghost,然后來(lái)修改一下這config.js文件。
vim config.js
打開(kāi)后,找到如下部分,修改 <b>http://your_domain_or_ip_address</b>,將它替換為你的域名,或者服務(wù)器的IP地址。例如<b>http:// example.com</b>或<b>http:// 11.11.11.11</b>
...
config = {
// ### Production
// When running Ghost in the wild, use the production environment
// Configure your URL and mail settings here
production: {
url: 'http://your_domain_or_ip_address',
mail: {},
...
修改完成后,保存并退出。
6. 配置Nginx
到現(xiàn)在為止你已經(jīng)能正常啟動(dòng)了,但是ghost啟動(dòng)監(jiān)聽(tīng)的端口是本地,這個(gè)時(shí)候我們需要配置一下Nginx,讓外網(wǎng)能夠訪問(wèn)。
我們先進(jìn)入/etc/nginx目錄,備份一下/etc/nginx/sites-enabled中的默認(rèn)配置文件default
cd /etc/nginx
mv sites-enabled/default sites-enabled/default.bak
新建ghost的配置文件
vim /etc/nginx/sites-available/ghost
將以下配置放入該文件中,其中 <b>your_domain_or_ip_address</b> 改成你的域名或ip地址。
server {
listen 80;
server_name your_domain_or_ip_address;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:2368;
}
}
完成后保存并退出,并在/etc/nginx/sites-enabled目錄中為此文件創(chuàng)建符號(hào)鏈接來(lái)/etc/nginx/sites-enabled配置
ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost
完成后執(zhí)行
sudo nginx -t
如果成功將會(huì)看見(jiàn)下面輸出
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
最后一切完成,重啟一下nginx服務(wù)
sudo service nginx restart
此時(shí),你可以再次進(jìn)入/var/www/ghost目錄。啟動(dòng)ghost
cd /var/www/ghost
npm start
打開(kāi)你的瀏覽器,輸入剛剛配置的域名或ip,即可看見(jiàn)效果。

完善
我們現(xiàn)在雖然能夠訪問(wèn)了,但是有一個(gè)特別尷尬的問(wèn)題就是我們會(huì)話一結(jié)束或者退出,ghost就自動(dòng)關(guān)閉了。那么這個(gè)時(shí)候我們就要安裝pm2來(lái)守護(hù)ghost進(jìn)程。
- 全局安裝pm2
npm -i pm2 -g
這個(gè)時(shí)候我的系統(tǒng)報(bào)了一個(gè)錯(cuò)誤,如果你安裝沒(méi)有錯(cuò)誤,可以跳過(guò)這段

查了一下,按stackoverflow中回答的方法成功解決,解決方案點(diǎn)這里。
簡(jiǎn)單說(shuō)只需要將我上圖中紅色圈出來(lái)的文件修改一下,將<b>uidSupport = process.getuid && process.setuid </b>替換成<b> uidSupport = false </b>即可。
pm2正確安裝后,再次來(lái)到/var/www/ghost目錄,執(zhí)行
pm2 start index.js

此時(shí),執(zhí)行成功,這個(gè)時(shí)候你就可以安心的關(guān)閉遠(yuǎn)程會(huì)話了。
最后放上一個(gè)完成后的鏈接,www.xuxule.top