Ghost是一款很是出色的開源博客平臺,不管是從架構、設計、易用性,它都要比Wordpress要好,界面簡潔,專一寫做,支持在線預覽,在線寫做,不管您是在哪裏,均可以去寫博客,盡情的享受寫做帶來的快感。php
技術上,採用NodeJs,在可預見的將來裏,無疑比PHP有更多優點,併發能力遠超Wordpress,雖然NodeJs後期維護成本高,可是咱們只是借它作博客而已。html
易用性上,專一寫做,評論,超炫皮膚,完美支持 MarkDown,沒有Wordpress那麼臃腫,迴歸到博客最原始的狀態,傳遞文字最原始的力量。node
須要配套支持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 $ 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。
mysql亂碼緣由詳細解能夠參考曾是土木人的博客
# 安裝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 這裏主要是作端口轉發映射做用,固然它很是能抗壓。
$ 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有不少種安裝方法,我的以爲這種是在這裏最適合的方法。
$ 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有兩種運行模式:開發模式和產品模式,經過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¶m2=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