從零開始搭建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 常用命令 詳情可以參考 阮老師的博客
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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!