開始搭建新的博客的第一步
Ghost 文檔還不完備,仍在繼續(xù)完善中,每天可能都會(huì)有更新和改進(jìn)。如果你遇到了難題或者有改進(jìn)意見,請(qǐng)告訴我們。
Ghost 構(gòu)建于 Node.js 平臺(tái)之上,支持0.10.*
版本(最新穩(wěn)定版)的 Node.js。
在你的本地計(jì)算機(jī)上運(yùn)行 Ghost 其實(shí)很簡(jiǎn)單,前提是你已經(jīng)安裝了 Node.js。
Node.js 是構(gòu)建快速、擴(kuò)展性良好并且高效的 web 應(yīng)用的開發(fā)平臺(tái)。在過(guò)去的20年間,web 從一堆靜態(tài)頁(yè)面進(jìn)化為能夠支持復(fù)雜 web 應(yīng)用(例如 Gmail 和 facebook)的平臺(tái)。而 JavaScript 這一編程語(yǔ)言是這一進(jìn)程的推進(jìn)劑。
Node.js 讓我們具有了開發(fā)服務(wù)器端 JavaScript 程序的能力。而在以前,JavaScript 只能在瀏覽器上運(yùn)行,如果要開發(fā)服務(wù)器端的程序,就要使用 PHP 一類的編程語(yǔ)言了。如果能夠用同一種開發(fā)語(yǔ)言來(lái)完成 web 應(yīng)用的開發(fā),這將是多么棒!并且,Node.js 還賦予了前端開發(fā)工程師更大的能力。
Node.js 讓這一切變?yōu)榭赡?,其原理是?duì) Google Chrome 瀏覽器所用的 JavaScript 引擎進(jìn)行了包裝,讓它能夠跨平臺(tái)運(yùn)行。也就是說(shuō),你能在自己的電腦上非??焖俚陌惭b Ghost 并讓它非??旖?、方便的跑起來(lái)。 接下來(lái)我們?cè)敿?xì)講解如何在 Mac、Windows 或 Linux 上安裝 Ghost,另外還介紹了如何在服務(wù)器或托管空間上部署 Ghost。
如果你厭煩了手工安裝 Node.js 和 Ghost,可以試試 BitNami 團(tuán)隊(duì)開發(fā)的 Ghost 安裝工具,它提供了對(duì)所有主流平臺(tái)的支持。
Ghost 支持的平臺(tái):MAC WINDOWS LINUX 如果你決定在你的服務(wù)器或托管空間上部署 Ghost,這對(duì)我們是個(gè)非常好的消息!下面的文檔可以給你詳細(xì)的部署指南,從手工設(shè)置到一鍵安裝包都有涉及。
請(qǐng)記住,Ghost 還非常新,它的開發(fā)小組還在非常努力的實(shí)現(xiàn)新的功能。如果你需要升級(jí) Ghost 到最新版本,請(qǐng)參考 Ghost 升級(jí)文檔。 如果遇到任何問(wèn)題,請(qǐng)參考除錯(cuò)指南,如果你的問(wèn)題還不能得到解決,請(qǐng)?jiān)?Ghost 論壇提問(wèn),這里聚集了 Ghost 核心小組的成員和社區(qū)成員,他們會(huì)非常樂(lè)意幫你解決問(wèn)題。
為了安裝 Node.js 和 Ghost 到你的 mac 上,你需要打開一個(gè)終端窗口。你可以通過(guò)打開 spotlight 并輸入 "Terminal" 打開一個(gè)終端。
echo $PATH
檢查 '/usr/local/bin/' 路徑已經(jīng)存在于環(huán)境變量中
注意: 如果 '/usr/local/bin' 沒(méi)有添加到 $PATH 環(huán)境變量, 查閱 故障排除提示 解決這個(gè)問(wèn)題。
如果你遇到了困難,可以查閱 這里
npm install --production
注意是兩個(gè) -
npm start
啟動(dòng)開發(fā)模式下的 Ghost127.0.0.1:2368
即可查看最新搭建的 Ghost 博客127.0.0.1:2368/ghost
并且設(shè)置管理員用戶并登陸 Ghost 管理員http://wiki.jikexueyuan.com/project/ghost-user-guide/images/install-ghost-mac.gif" alt="" />
cd Downloads/ghost-#.#.#
(替換 #
為你下載的 Ghost 的版本)。npm install --production
注意是兩個(gè) -
npm start
啟動(dòng)開發(fā)模式下的 Ghost。127.0.0.1:2368
即可查看最新搭建的 Ghost 博客。127.0.0.1:2368/ghost
并且設(shè)置管理員用戶并登陸 Ghost 管理員。http://wiki.jikexueyuan.com/project/ghost-user-guide/images/install-ghost-win-2.gif" alt="" />
.tar.gz
存檔或者是通過(guò)包管理器安裝。你可以根據(jù) 這篇文章 的說(shuō)明來(lái)從包管理器安裝 Nodenode -v
和 npm -v
檢查 Node 和 npm 是否安裝成功$ curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
$ unzip -uo ghost.zip -d ghost
在你解壓好之后,打開一個(gè)終端:
$ cd /你的 Ghost 解壓目錄
npm install --production
注意是兩個(gè) -
$ npm start
Ghost 將會(huì)運(yùn)行在 127.0.0.1:2368
你可以在 config.js 中修改 IP 地址和端口
在瀏覽器中,訪問(wèn) 127.0.0.1:2368
即可查看最新搭建的 Ghost 博客
127.0.0.1:2368/ghost
并且設(shè)置管理員用戶并登陸 Ghost 管理員準(zhǔn)備好開始 Ghost 之旅了嗎? OK !
第一個(gè)需要你做的決定就是,是否選擇自己手動(dòng)安裝 Ghost ,還是選擇從安裝程序安裝。
目前有以下幾種使用簡(jiǎn)單的安裝程序安裝的方法:
你需要一個(gè)主機(jī)空間,或者可以安裝 Node.js 的服務(wù)器。 這意味著著比如云空間 (Amazon EC2, DigitalOcean, Rackspace Cloud), VPS (Webfaction, Dreamhost) 或者其他擁有 SSH (terminal) 并且允許安裝 Node.js 的平臺(tái)。目前有很多這種比較便宜的平臺(tái)。
目前還不能在 cPanel 風(fēng)格的共享主機(jī)(通常用于 PHP)上運(yùn)行。雖然有些(cPanel)支持 Ruby 將來(lái)也許支持 Node.js 的主機(jī)也同樣不行。
不幸的是,一些 Node.js 主機(jī)提供商比如說(shuō) Nodejitsu 和 Heroku 與 Ghost 并不兼容。它們會(huì)工作,但會(huì)刪除你的文件,所以你上傳的圖片和數(shù)據(jù)庫(kù)的內(nèi)容都會(huì)消失。Heroku 支持 MySQL 數(shù)據(jù)庫(kù),你可以使用它來(lái)彌補(bǔ)這個(gè)問(wèn)題,但你仍然會(huì)丟失一些上傳的圖片。
以下鏈接包含了如何開始和運(yùn)行的說(shuō)明:
前面提到的啟動(dòng) Ghost 使用 npm start
命令。這是一個(gè)在開發(fā)模式下啟動(dòng)和測(cè)試的不錯(cuò)的選擇,但是通過(guò)這種命令行啟動(dòng)的方式有個(gè)缺點(diǎn),即當(dāng)你關(guān)閉終端窗口或者從 SSH 斷開連接時(shí),Ghost 就停止了。為了防止 Ghost 停止工作,有兩種方式解決這個(gè)問(wèn)題。
你可以使用 forever
以后臺(tái)任務(wù)運(yùn)行 Ghost 。forever
將會(huì)按照 Ghost 的配置,當(dāng)進(jìn)程 crash 后重啟 Ghost。
npm install forever -g
安裝 forever
forever
從 Ghost 安裝目錄運(yùn)行,輸入 NODE_ENV=production forever start index.js
forever stop index.js
停止 Ghostforever list
檢查 Ghost 當(dāng)前是否正在運(yùn)行流行的 Linux 發(fā)行版——例如 Fedora, Debian 和 Ubuntu,都包含一個(gè) Supervisor 包:一個(gè)進(jìn)程控制系統(tǒng),允許在啟動(dòng)的時(shí)候無(wú)需初始化腳本就能運(yùn)行 Ghost。不像初始化腳本一樣,Supervisor 可以移植到不同的發(fā)行版和版本。
apt-get install supervisor
yum install supervisor
easy_install supervisor
service supervisor start
確保 Supervisor 運(yùn)行/etc/supervisor/conf.d/ghost.conf
,例如:[program:ghost]
command = node /path/to/ghost/index.js
directory = /path/to/ghost
user = ghost
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/ghost.log
stderr_logfile = /var/log/supervisor/ghost_err.log
environment = NODE_ENV="production"
supervisorctl start ghost
supervisorctl stop ghost
詳細(xì)內(nèi)容請(qǐng)參閱 Supervisor 文檔。
Linux 系統(tǒng)在啟動(dòng)的時(shí)候會(huì)運(yùn)行初始化腳本。這些腳本通常存在于 /etc/init.d 。為了讓 Ghost 一直運(yùn)行下去甚至自動(dòng)重啟,你可以設(shè)置一個(gè)初始化腳本來(lái)完成這個(gè)任務(wù)。以下的例子工作在 Ubuntu ,并且在 Ubuntu 12.04 下測(cè)試通過(guò)。
$ sudo curl https://raw.github.com/TryGhost/Ghost-Config/master/init.d/ghost \
-o /etc/init.d/ghost
使用 nano /etc/init.d/ghost
命令打開文件并檢查以下內(nèi)容:
將 GHOST_ROOT
變量的值更換為你的 Ghost 安裝路徑
檢查 DAEMON
變量的值是否和 which node
的輸出值相同
$ sudo useradd -r ghost -U
$ sudo chown -R ghost:ghost /你的 Ghost 安裝目錄
$ sudo chmod 755 /etc/init.d/ghost
$ sudo service ghost start
$ sudo service ghost stop
$ sudo service ghost restart
$ sudo service ghost status
$ sudo update-rc.d ghost defaults
$ sudo update-rc.d ghost enable
為了保證你的用戶可以更改 Ghost 目錄里的文件和默認(rèn)的 config.js ,需要將你加入 ghost 用戶組中: $ sudo adduser 你的用戶名 ghost
使用 forever 和如何在 ubuntu 下建立 Ghost 守護(hù)進(jìn)程的文檔即將發(fā)布!
如果你已經(jīng)讓 Ghost 一直運(yùn)行了,你也可以設(shè)置一個(gè)代理服務(wù)器讓你的博客可以使用域名訪問(wèn)。以下的示例假定你的操作系統(tǒng)是 Ubuntu 12.04 ,使用 Nginx 作為你的Web服務(wù)器,已經(jīng)使用以上任意一種方法讓 Ghost 在后臺(tái)運(yùn)行。
$ sudo apt-get install nginx
這個(gè)命令將會(huì)安裝nginx并且設(shè)定好所有必需的目錄和基礎(chǔ)配置。
配置你的站點(diǎn)
/etc/nginx/sites-available
創(chuàng)建一個(gè) ghost.conf
文件sudo nano /etc/nginx/sites-available/ghost.conf
) 把以下內(nèi)容復(fù)制進(jìn)這個(gè)文件 server {
listen 80;
server_name example.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
}
將 server_name
的值改為你的域名
sites-enabled
文件夾下:$ sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf
$ sudo service nginx restart
更新 Ghost 是非常簡(jiǎn)單的。
有幾種方法可供選擇。下面描述了將會(huì)發(fā)生什么,并且你要按照 點(diǎn)擊風(fēng)格 和通過(guò)一個(gè) 命令行 一步步實(shí)現(xiàn)。所以你可以自由選擇感覺(jué)最舒適的方法。
備份! 總是在更新前執(zhí)行一次備份。首先請(qǐng)閱讀 備份指南。
Ghost 安裝后,有一個(gè)與左邊圖片相似的文件夾結(jié)構(gòu),包括兩個(gè)主要的目錄 content
和 core
,和其他一些文件。
更新 Ghost 也無(wú)非就是將舊文件替換為新文件,重新運(yùn)行 npm install
更新 node_modules
文件夾,然后重新啟動(dòng) Ghost 使生效。
記住,Ghost 默認(rèn)將所有的自定義數(shù)據(jù),主題,圖片等存儲(chǔ)到 content
目錄下,所以確保此目錄安全!只替換 core
目錄和根目錄下的文件,一切就會(huì)正常。
http://wiki.jikexueyuan.com/project/ghost-user-guide/images/folder-structure.png" alt="" />
/ghost/debug/
并且登錄。點(diǎn)擊藍(lán)色的 EXPORT
按鈕,將會(huì)下載下一個(gè)包含你所有數(shù)據(jù)的 JSON 文件。content/themes
和 content/images
內(nèi)的文件。
注意: 如果你喜歡的話,你也可以通過(guò)復(fù)制
content/data
實(shí)現(xiàn)數(shù)據(jù)庫(kù)的備份。但是 記住 要先停止 Ghost 后再去復(fù)制。
如何更新本地機(jī)器上的 Ghost 呢?
警告: 不要在 mac 現(xiàn)有的安裝上復(fù)制和粘貼整個(gè) Ghost 文件夾。在使用 Transmit 或者其他 FTP 工具上傳的時(shí)候,不要選擇 REPLACE 而要選擇 MERGE。
core
目錄替換舊的 core
目錄content/themes/casper
npm install --production
備份! 總是在更新前執(zhí)行一次備份。首先請(qǐng)閱讀 備份指南 。
下面的截屏視頻顯示了如何按步更新 Ghost ,在從下載了 zip 文件到 ~/Downloads
并且安裝 Ghost到~/ghost
的前提下。**注意:**~在 mac 和 linux 中表示用戶主目錄。
http://wiki.jikexueyuan.com/project/ghost-user-guide/images/upgrade-ghost.gif" alt="" />
步驟如下:
cd ~/Downloads
- 切換到下載的最新版本 Ghost 所在的目錄unzip ghost-0.3.1.zip -d ghost-0.3.3
- 解壓 ghost 為 ghost-0.3.3cd ghost-0.3.3
- 進(jìn)入 ghost-0.3.3
目錄內(nèi)ls
- 顯示當(dāng)前目錄下所有文件和文件夾cp *.md *.js *.txt *.json ~/ghost
- 復(fù)制所有 ~/ghost
目錄下的 .md .js .txt 和 .json 文件cp -R core ~/ghost
- 復(fù)制 core
目錄和它包含的所有內(nèi)容到 ~/ghost
cp -R content/themes/casper ~/ghost/content/themes
- 復(fù)制 casper
目錄和它包含的所有文件到 ~/ghost/content/themes
cd ~/ghost
-切換到 ~/ghost
目錄下npm install --production
- 安裝 Ghostnpm start
- 啟動(dòng) Ghosthttp://ghost.org/zip/ghost-latest.zip
wget http://ghost.org/zip/ghost-latest.zip
下載最新的 zip 文件(或者帶著版本號(hào)的 Ghost 文件的 URL)unzip -uo ghost-0.3.*.zip -d path-to-your-ghost-install
解壓npm install --production
安裝最新的依賴包備份! 總是在更新前執(zhí)行一次備份。首先請(qǐng)閱讀 備份指南 。
http://ghost.org/zip/ghost-latest.zip
cd /var/www/
切換到 Ghost 代碼庫(kù)wget http://ghost.org/zip/ghost-latest.zip
(或者帶著版本號(hào)的 Ghost 文件的 URL)unzip -uo ghost-0.3.*.zip -d ghost
解壓chown -R ghost:ghost ghost/*
確保所有文件都擁有正確的權(quán)限npm install
安裝最新的依賴包service ghost restart
重啟 Ghost 使改變生效如果你最初已經(jīng)從 Node.js 安裝了 Node.js 了,你可以通過(guò)下載并安裝最新版本的 Node.js 實(shí)現(xiàn)更新。這樣新版本會(huì)覆蓋之前安裝的舊版本。
如果你使用的 Ubuntu,或者其他 linux 的發(fā)行版,你可以使用以下命令安裝: sudo apt-get install nodejs
。
你不必重啟服務(wù)器或者 Ghost 。
'/usr/local/bin' 沒(méi)有添加到 $PATH 你可以使用以下步驟添加它:
cd ~
,切換到主目錄ls -al
顯示當(dāng)前文件夾內(nèi)所有文件,包括隱藏的文件.profile
或者 .bash_profile
的文件。如果沒(méi)有,輸入 touch .bash_profile
創(chuàng)建這個(gè)文件open -a Textedit .bash_profile
,用 Textedit 打開這個(gè)文件export PATH=$PATH:/usr/local/bin/
到這個(gè)文件的尾部并保存echo $PATH
,你可以看到 '/usr/local/bin/' 現(xiàn)在存在了
SQLite3 沒(méi)有安裝
SQLite3 包采用的預(yù)構(gòu)建的二進(jìn)制文件適應(yīng)大多數(shù)架構(gòu)。如果你使用的不常用的 linux 或者 unix 版本,你可能發(fā)現(xiàn) SQLite3 報(bào) 404 錯(cuò)誤,也就是說(shuō)系統(tǒng)找不到這個(gè)二進(jìn)制文件。可以強(qiáng)制編譯 SQLite3 解決這個(gè)問(wèn)題。這樣的話需要 python & gcc ,嘗試運(yùn)行 npm install sqlite3 --build-from-source
。
如果你缺失 python 或者 gcc 組件,在 linux 下運(yùn)行 sudo npm install -g node-gyp
, sudo apt-get install build-essential
和 sudo apt-get install python-software-properties python g++ make
然后再重新嘗試從源代碼編譯。
更多關(guān)于構(gòu)建二進(jìn)制文件的信息參閱: https://github.com/developmentseed/node-sqlite3/wiki/Binaries
一旦你成功在你的平臺(tái)上構(gòu)建了二進(jìn)制文件,按照 這里的說(shuō)明 的步驟提交你的 node-sqlite 項(xiàng)目,這樣其他的用戶就不會(huì)遇到同樣的問(wèn)題了。
我不能上傳圖片 如果你在 DigitalOcean Droplet 上安裝 Ghost v0.3.2 ,或者在其他平臺(tái)上使用了 nginx,你可能發(fā)現(xiàn)不能上傳圖片。
實(shí)際情況是,你不能上傳超過(guò) 1 MB 的圖片(嘗試上傳小的圖片),這只是一個(gè)小限制而已。
為了提高限額,你可以編輯 nginx 配置文件來(lái)調(diào)整限制。
sudo nano /etc/nginx/conf.d/default.conf
打開你的配置文件server_name
下一行,添加如下代碼: client_max_body_size 10M;