「搭建Ghost博客」經典教程

Ghost是一款很是出色的開源博客平臺,不管是從架構、設計、易用性,它都要比Wordpress要好,界面簡潔,專一寫做,支持在線預覽,在線寫做,不管您是在哪裏,均可以去寫博客,盡情的享受寫做帶來的快感。php

優點

  • 技術上,採用NodeJs,在可預見的將來裏,無疑比PHP有更多優點,併發能力遠超Wordpress,雖然NodeJs後期維護成本高,可是咱們只是借它作博客而已。html

  • 易用性上,專一寫做,評論,超炫皮膚,完美支持 MarkDown,沒有Wordpress那麼臃腫,迴歸到博客最原始的狀態,傳遞文字最原始的力量。node

  • 使用上,便捷,隨時隨地編輯,比Hexo,Jekyll這類靜態博客要書寫方便,特別是在不一樣電腦上寫做時。mysql

劣勢

  • 須要配套支持Node環境的虛擬機,通常免費的不多支持,這時必須得掏腰包了。linux

  • 後臺簡陋,許多功能還未完善,不過寫做這一塊沒啥大問題。nginx

亮點

  • 採用Ghost中文版最新版0.6.3保證了最新功能以及教程的實時性,目前已經更新到了0.7.0,教程所寫日期時,最新版本爲0.6.3。git

  • 採用Mysql做爲數據庫,通用快速上手,這裏也能夠用其餘數據庫好比Sqlite。github

  • Nginx做爲反向代理,配置多個Ghost博客,同時也能增長了網站的負載。web

  • 很是簡易化的Ubuntu的Node.js安裝方法,不用編譯打包。sql

  • 安裝系統服務,開機重啓Ghost服務,免去往後之後操做。

  • 採用Font Awesome做爲社交按鈕,也能夠自定義圖標。

  • highlight.js 做爲主題的代碼高亮引擎

  • 整合Disqus評論系統,創建屬於本身的Discuss圈

  • 國外優秀免費Ghost主題資源分享

  • 整合百度統計以及百度分享

廢話很少說,直接上乾貨!

環境

Ubuntu 14.04,MySql 5.5.43,Nginx 1.4.6,Node 0.10.33

步驟

安裝MySql

# 安裝MySql
$ apt-get update # 更新組件
$ apt-get install mysql-server mysql-client -y # 快速安裝-y表明默認選擇y省去了回車,這時只須要設置mysql的root密碼

# 設置mysql的編碼
$ sudo vi /etc/mysql/my.cnf # 搜索到[mysqld] 插入collation-server = utf8_unicode_ci init-connect = 'SET NAMES utf8' character-set-server = utf8
$ service mysql restart # 重啓生效
$ mysql -u root -p # 輸入上面設置的密碼
$ show variables like 'char%'
$ show variables like 'collation%' # 查看是否改爲utf-8了不然以後數據庫內存中文存放的是亂碼

# 建立Ghost數據庫
$ create database mousycoder # 這裏把mousycoder換成你想換成的數據庫名,建議和域名保持一致,方便之後維護。
$ create database mousycoderDev # 這個是Ghost啓動有2種模式 一種開發模式 一種生產模式 這個是開發模式的數據庫,若是不想那麼麻煩,只用創建一個數據庫便可。
$ create user 'mousycoder'@'localhost' identified by '123456' # 這裏新建一個用戶mousycoder密碼爲123456,固然個人密碼確定不是123456咯,換成你本身的啦 = =,一樣也建議用戶名,數據庫名,服務名,組名,都和域名保持一致,這裏是創建一個只有本地操做的用戶,遠程沒法操做,安全策略。
$ grant all privileges on mousycoder.* to 'mousycoder'@'localhost'
$ grant all privileges on mousycoderDev.* to 'mousycoder'@'localhost' # 這裏是賦予mousycoder這個本地用戶全部對數據庫mousycoder以及mousycoderDev的權限,固然這裏你能夠根據實際須要賦予權限。
$ FLUSH PRIVILEGES # 從新讀取權限表中的數據到內存,不用重啓mysql就可讓權限生效,好處能夠防止修改錯誤後,沒有餘地再去反悔。

補充說明

  • mysql 移除匿名帳戶,禁用root遠程登陸: $ sudo mysql_secure_installation; 回答n,y,y,y,y

  • grant 用法:grant 權限1,權限2,…權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by '口令'
    其中權限1,權限2,…權限n表明 select,insert,update,delete,create,drop,

index,alter,grant,reload,references,shutdown,process,file14個權限。
例如:`grant select,insert,update,delete,create,drop on mousycoder.employee to
hello@10.163.225.87 identified by ‘123456′`
表明給來自10.163.225.87的用戶hello分配可對數據庫mousycoder的employee表進行select,insert,update,delete,create,drop等操做的權限,並設定口令爲123456。

安裝Nginx

# 安裝nginx
$ apt-get install nginx -y 
$ apt-get install curl -y # curl是一種命令行工具,做用是發出網絡請求,而後獲得和提取數據。
$ curl -i 127.0.0.1 # 確保Nginx 運行,默認監聽80端口

# 設置web目錄和cache目錄
$ mkdir /var/www
$ mkdir -p /var/cache/nginx # -p 能夠一會兒把中間路徑中不存在的文件夾也一塊兒創建,很是實用
$ chown www-data:www-data /var/www # nginx安裝會自動創建用戶www-data而且默認用這個用戶操做
$ chown www-data:www-data /var/cache/nginx

# 修改配置文件(通常不操做這個文件)
$ cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.old # 備份原來配置
$ vi /etc/nginx/nginx.conf # 能夠修改默認用戶爲其餘用戶

# 爲Ghost單首創建nginx配置文件
$ rm /etc/nginx/sites-enabled/default # 刪掉默認的配置
$ vi /etc/nginx/sites-available/mousycoder # 創建一個nginx配置文件

nginx配置文件

server {
    listen 0.0.0.0:80; # 監聽的端口號
    server_name mousycoder.com; # 把mousycoder.com換成本身的域名,若是沒有域名或者網站還沒備案下來這裏能夠寫ip,例如120.25.150.209,若是配置多個網站的話,這裏能夠經過不一樣的端口對應不一樣的網站,例如:120.25.150.209:81等 前提是這些端口外網還能訪問。
    access_log /var/log/nginx/mousycoder.log;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_set_header X-Real-IP $remote_addr;

        proxy_pass http://127.0.0.1:2368;  # 這裏是Ghost啓動時的默認端口,能夠根據實際狀況變化,默認也能夠
        #proxy_buffering off;
        proxy_redirect off;
    }
}

而後重啓服務

$ ln -s /etc/nginx/sites-available/mousycoder /etc/nginx/sites-enabled/mousycoder # 創建軟連接到到實際配置路徑,方便統一維護配置文件變化。
$ service nginx restart # nginx安裝好時已經默認註冊了系統的服務,咱們就能夠直接重啓nginx服務,讓配置文件生效

補充說明

nginx 這裏主要是作端口轉發映射做用,固然它很是能抗壓。

安裝Node.Js

$ wget http://nodejs.org/dist/v0.10.39/node-v0.10.39-linux-x64.tar.gz 
$ tar zxf node-v0.10.39-linux-x64.tar.gz && cd node-v0.10.39-linux-x64
$ cp bin/* /usr/bin # 拷貝執行目錄,至關於去設置一個環境變量到用戶的bin目錄

補充說明

這裏下載的並非最新版的nodejs,爲了穩定
Ghost官網解釋

從 Ghost 0.6.0 版本開始,Ghost 中文版完整包已經集成了 Nodejs 0.12 版本的 sqlite3 原生庫,在 windows(32/64 bit)、Linux(32/64 bit)、Mac(64 bit)操做系統上能夠直接在 Nodejs 0.10.x 和 0.12.x 版本上運行。可是,咱們強烈建議使用 Node.js 0.10.x 最新版本。對 Node.js 0.12.x 版本的支持還有待考驗!

詳情見 ghost中文網,固然NodeJs有不少種安裝方法,我的以爲這種是在這裏最適合的方法。

安裝Ghost

下載Ghost

$ cd /var/www/
$ curl -L http://dl.ghostchina.com/Ghost-0.6.3-zh.zip -o mousycoder.zip
$ unzip mousycoder.zip -d mousycoder
$ cd mousycoder/

配置Ghost

Ghost有兩種運行模式:開發模式和產品模式,經過config.js配置

$ cp config.example.js config.js
$ vi config.js

在config.js配置文件裏配置

- production # 生產模式
    production:{
       url: 'http://mousycoder.com',
       main:{},
       database:{
           client :'mysql',
           connection:{
               host:'127.0.0.1',
               user:'mousycoder',  # 數據庫鏈接的用戶
               password:'123456',
               database:'mousycoder',
               charset:'utf-8'
           }
       }
    }

- development # 開發模式
    production:{
       url: 'http://mousycoder.com',
       main:{},
       database:{
           client :'mysql',
           connection:{
               host:'127.0.0.1',
               user:'mousycoder',  # 數據庫鏈接的用戶
               password:'123456',
               database:'mousycoderDev',
               charset:'utf-8'
           }
       }
    }

安裝與運行

根據package.json 安裝依賴包,進入當前mousycoder目錄下

$ cd /var/www/mousycoder
$ npm install --production  # 產品模式;只安裝運行的包
$ npm install # 開發模式,默認是開發模式

用mousycoder運行Ghost(非root帳戶運行Ghost更安全)

$ adduser -shell /bin/bash --gecos 'mousycoder blog' mousycoder
$ chown -R mousycoder:mousycoder /var/www/mousycoder

安裝forever,保持Ghost一直在後臺運行

$ cd /var/www/mousycoder
$ npm install forever -g # 全局安裝forever模塊
$ NODE_ENV=production forever start index.js # 生產模式後臺運行ghost

安裝系統服務

$ curl https://raw.githubusercontent.com/TryGhost/Ghost-Config/master/init.d/ghost -o /etc/init.d/mousycoder # 下載Ghost提供的腳本到/etc/init.d/目錄,該目錄是系統服務目錄
$ chmod +x /etc/init.d/mousycoder # 給腳本賦予執行權限
$ usermod -aG mousycoder www-data # 把www-data用戶加入mousycoder組,讓其能夠操做源文件等目錄
$ update-rc.d mousycoder defaults # 用update-rc.d 安裝服務 mousycoder
$ update-rc.d mousycoder enable # 刷新一遍服務,防止以前有重名的
$ service mousycoder status # 查看mousycoder 服務的狀態
$ service mousycoder start # 這樣開機就會自動啓動ghost生產環境,不信reboot一下

補充說明

  • curl 經常使用命令 詳情能夠參考阮一峯的博客

$ curl -L https://raw.githubusercontent.com/TryGhost/Ghost-Config/master/init.d/ghost -o ghost # -L 解決網站地址自動跳轉後拿不到文件
$ curl -v www.baidu.com  # 顯示詳細過程包含http頭
$ curl -u username:password url 解決頁面須要受權輸入用戶名密碼狀況
$ curl -u username --data "param1=value1&param2=value2" https://api.github.com  # post請求
$ curl -I -X DELETE https://api.github.com  # 解決get post之外的請求方式
$ curl --form "fileupload=@filename.txt" http://hostname/resource  # 上傳文件
  • chmod 命令

$ chmod -R a-w abc # 取消/abc目錄的-w(寫)權限

drwxr-xr-x 第一列d 目錄 第2-4列 擁有者權限 rwx 5-7列 r-x同組用戶權限 r-x是其餘組用戶權限,其中rwx對應4,2,1

  • 系統服務啓動順序

$ update-rc.d A start 50 1 2 3 4 5 stop 51 0 6
$ start 50 1 2 3 4 5 # 表示在1,2,3,4,5這5個運行級別中,按前後順序,由小到大執行,第50個開始運行腳本
$ stop 50 0 6 # 表示在0,6這兩個運行級別中,按照前後順序,由小到到執行,第52箇中止這個腳本運行
$ update-rc.d mousycoder remove # 卸載mousycoder開機服務

啓動

打開瀏覽器,輸入以前配置的ip或者域名

首頁 http://hostname.com/ghost
Ghost後臺 http://hostname.com/ghost

如今你就能夠盡情享受Ghost帶給你的極致簡潔了,快來書寫吧!

主題

主題地址:https://github.com/mousycoder/mouse

歡迎fork

附錄


感謝您的耐心閱讀,若是您發現文章中有一些沒表述清楚的,或者是不對的地方,請給我留言,你的鼓勵是做者寫做最大的動力,
若是您認爲本文質量不錯,讀後以爲收穫很大,不妨小額贊助我一下,讓我更有動力繼續寫出高質量的文章。

  • 支付寶

  • 微信

做 者 : @mousycoder

原文出處 : http://mousycoder.com/2015/10/12/classic-tutorial-of-ghost-blog/

創做時間:2015-7-1

更新時間:2015-10-14

相關文章
相關標籤/搜索