偶然的機(jī)會看到Ghost這個(gè)平臺摘符,竟然感到十分喜歡(因?yàn)楹唵?333)臭增,所以決定在自己的VPS部署一個(gè)這樣的博客。
在Ghost之前撇他,VPS上面就已經(jīng)安裝了Apache茄猫,并且?guī)团笥巡渴鹆艘粋€(gè)他的主頁在上面(對應(yīng)他自己的域名)。
我希望最終的結(jié)果是困肩,服務(wù)器可以根據(jù)域名來返回不同的訪問結(jié)果划纽,也就是說:
- 當(dāng)用我的域名訪問服務(wù)器時(shí) --> 返回我自己的博客首頁
- 當(dāng)用朋友的域名訪問服務(wù)器時(shí) --> 返回他自己的主頁
因此這次工作的大概步驟就是:
- 安裝Ghost
- 配置Apache的VirtualHost
- 讓Ghost保持運(yùn)行
安裝Ghost
1.node安裝
Ghost需要node的支持,而Ghost官方推薦的node版本是0.10.40(具體可以參考這里)锌畸,
首先到node的官方網(wǎng)站找到對應(yīng)版本的壓縮包https://nodejs.org/dist/v0.10.40/node-v0.10.40-linux-x64.tar.gz
將其下載到VPS本地:
wget https://nodejs.org/dist/v0.10.40/node-v0.10.40-linux-x64.tar.gz
接著使用tar命令將其解壓:
tar -xvf node-v0.10.40-linux-x64.tar.gz
解壓出來的包就已經(jīng)是編譯好的了勇劣,在bin目錄下可以看到node和npm兩個(gè)可執(zhí)行文件
修改用戶目錄下的.bash_profile,添加以下一行:
export PATH=$PATH:/path/to/node/bin #這里要將目錄改成node對應(yīng)的安裝目錄
運(yùn)行讓新配置生效
. ~/.bash_profile
這時(shí)候運(yùn)行:
node -v
如果成功輸出版本號蹋绽,則node的安裝就基本上成功了
Ghost在低版本的(<2.0)的npm下可能會出現(xiàn)安裝失敗的問題芭毙,因此我們將npm更新到最新:
npm install -g npm
等待更新完成之后筋蓖,下面我們就開始正式安裝Ghost啦
2.Ghost安裝
Ghost的安裝比較簡單,基本上就是按照官方的教程一步步來退敦。
如果系統(tǒng)還沒安裝curl或者unzip的話要事先安裝好粘咖。
首先是下載:
curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
接著將其解壓到/var/www/ghost目錄下(官方推薦的目錄):
unzip -uo ghost.zip -d /var/www/ghost
接著cd進(jìn)入安裝目錄并執(zhí)行安裝:
cd /var/www/ghost && npm install --production
如果沒有報(bào)錯(cuò),那么恭喜你侈百,你的Ghsot已經(jīng)安裝完成啦瓮下!
3. 配置和啟動(dòng)Ghost
這個(gè)時(shí)候,就可以啟動(dòng)Ghost服務(wù)了:
npm start --production
Ghost默認(rèn)是監(jiān)聽2368端口钝域,如果是在本地機(jī)器部署的話讽坏,這個(gè)時(shí)候就可以通過瀏覽器訪問:
- http://localhost:2368 (博客首頁)
- http://localhost:2368/ghost (博客設(shè)置頁面)
不過,在VPS部署Ghost是希望能通過域名來訪問例证,而這個(gè)時(shí)候路呜,無論是通過域名還是直接通過ip地址,都無法訪問Ghost
所以接下來织咧,我們先 ctrl + c 把Ghost給停掉, 然后對Ghost安裝目錄下的 config.js 進(jìn)行小小的配置
需要注意的是:第一次運(yùn)行Ghost的時(shí)候這個(gè)文件會自動(dòng)生成胀葱,如果尚未啟動(dòng)過Ghost,可以從 config.example.js 復(fù)制一份:
cp config.example.js config.js
然后將 production{} 里面的 url 字段的值改成我們自己的公開域名笙蒙,然后保存退出
production: {
url: 'http://your.domain',
...
...
}
如果需要郵件服務(wù)抵屿,可以參考官方教程進(jìn)行配置,其他的字段一般不需要再進(jìn)行更改
配置Apache的VirtualHost
首先進(jìn)入Apache的安裝目錄:
cd /etc/httpd/
新建目錄用來存放配置文件:
mkdir vhost-test.d
通過 vi 新建并編輯配置文件:
vi vhost-test.d/vhost-test.conf
輸入內(nèi)容:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName your.domain
ProxyPreserveHost on
ProxyPass / http://127.0.0.1:2368/
</VirtualHost>
<VirtualHost *:80>
ServerName other.domain
ProxyPreserveHost off
DocumentRoot /var/www/html/
</VirtualHost>
上述配置就是告訴Apache捅位,
當(dāng)通過 your.domain 訪問時(shí)轧葛,將請求移交給監(jiān)聽于2368的Ghost處理,
當(dāng)通過 other.domain 訪問時(shí)艇搀,訪問 DocumentRoot 下的文件
接下來將該配置文件包含在 httpd.conf 中:
vi /etc/httpd/conf/httpd.conf
在最后加入一行然后保存退出:
Include vhost-test.d/*.conf
重啟Apache:
service httpd restart
這個(gè)時(shí)候重新進(jìn)入Ghost安裝目錄:
cd /var/www/ghost
啟動(dòng)ghost:
npm start --production
這個(gè)時(shí)候就可以通過自己的域名訪問ghost啦尿扯,而且用朋友的域名訪問的依舊是他自己的主頁。
我們可以進(jìn)入 http://<your.domain>/ghost 來進(jìn)行博客的一些基本設(shè)置中符,第一次進(jìn)入時(shí)要設(shè)置登錄郵箱和密碼姜胖,之后就可以用這個(gè)賬戶來管理你自己的博客啦
3. 讓Ghost保持運(yùn)行
雖然Ghost已經(jīng)可以被成功訪問,但是當(dāng)你關(guān)閉終端或者斷掉和遠(yuǎn)程VPS的的ssh連接時(shí)淀散,ghost都會被停止右莱,這并不是我們想看到的,所以我們需要找一個(gè)方法讓Ghost保持運(yùn)行
官方教程里面提到了幾個(gè)方式档插,這里我選擇的是 pm2
首先 ctrl + c 停止Ghost服務(wù)
在安裝 pm2 之前慢蜓,確保機(jī)器已經(jīng)安裝 git ,否則安裝過程可能會報(bào)錯(cuò):
yum install git
然后進(jìn)入ghost安裝目錄郭膛,安裝 pm2:
npm install pm2 -g
接著啟動(dòng)Ghost:
NODE_ENV=production pm2 start index.js --name "Ghost"
這個(gè)時(shí)候晨抡,可以看到 pm2 的輸出:
>┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬──────────────┬──────────┐
>│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
>├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼──────────────┼──────────┤
>│ Ghost │ 0 │ fork │ 20805 │ online │ 3246 │ 25h │ 125.996 MB │ disabled │
>└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴──────────────┴──────────┘
說明Ghost已經(jīng)成功運(yùn)起來了。這個(gè)時(shí)候即使你關(guān)閉終端或者斷開和VPS的遠(yuǎn)程連接,ghost都不會被停止耘柱。
接下來你還可以使用下列命令來停止如捅、重啟Ghost:
pm2 stop Ghost
pm2 retart Ghost
pm2 reload Ghost
好了,到這里基本上Ghost的部署就完成了调煎。享受之~
參考鏈接:
http://support.ghost.org/getting-started/
http://www.thegeekstuff.com/2011/07/apache-virtual-host/
https://www.iceoa.com/centos7-apache/