Ghost - 博客搭建


文章參考自 kitten 的這篇文章
和 Ghost 官網王賽寫的這篇文章
那么既然已經有人寫了很詳細的文章蔼水,為什么我還要寫呢?因為坑是填不滿的,本人按照教程第一次搭建了兩天,沒搭成功箩祥,第二次又搭建了半天才完成,我會將教程+上我填上的坑告訴大家肆氓,希望大家能夠成功搭建成自己的博客。


一底瓣、購買域名

  • 這個渠道很多谢揪,就不多加贅述蕉陋,這里我是在萬網上買的域名。
  • 域名解析拨扶。

二凳鬓、購買服務器

  • 我買的是阿里云 50 多塊錢的服務器,配置的是 ubuntu64 位系統(tǒng)患民。
  • 如果前兩步我描述很簡單會為你配置造成困擾的話缩举,請移步這里查看 kitten 寫的前兩章節(jié)的內容,如果還是不夠解決你的問題匹颤,那么請自行百度仅孩,筆者也是從一個服務器一點不通的小白慢慢搭建成功的。

三印蓖、配置服務器

  • 3.1 打開終端(terminal)

輸入命令行:

ssh root@你的IP地址

點擊回車辽慕,輸入你的服務器密碼。


進入服務器.png

如果出現(xiàn)以上文字赦肃,那么恭喜你溅蛉,進入服務器成功。

  • 3.2 安裝 Node.js

依次在終端上輸入以下命令他宛,注釋除外(如果怕打錯請全部復制粘貼):

sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js

>注意:敲上面這句代碼可能會出現(xiàn)這樣的問題:
***add-apt-repository: command not found*** 說的是你的 command 沒有安裝船侧,解決方法就是先安裝命令:

sudo apt-get install python-software-properties
sudo apt-get install software-properties-common

安裝完成之后繼續(xù)執(zhí)行下面的命令:

sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

都執(zhí)行完之后用 -v 命令查看安裝是否成功:

node -v
v0.10.37
npm -v
1.4.28

+ ####3.3 安裝 Nginx

sudo apt-get install nginx

+ ####3.4 安裝 MySQL
    -  Ghost 默認采用 Sqlite3 數(shù)據(jù)庫,但是我還是建議用 MySQL厅各,避免將來由于數(shù)據(jù)多镜撩、訪問量多而導致性能下降。

sudo apt-get install mysql-server mysql-client

安裝過程中系統(tǒng)會讓你給 root(MySQL 數(shù)據(jù)庫的管理賬號) 用戶設置密碼讯检。

![-----2014-08-22-16-27-05.png](http://upload-images.jianshu.io/upload_images/266345-520433f5e5919bb5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
MySQL 安裝后琐鲁,執(zhí)行以下指令進一步加強 MySQL 的安全設置:

sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
//輸入安裝 MySQL 時為 root 賬戶設置的密碼
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
//是否修改 root 賬戶的密碼?前面設置過 root 賬戶的密碼了人灼,如果不打算修改密碼的話围段,輸入 'n'
Change the root password? [Y/n] n
... skipping.
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
//是否刪除匿名用戶?
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
//是否禁止 root 賬戶遠程登錄投放?
Disallow root login remotely? [Y/n] y
... Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
//是否刪除 MySQL 默認創(chuàng)建的 test 數(shù)據(jù)庫奈泪,并刪除所有對 test 數(shù)據(jù)庫的權限設置?
Remove test database and access to it? [Y/n] y

  • Dropping test database...
    ... Success!
  • Removing privileges on test database...
    ... Success!
    Reloading the privilege tables will ensure that all changes made so far
    will take effect immediately.
    //是否重新加載權限表灸芳?
    Reload privilege tables now? [Y/n] y
    ... Success!
    Cleaning up...
    All done! If you've completed all of the above steps, your MySQL
    installation should now be secure.
    Thanks for using MySQL!
MySQL 到此安裝結束涝桅。
下面設置 utf8 
執(zhí)行這行命令:

cd /etc/mysql

編輯 my.conf 文件

vi my.cnf

你將看到這么個文本擺在你的面前。

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

Here is entries for some specific programs

The following values assume you have at least 32M ram

This was formally known as [safe_mysqld]. Both versions are currently parsed.

[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]

* Basic Settings

user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

那么你的任務是什么呢烙样?將光標定位到 ```[mysqld]``` 位置冯遂,按 **"i"** ,這時可以修改了谒获,添加如下設置:

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

這是修改之后的文本:

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

Here is entries for some specific programs

The following values assume you have at least 32M ram

This was formally known as [safe_mysqld]. Both versions are currently parsed.

[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

* Basic Settings

user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking


修改完成之后蛤肌,先按 ```esc``` 壁却,然后輸入 ```:wq``` ,退出MySQL。
之后我們來檢一下是否修改完成裸准?
1.進入 MySQL 命令行界面:

mysql -uroot -p

之后輸入之前你自己設置的MySQL密碼展东。
2.輸入指令  

show variables like 'char%';

 查看輸出是否如下所示:
![數(shù)據(jù)庫配置.png](http://upload-images.jianshu.io/upload_images/266345-1fa81dc04ce2be10.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#####注意:這里如果和我這個 Vlaue 值有的對應不上需要重新啟動數(shù)據(jù)庫,那么怎么在 ubuntu 下重新啟動 MySQL 呢炒俱?輸入:

service mysql restart

這個時候再進入 mysql 去查看一下配置就和我這個一樣啦盐肃。
3.輸入指令

show variables like 'collation%';

檢查結果是否如圖:如果一樣,恭喜你可以跳入下一個坑权悟。
![屏幕快照 2015-10-29 下午7.37.31.png](http://upload-images.jianshu.io/upload_images/266345-443b3e85eb89babf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
+ ####3.5 創(chuàng)建數(shù)據(jù)庫
我們希望 Ghost 搭配 MySQL 數(shù)據(jù)庫運行砸王,因此需要為 Ghost 創(chuàng)建一個 MySQL 數(shù)據(jù)庫。前面已經安裝好 MySQL 了僵芹,現(xiàn)在我們就來創(chuàng)建數(shù)據(jù)庫吧:

mysql -uroot -p -e 'create database ghost;'

系統(tǒng)會提示你輸入 MySQL 數(shù)據(jù)庫的 root 賬戶密碼(還記得前一章節(jié)安裝 MySQL 時設置的密碼嗎处硬?)。指令執(zhí)行之后就創(chuàng)建了一個叫做 ghost 的數(shù)據(jù)庫拇派,將來荷辕,你的文章就是存在這里嘍!
+ ####3.6 配置Nginx
我們希望利用 Nginx 做 Ghost 的前端代理服務件豌。OK疮方, 輸入下面命令進入 */etc/nginx/sites-available/* 目錄:

cd /etc/nginx/sites-available/

然后輸入下面命令  , 編輯ghost.conf

sudo touch ghost.conf
sudo vi ghost.conf

server
{
listen 80;
server_name mitchell-dream-god.com; //替換為你自己的域名!
location / { proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
}

完成之后按```etc``` , ```:wq``` 退出編輯茧彤。
然后我們?yōu)?ghost.conf 文件做一個軟鏈接到 */etc/nginx/sites-enabled/* 目錄下:

sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf

+ ####3.7 安裝 forever
如果是通過 npm start 啟動 Ghost 的話骡显,只要你關閉了遠程連接,Ghost 也就停了曾掂,這個我們當然不希望嘍惫谤。幸好,有 forever 工具幫我們解決這個問題珠洗。接下來執(zhí)行以下指令來安裝forever :

sudo npm install forever -g


+ ####3.8 安裝 Ghost
    - #####3.8.1 下載解壓工具

sudo apt-get install unzip

    - #####3.8.2 下載 Ghost 壓縮包

cd /srv/
sudo curl -L http://dl.ghostchina.com/Ghost-0.5.0.zip -o ghost.zip

>如果想下載更新的版本去 [Ghost 官網](!http://www.ghostchina.com/) 查看地址即可溜歪。
    - #####3.8.3 解壓

sudo unzip ghost.zip -d ghost

現(xiàn)在,```/srv/ghost/``` 目錄下面就是我們的 Ghost 系統(tǒng)了许蓖!
    - #####3.8.4 修改 Ghost 配置文件
我們進入 Ghost 系統(tǒng)目錄蝴猪,為 Ghost 增加配置文件并配置數(shù)據(jù)庫:

cd /srv/ghost/
sudo cp config.example.js config.js sudo
vi config.js

最后一條指令是用 vim 打開 config.js 文件進行編輯。我們只修改 production 一節(jié)的配置信息膊爪,修改為如下形式(注意按照你自己的實際情況替換W在濉):

// ### Production
// When running Ghost in the wild, use the production environment
// Configure your URL and mail settings here
production: {
url: 'http://ghostchina.com', //替換為你自己的域名。
mail: {},
database: {
updateCheck: false,
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'root', //我們暫且用 MySQL 的 root 賬戶
password : '123456', //輸入你的 MySQL 密碼
database : 'ghost', //我們前面為 Ghost 創(chuàng)建的數(shù)據(jù)庫名稱
charset : 'utf8'
}
},
server: {
// Host to be passed to node's net.Server#listen()
host: '127.0.0.1',
// Port to be passed to node's net.Server#listen(), for iisnode set this to process.env.PORT
port: '2368'
}
},

完成之后按 ```etc``` ```:wq``` 退出編輯米酬。
    - #####3.8.5 安裝 Ghost 依賴庫
打開 Ghost 系統(tǒng)的目錄下面的 package.json 文件沛豌,將 "sqlite3": "2.2.0", 這一行刪除掉(注意,你看到的 sqlite 版本可能會不一樣赃额,但是加派,只是 sqlite3 字樣阁簸,刪除即可,*不要注釋上,一定要把那一行刪除了*)哼丈。
接下來,進入存放 Ghost 系統(tǒng)的目錄并安裝 Ghost 所依賴的 npm
 包:

cd /srv/ghost/
sudo npm install --production

很快筛严,所有依賴包就安裝好了醉旦,當前目錄下會多出一個 ```node_modules
``` 目錄。
    - #####3.8.6 啟動 Ghost
執(zhí)行如下指令重啟 Nginx桨啃、啟動 Ghost:
>```
sudo service nginx restart 

如果發(fā)現(xiàn)重新啟動失敗车胡,怎么辦?這里的原因是因為 /etc/nginx/sites-available 中的default文件夾和 我們創(chuàng)建的 ghost.conf 文件沖突產生的照瘾,解決方式就是刪除我們創(chuàng)建的文件匈棘,先進入 /etc/nginx/sites-available文件夾并使用刪除命令:

/etc/nginx/sites-available# rm -rf ghost.conf

這個時候你再次輸入上面代碼重新啟動 nginx 會發(fā)現(xiàn)成功了。接著執(zhí)行下面的命令析命。

cd /srv/ghost 
sudo NODE_ENV=production forever start index.js
注意:至此主卫,所有的操作都做完了。現(xiàn)在打開瀏覽器并輸入你的域名查看一下狀態(tài)鹃愤!如果是這樣就成功了:
Ghost.png

如果出現(xiàn) Nginx 歡迎頁面簇搅,那就出現(xiàn)問題啦!H硗隆4窠(我?guī)状味际翘稍诹诉@里,幾個大神貌似沒遇到這種問題凹耙,但是我確實遇到啦姿现!接下來我來說說怎么解決?)


四肖抱、最后的坑的解決方案

  • 還記得我們所做的 Nginx 配置么备典? 進入我們的 Nginx 目錄,我們來查看一下我們的 Nginx 的引用虐沥,
cd /etc/nginx/
vi nginx.conf

查看 include 這兩行熊经,其實主要是下面這行,我們可以看到我們 Nginx 引用的是 nginx 文件夾下 sites-enabled 文件夾中的文件欲险,接著我們去看看 sites-enabled 中的文件是否配置正確镐依?


include.png

進入 sites-enabled 文件夾,查看文件

cd /etc/nginx/sites-enabled
ls

你將會看到兩個文件天试,一個是 default 和 ghost.conf 槐壳,還能想起來我們的 ghost.conf 么?我們是在 sites-available 中創(chuàng)建的 ghost.conf 并且軟鏈接到這里產生的 ghost.conf 文件喜每,那么你用 vim 來打開這個文件

vi ghost.conf

打開之后务唐,傻啦雳攘,啥東西都沒有啊,咋辦把之前在 available 中添加的那些內容添加到這里:

server 
{
 listen 80;
 server_name mitchell-dream-god.com; //替換為你自己的域名枫笛!
 location / { proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header Host $http_host;
 proxy_pass http://127.0.0.1:2368;
 }
}

完成之后按etc , :wq 退出編輯吨灭。

好了,這回應該沒有問題了刑巧。如果還有什么問題喧兄,歡迎繼續(xù)和我討論。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末啊楚,一起剝皮案震驚了整個濱河市吠冤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恭理,老刑警劉巖拯辙,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異颜价,居然都是意外死亡涯保,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門拍嵌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遭赂,“玉大人,你說我怎么就攤上這事横辆∑菜” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵狈蚤,是天一觀的道長困肩。 經常有香客問我,道長脆侮,這世上最難降的妖魔是什么锌畸? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮靖避,結果婚禮上潭枣,老公的妹妹穿的比我還像新娘。我一直安慰自己幻捏,他們只是感情好盆犁,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著篡九,像睡著了一般谐岁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天伊佃,我揣著相機與錄音窜司,去河邊找鬼。 笑死航揉,一個胖子當著我的面吹牛塞祈,可吹牛的內容都是我干的。 我是一名探鬼主播帅涂,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼织咧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了漠秋?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤抵屿,失蹤者是張志新(化名)和其女友劉穎庆锦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轧葛,經...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡搂抒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了尿扯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片求晶。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖衷笋,靈堂內的尸體忽然破棺而出芳杏,到底是詐尸還是另有隱情,我是刑警寧澤辟宗,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布爵赵,位于F島的核電站,受9級特大地震影響泊脐,放射性物質發(fā)生泄漏空幻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一容客、第九天 我趴在偏房一處隱蔽的房頂上張望秕铛。 院中可真熱鬧,春花似錦缩挑、人聲如沸但两。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镜遣。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悲关,已是汗流浹背谎僻。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寓辱,地道東北人艘绍。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像秫筏,于是被迫代替她去往敵國和親诱鞠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內容