從零開始搭建Ghost博客

dyydp 9年前發布 | 96K 次閱讀 Ghost 博客系統

Ghost是一款非常出色的開源博客平臺,無論是從架構、設計、易用性,它都要比Wp要好,非常喜歡,從Wp切換到Ghost感覺非常好。

優勢

  • 從技術上,采用NodeJs,在可預見的未來里,無疑比PHP有更多優勢,并發能力遠超Wp很多。
  • 從易用性上,專注寫作,不帶評論,超炫皮膚,完美支持MarkDown,沒有Wp那么臃腫,回歸到博客最原始的狀態,傳遞文字最原始的力量。
  • 容易二次開發,好維護。

劣勢:

  • 太新了,一切問題都得自己解決,不過這樣更加鍛煉了我們的能力,在解決問題的途中,發現了很多美麗的風景。
  • 后臺簡陋,沒有太多功能,其他功能得自己改造,DIY精神得到完美釋放。

本文將帶你體驗飛一般的Ghost之旅

亮點:

  • 采用 Ghost中文版最新版0.6.3 保證了最新功能以及教程的實時性
  • 采用Mysql作為數據庫,保證了教程的通用性
  • Nginx作為反向代理,配置多個Ghost博客
  • 非常簡易化的Node.js安裝方法
  • 安裝系統服務,開機重啟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 //搜索到[mysqlld] 插入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了否則之后數據庫內存中文存放的是亂碼,[具體原因](http://www.cnblogs.com/hongfei/archive/2011/12/29/set-names-utf8.html)

* 創建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 權限1,權限2,…權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;其中權限1,權限2,…權限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個權限,例如: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配置文件
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 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中文版0.6.3下載

# 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
- 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 -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首頁
http://hostname.com/ghost ghost后臺

 本文由用戶 dyydp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!