Ghost部落格搭建日記

一縷殤流化隱半邊冰霜發表於2016-10-04

前言

今年7月陰錯陽差的給自己買了一臺阿里雲伺服器,當時是想著自己折騰折騰後臺,看能否打通前端和後端之間的任督二脈。直到我發現我原來放在GitPage上的部落格訪問速度慢的實在不能忍,痛下決心之後,就把原來Jekyll搭建的部落格站點一口氣都遷移到了現在自己阿里雲的主機上了。原來的Jekyll部落格還在,還在GitPage上。換到了國內自己的阿里雲主機上,我就用了優雅的Ghost搭建我的新家了。

今年8月的時候,部落格上線了,網友們看見我這個部落格還不錯,讓我出一下搭建教程。雖然部落格上線,還沒有通過網路管理中心的稽核,還不知道之後會發生什麼。當時的我也對Ghost不是很熟,也不知道後期如何維護,所以想著先讓Ghost在伺服器上面跑一個月看看,有了心得體會之後在寫篇文章記錄一下搭建過程。

現在部落格也跑了一個多月了,日常維護都玩的轉了,於是就有了這一篇文章了。

目錄

  • 1.Ghost簡介
  • 2.搭建前準備清單
  • 3.開始搭建
  • 4.全站Https
  • 5.管局備案 / 公安備案
  • 6.CDN優化訪問速度
  • 7.後期維護

一.Ghost簡介

Ghost 是一套基於 Node.js 構建的開源部落格平臺(Open source blogging platform),具有易用的書寫介面和體驗,部落格內容預設採用 Markdown 語法書寫,不過原生的不支援Markdown的表格和LaTeX,如果需要使用,需要在伺服器端安裝外掛。

Ghost目標是取代臃腫的 Wordpress,介面簡潔,專注寫作,支援線上預覽和線上寫作。

Ghost屬於動態部落格,頁面並不是像Hexo,Jekyll這類靜態部落格,在編譯的時候會生成所有頁面。Ghost有前臺和後臺。後臺負責寫作,釋出文章,系統配置,等等。

1. Ghost的優勢和劣勢

這裡有篇文章是這樣評論Ghost的優缺點的

  • 優勢 技術上,採用NodeJs,在可預見的未來裡,無疑比PHP有更多優勢,併發能力遠超Wordpress,雖然NodeJs後期維護成本高,但是我們只是借它做部落格而已。 易用性上,專注寫作,評論,超炫皮膚,完美支援 MarkDown,沒有Wordpress那麼臃腫,迴歸到部落格最原始的狀態,傳遞文字最原始的力量。 使用上,便捷,隨時隨地編輯,比Hexo,Jekyll這類靜態部落格要書寫方便,特別是在不同電腦上寫作時。

  • 劣勢 需要配套支援Node環境的虛擬機器,一般免費的很少支援,這時必須得掏腰包了。 後臺簡陋,許多功能還未完善,不過寫作這一塊沒啥大問題。

關於劣勢,我再說一點,Ghost沒有Hexo上面那麼豐富的外掛。

2. Ghost的亮點:
  • 採用Mysql作為資料庫,通用快速上手,這裡也可以用其他資料庫比如Sqlite。
  • Nginx作為反向代理,配置多個Ghost部落格,同時也能增加了網站的負載。
  • 非常簡易化的Ubuntu的Node.js安裝方法,不用編譯打包。
  • 安裝系統服務,開機重啟Ghost服務,免去日後以後操作。
  • 採用Font Awesome作為社交按鈕,也可以自定義圖示。
  • highlight.js 作為主題的程式碼高亮引擎
  • 整合Disqus評論系統,建立屬於自己的Discuss圈
  • 國外優秀免費Ghost主題資源分享
  • 整合百度統計以及百度分享

二. 搭建前準備清單

  • 一個可用的域名
  • 一臺伺服器 ( 我買的阿里雲ECS ,伺服器系統安裝的是 CentOS 7.0 64位)
  • Node v0.10.40(官方建議版本,注意,安裝Ghost中文版,只能安裝這個版本的Node,安裝高版本的會不識別,安裝其他版本的Ghost也一定要注意對準版本號
  • Nginx 1.80
  • Mysql
  • Ghost v0.7.4 full (zh)(中文漢化、支援七牛又拍雲阿里雲OSS儲存) 目前Ghost最新版是v0.11.1 (3.8mb zip),中文版最新版本號只到v0.7.4。

Ghost官網 ghost.org/
Ghost中文官網 www.ghostchina.com/
Ghost中文文件 docs.ghostchina.com/zh/

三. 開始搭建

1. 安裝Node

Ghost是基於Node.js構建的開源部落格平臺,所以我們首先搭建Node環境。


$ wget [http://nodejs.org/dist/v0.10.40/node-v0.10.40.tar.gz](http://nodejs.org/dist/v0.10.40/node-v0.10.40.tar.gz) 

$ tar zxvf node-v0.10.40.tar.gz 

$ cd node-v0.10.40 

$ ./configure 

$ make && make install複製程式碼

命令執行完畢之後,檢測一下環境是否配置成功。


$ node -v 

v0.10.40複製程式碼

顯示node的版本號,即為安裝成功。

2. 安裝Nginx

Nginx是一款輕量級的Web伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協議下發行。

首先在/etc/yum.repos.d/目錄下建立一個源配置檔案nginx.repo


$ vi /etc/yum.repos.d/nginx.repo複製程式碼

寫入以下內容:


[nginx] 
name=nginx repo 
baseurl=[http://nginx.org/packages/centos/](http://nginx.org/packages/centos/)$releasever/$basearch/ 
gpgcheck=0 
enabled=1複製程式碼

儲存。

按i編輯,按Esc結束編輯,:x儲存修改並退出,:q!強制退出,放棄修改,:wq也是儲存並退出。

初始化好Nginx之後,繼續執行以下指令:


$ yum install nginx -y # 安裝
$ Nginx service nginx start # 啟動
$ Nginx chkconfig nginx on # 設定開機啟動Nginx複製程式碼

這樣Nginx就安裝成功了,在瀏覽器中輸入你的伺服器的IP地址就可以看到提示:“Welcome to Nginx!”

3. 配置Nginx

安裝好了nginx後,我們需要設定一個代理伺服器讓我們的部落格可以使用域名訪問。


$ cd /etc/nginx/conf.d複製程式碼

在這個目錄下建立一個配置檔案ghost.conf


$ vi /etc/nginx/conf.d/ghost.conf複製程式碼

貼上以下內容:


server {
    listen 443;
    server_name halfrost.com www.halfrost.com; #這裡寫你的域名或者ip地址

    ssl on;
    ssl_certificate /etc/letsencrypt/live/halfrost.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/halfrost.com/privkey.pem;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}複製程式碼

中間有3行SSL的,是為了後面全站配置Https的,如果不需要Https,中間3行不需要加。

儲存退出,重啟nginx:


$ service nginx restart複製程式碼

Nginx 就配置完成了。

4. 安裝Mysql

Ghost 預設使用 sqlite3 資料庫,對於一般使用足夠了,但是內容多的話,就會拖慢整個系統,也就影響頁面開啟速度了,不想使用Mysql的朋友可以跳過這步。

CentOS7的yum源中預設好像是沒有mysql的。為了解決這個問題,我們要先下載mysql的repo源。

1.下載mysql的repo源

$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm複製程式碼

2.安裝mysql-community-release-el7-5.noarch.rpm包

$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm複製程式碼

安裝這個包後,會獲得兩個mysql的yum repo源:
/etc/yum.repos.d/mysql-community.repo, /etc/yum.repos.d/mysql-community-source.repo。

3.安裝mysql


$ sudo yum install mysql-server複製程式碼

根據步驟安裝就可以了,不過安裝完成後,沒有密碼,需要重置密碼。

4.重置密碼

重置密碼前,首先要登入


$ mysql -u root複製程式碼

登入時有可能報這樣的錯:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的訪問許可權問題。下面的命令把/var/lib/mysql的擁有者改為當前使用者:

$ sudo chown -R openscanner:openscanner /var/lib/mysql複製程式碼

然後,重啟服務:

$ service mysqld restart
$ chkconfig mysqld on # 設定開機啟動Mysql複製程式碼
5. 配置Mysql

輸入mysql_secure_installation配置Mysql:

$ Set root password? [Y/n] # 設定root密碼 
$ anonymous users? [Y/n] # 刪除匿名使用者 
$ Disallow root login remotely? [Y/n] # 禁止root使用者遠端登入 
$ Remove test database and access to it? [Y/n] # 刪除預設的 test 資料庫 
$ Reload privilege tables now? [Y/n] # 重新整理授權表使修改生效複製程式碼

為了避免資料庫存放的中文是亂碼,我們還需要設定Mysql的編碼:


$ vi /etc/my.cnf複製程式碼

貼上以下內容:


[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8 
collation-server=utf8_general_ci複製程式碼

儲存退出,重啟Mysql:


$ service mysqld restart複製程式碼

最後我們需要新建一個資料庫,用來存放部落格的資料:


$ mysql -u root -p # 輸入設定好的密碼 
$ create database ghost; # 建立ghost資料庫 
$ grant all privileges on ghost.* to 'ghost'@'%' identified by '123456'; # 新建一個使用者ghost,密碼為123456,這裡自己設定 
$ flush privileges # 重新讀取許可權表中的資料到記憶體,不用重啟mysql就可以讓許可權生效複製程式碼

Mysql資料庫就安裝配置完成了。

6. 安裝Ghost

首先下載Ghost:


$ cd /var/www 
$ wget [http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip](http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip) 
$ unzip Ghost-0.7.4-zh-full.zip -d ghost 
$ cd ghost複製程式碼

接著修改預設配置:


$ cp config.example.js config.js 
$ vi config.js複製程式碼

Ghost有產品模式、開發模式和測試模式等多種執行模式,這裡我們需要在配置檔案中找到production模式:


config = {
    // ### Production
    // When running Ghost in the wild, use the production environment.
    // Configure your URL and mail settings here
    production: {
        url: 'http://www.halfrost.com',
        mail: {},
        database: {
            client: 'mysql',
            connection: {
               // filename: path.join(__dirname, '/content/data/ghost.db')
               host:'127.0.0.1',
               user:'ghost',  #資料庫連線的使用者
               password:'iloveghost', #之前資料庫建立的密碼
               database:'ghost',  #之前建立的資料庫名字
               charset:'utf8'
            },
            debug: false
        },
 // 配置MySQL 資料庫
        /*database: {
            client: 'mysql',
            connection: {
                host     : 'host',
                user     : 'user',
                password : 'password',
                database : 'database',
                charset  : 'utf8'
            },
            debug: false
        },*/

        server: {
            host: '127.0.0.1',
            port: '2368'
        },

       //Storage.Now,we can support `qiniu`,`upyun`, `aliyun oss`, `aliyun ace-storage` and `local-file-store`
       // storage: {
           // provider: 'local-file-store'
       // }

        // or
        // 參考文件: http://www.ghostchina.com/qiniu-cdn-for-ghost/
        storage: {
            provider: 'qiniu',
            bucketname: 'Mybucketname',
            ACCESS_KEY: 'TZmRdasfdasfps5NDJEK4d*JsdgYGFFgWOsy5k_k0Zu',
            SECRET_KEY: '7IsGSDDf1ef4HEsafsagLPDfs3gCkr$FERFe6ivfT',
            root: '/Blog/',
            prefix: 'https://odd2zeri30g.qnssl.com/'
        }複製程式碼

storage這一項是配置雲端儲存的,支援七牛,又拍雲,阿里雲等等,具體設定需要檢視相應文件。如果只需要本地儲存,改成下面的樣子:

   storage: { 
     provider: 'local-file-store' 
}複製程式碼

儲存並退出,Ghost就配置完成了。

執行


$ npm start --production複製程式碼

啟動瀏覽器,輸入之前配置的域名或者IP,我們就可以看到建立好的Ghost部落格啦。 (Ctrl+C 中斷掉開發者模式)

7.部署Ghost

前面提到的啟動 Ghost 使用 npm start --production 命令。這是一個在開發模式下啟動和測試的不錯的選擇,但是通過這種命令列啟動的方式有個缺點,即當你關閉終端視窗或者從 SSH 斷開連線時,Ghost 就停止了。為了防止 Ghost 停止工作,我們得解決這個問題。

以下有幾種解決方案:
PM2(github.com/Unitech/pm2)
Forever (npmjs.org/package/for…)
Supervisor (supervisord.org/)


這裡我們使用PM2讓Ghost保持執行:


$ cd /var/www/ghost 
$ npm install pm2 -g # 安裝PM2 
$ NODE_ENV=production 
$ pm2 start index.js --name "ghost" 
$ pm2 startup centos pm2 save複製程式碼

如果npm安裝依賴的時候無法安裝,需要把映象換成淘寶的,再試試。


$ npm install -g cnpm --registry=[https://registry.npm.taobao.org](https://registry.npm.taobao.org/) 
$ cnpm install pm2 -g 
$ NODE_ENV=production pm2 start index.js --name "ghost" 
$ pm2 startup centos 
$ pm2 save複製程式碼

這樣一來,我們的Ghost部落格就可以保持執行啦,你可以使用以下指令來控制Ghost部落格:


pm2 start/stop/restart ghost複製程式碼
8. 初始化Ghost

現在所有準備工作都做好了,開啟你的瀏覽器,在瀏覽器中輸入 域名地址/ghost/,開始初始化使用者名稱,密碼,就可以開始愉快的Ghost之旅了。

四. 全站Https

Let's Encrypt是國外一個公共的免費SSL專案,由 Linux 基金會託管,它的來頭不小,由Mozilla、思科、Akamai、IdenTrust和EFF等組織發起,目的就是向網站自動簽發和管理免費證照,以便加速網際網路由HTTP過渡到HTTPS,目前Facebook等大公司開始加入贊助行列。

Let's Encrypt已經得了 IdenTrust 的交叉簽名,這意味著其證照現在已經可以被Mozilla、Google、Microsoft和Apple等主流的瀏覽器所信任,你只需要在Web 伺服器證照鏈中配置交叉簽名,瀏覽器客戶端會自動處理好其它的一切,Let's Encrypt安裝簡單,未來大規模採用可能性非常大。

Let's Encrypt官網:
1、官方網站:letsencrypt.org/
2、專案主頁:github.com/letsencrypt…

1、 安裝Let's Encrypt免費SSL準備

安裝Let's Encrypt指令碼依賴環境:(這一部分可以跳過,因為官方提供的Let's Encrypt指令碼會自動檢測並安裝)


# Debian
$ apt-get install git

# CentOS 6
$ yum install centos-release-SCL && yum update
$ yum install python27
$ scl enable python27 bash
$ yum install python27-python-devel python27-python-setuptools python27-python-tools python27-python-virtualenv
$ yum install augeas-libs dialog gcc libffi-devel openssl-devel python-devel
$ yum install python-argparse

# CentOS 7
$ yum install -y git python27
$ yum install -y augeas-libs dialog gcc libffi-devel openssl-devel python-devel
$ yum install python-argparse複製程式碼

檢視自己的VPS主機到底是安裝了哪個作業系統版本,可以執行命令:cat /etc/issue 或者 cat /etc/redhat-release。

2. 獲取Let's Encrypt免費SSL證照

獲取Let's Encrypt免費SSL證照很簡單,你只需要執行以下命令,就會自動在你的VPS上生成SSL證照和私鑰。


$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto複製程式碼

經過測試,上述程式碼對於Debian系統支援最好,可以完成自動檢測並安裝相應的軟體。如果你是使用其它的Linux系統,Redhat或CentOS 6可能需要配置EPEL軟體源,Python需要2.7版本以上。

執行上述命令後,會彈出對話方塊,同意使用者協議。

接著會提示讓你關閉Nginx或者Apache。

Let's Encrypt需要用到80和443埠,所以你需要關閉那些佔用這兩個埠的應用。

當你看以下內容時,就表明你的Let's Encrypt免費SSL證照獲取成功了。


IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/freehao123.org/fullchain.pem. Your cert will
   expire on 2016-03-09. To obtain a new version of the certificate in
   the future, simply run Let's Encrypt again.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le複製程式碼

見下圖:

到此,證照就申請結束了。

3. 配置SSL證照

接下來要配置一下本地的Nginx,在Nginx的config檔案裡面加入ssl的配置,配置在上面配置Nginx的時候已經寫過了。

4.指令碼自動獲取SSL證照

免費申請的SSL證照是每3個月就會過期,如果每次都要手動去申請證照,有點麻煩,而且一旦忘記了,SSL證照就過期了。

利用指令碼快速獲取Let's Encrypt SSL證照,呼叫 acme_tiny.py 認證、獲取、更新證照,不需要額外的依賴。

專案主頁:github.com/xdtianyu/sc…

下載專案到本地


$ wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf
$ wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh
$ chmod +x letsencrypt.sh複製程式碼

配置檔案。只需要修改 DOMAIN_KEY DOMAIN_DIR DOMAINS 為你自己的資訊


ACCOUNT_KEY="letsencrypt-account.key"
DOMAIN_KEY="freehao123.com.key"
DOMAIN_DIR="/var/www/freehao123.com"
DOMAINS="DNS:freehao123.com,DNS:www.freehao123.com"複製程式碼

執行過程中會自動生成需要的 key 檔案。執行:


./letsencrypt.sh letsencrypt.conf複製程式碼

注意需要已經繫結域名到 /var/www/www.freehao123.com 目錄,即通過 freehao123.com www.freehao123.com 可以訪問到 /var/www/freehao123.com目錄,用於域名的驗證。

正常按照上面的操作即可成功獲取到Let's Encrypt SSL證照,不過經過測試最大的問題就是“DNS query timed out”,由於域名DNS解析的問題導致無法驗證域名從而獲取SSL證照不成功。


Traceback (most recent call last):
  File "/tmp/acme_tiny.py", line 198, in 
    main(sys.argv[1:])
  File "/tmp/acme_tiny.py", line 194, in main
    signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca)
  File "/tmp/acme_tiny.py", line 149, in get_crt
    domain, challenge_status))
ValueError: hkh.freehao123.info challenge did not pass: {u'status': u'invalid', u'validationRecord': [{u'url': u'http://hkh.freehao123.info/.well-known/acme-challenge/sikHlqvbN4MrWkScgr1oZ9RX-lR1l__Z7FWVLhlYR0Q', u'hostname': u'hkh.freehao123.info', u'addressUsed': u'', u'port': u'80', u'addressesResolved': None}],  u'https://acme-v01.api.letsencrypt.org/acme/challenge/5m1su6O5MmJYlGzCJnEUAnvhweAJwECBhEcvsQi5B2Q/1408863', u'token': u'sikHlqvbN4MrWkScgr1oZ9RX-lR1l__Z7FWVLhlYR0Q', u'error': {u'type': u'urn:acme:error:connection', u'detail': u'DNS query timed out'}, u'type': u'http-01'}複製程式碼

如果遇到這種情況,請加上VPN再試一次了。

配置好了自動獲取SSL證照的指令碼以後,就不用擔心自己的SSL證照會過期啦。

到這裡,訪問你部落格網站對應的443埠就是https了。

五. 管局備案 / 公安備案

進行到這一步,其實網站已經“上線”,並且可以成功訪問了。不過正常訪問80埠會出現以下的介面。

但是如果配置好了Https,正常訪問443埠是沒問題的。

我猜想這裡應該可以把80埠的所有請求都轉發到443,那不就可以避開80埠的請求了?不過我沒有這麼嘗試。

想讓我們辛辛苦苦搭建的部落格能以正常的方式訪問到,那麼需要申請管局的備案。我在阿里雲買的伺服器,申請備案有直達連結,很方便。

申請過程需要先填寫個人資訊,申請地要寫身份證所在地。個別地方有特殊規定,比如上海和北京,如果有居住證,可以寫居住證的所在地。然後還要上傳手持身份證圖片,和一些需要親手簽字的掃描件。

這些提交好了之後,會給你郵寄一塊幕布,需要你拍照再次上傳備案。

之後就是等待了,一般備案從提交到稽核通過大概10個工作日左右。如果覺得慢,還可以電話諮詢稽核進度。

當管局備案通過之後,會給你發郵件,裡面還有一個公安備案。我看很多教程沒有說要公安備案。也許是新出的。點郵件裡面的連結,繼續進行公安備案。

公安備案也是需要填寫個人資訊。這裡全部提交完全之後提交就好了,沒有管局的備案麻煩,只需要等待稽核通過即可。

當這兩個備案都完美通過之後,就可以算是備案通過,網站可以正常上線了。上線前,記得需要在網站頁尾處加上備案號。這些說明在備案通過的郵件裡面有詳細的說明,把郵件裡面說到的事情都做一遍,就OK了。

六. CDN優化訪問速度

網站上線以後,訪問速度會比伺服器在國外的GitPage訪問快一點。但是如果網站圖片很多,或者文章圖片質量很高,很多,訪問速度還是會隨之下降。

這是我們需要加入CDN來加速。

這裡我用的七牛的CDN雲服務。申請一個正好,建立好自己的倉庫,就可以把需要快取到CDN的資源都上傳進去。圖片,視訊,音樂都可以放進去。部落格裡面引用的就是七牛上面這些資源的外鏈。

這裡需要提醒注意的一點是,七牛記得設定好防盜鏈和流量提醒,否則別人會偷偷的從你這裡盜走好多流量,到月底,我們就白白花掉了好多冤枉錢了。

由於之前全站設定了Https,所以七牛這裡的圖片也需要用https的,https的流量比http的免費流量少很多。

設定好了以後,我跑了一個分,對比之前放在GitPage上的部落格訪問速度。

七. 後期維護

這裡的維護基本上指的是部落格更新和釋出以及Ghost配置的更改。

在自己的github上把所有的Ghost的配置都放在倉庫裡面,並把自己伺服器的SSH Key加入到Github的key裡面去。

git clone 一份到本地,每次在本地更改了,除錯好之後,就先push一份到遠端。然後登陸到伺服器上,把最新的程式碼pull下來,應用就好了。pull完之後只要執行


$ service nginx restart
$ pm2 restart ghost複製程式碼

執行這兩句就可以了。

平時還可能會出現一些https的問題,遇到了就Google查詢錯誤程式碼就可以了。

這裡說一個https不相容百度分享的問題。

這裡有一份修改好的分享程式碼Github地址github.com/hrwhisper/b…

static 解壓後丟到站點根目錄下即可。

然後對應的百度分享程式碼中,把bdimg.share.baidu.com/改為 /


.src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
改為
.src='/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];複製程式碼

這樣就可以了。如果想知道具體是怎麼實現了,就看看作者這篇文章

解決百度分享不支援https的還有一個辦法是利用七牛的映象儲存

看了下從百度分享獲取的程式碼,裡面主要載入了這個:bdimg.share.baidu.com/static/api/… 訪問了一下確實不支援 HTTPS。利用七牛的映象儲存,或者自己利用伺服器的Nginx反向代理一下就可以支援https了。

具體實現可以看這篇文章

最後

經過我們自己辛辛苦苦一路踩坑過來,搭建出來的部落格,一定會好好珍惜。這是我們程式設計師自己的家,讓我們用一篇篇的用心的部落格來裝飾我們的新家吧。

參考連結:

安裝Ghost & 開始嘗試
「搭建Ghost部落格」經典教程
如何搭建一個Ghost平臺的部落格
How To Create a Blog with Ghost and Nginx on Ubuntu 14.04
免費SSL證照Let’s Encrypt安裝使用教程:Apache和Nginx配置SSL
手把手教你搭建一個屬於自己的Ghost部落格




相關文章