昨天第一次據說ghost,一時興起今天花了半天的時間從0開始搗鼓,node只會基本使用,js也記不清多久沒碰過了,不涉及高級使用姿式,像改主題、改js文件支持某些特性等等。我的能力不夠,也沒有興趣深刻研究,就是爲了看看這東西怎麼用。node
本身安裝部署的部分就是徹底照搬官方文檔,沒有摻雜任何原創性的姿式,可能略有修改或說明不許確的地方徹底是我的失誤。mysql
Docker部分是本身嘗試用的,由於平時幾乎不本身裝任何服務了,能用docker的就用docker了,這裏也不涉及docker安裝和使用的相關說明。nginx
最後吐槽一點:徹底配置結束後我把這篇所有粘貼發佈到ghost,那叫一個難看,一點都不優雅,看來美仍是須要精心調整的啊。最可惡的是居然不支持表格...,查了一下,有方法支持,可是到此爲止對我我的來說已經沒有必要繼續了。git
爲何把後記放到前面?由於看到這裏若是沒興趣能夠不要繼續浪費時間了...github
到node官網下載安裝包sql
傻瓜安裝,會同時安裝node和npm (macOS)docker
node版本不要過高,官方目前支持到4.xLTS數據庫
下載ghost包,下載地址npm
找個目錄解壓,注意解壓目錄就是安裝目錄json
終端進入解壓目錄執行 npm install -production
,等提示,沒錯誤就OK,有錯誤解決錯誤
安裝結束後執行:npm start
就開啓了ghost服務
訪問localhost:2368
查看主頁,後臺管理地址爲localhost:2368/ghost
安裝forever
npm install forever -g
ghost目錄運行
NODE_ENV=production forever start index.js
結束進程與查看進程
forever stop index.js forever list
安裝PM2
npm install pm2 -g
運行ghost服務
NODE_ENV=production pm2 start index.js --name "Ghost"
中止、重啓服務
pm2 stop Ghost pm2 restart Ghost # reload熱重啓 pm2 reload Ghost
遠程部署,不須要,須要時再看pm2文檔@deploy
初始化腳本,服務自啓動
pm2 startup # 保存當前進程 pm2 save
安裝supervisor並啓動
# debian/ubuntu apt-get install supervisor # fedora/centos yum install supervisor # 運行 service supervisor start
建立ghost啓動腳本 /etc/supervisor/conf.d/ghost.conf
cat > /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" ctrl-d
啓動與中止ghost
supervisorctl start ghost supervisorctl stop ghost
建立腳本
sudo curl https://raw.github.com/TryGhost/Ghost-Config/master/init.d/ghost -o /etc/init.d/ghost
打開該文件修改:GHOST_ROOT
爲ghost安裝目錄,DAEMON
爲node運行目錄
建立用戶並修改權限
sudo useradd -r ghost -U sudo chown -R ghost:ghost /path/to/ghost sudo chmod 755 /etc/init.d/ghost
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
注意當前用戶權限
sudo adduser USERNAME ghost
安裝ghost後,會在安裝目錄生成默認配置文件config.js
,內容複製自config.example.js
文件,能夠修改配置域名、郵箱、數據庫、資源目錄等等。
名稱 | 是否必須 | 描述 |
---|---|---|
url | Y | 設置blog的url |
Y | 設置郵件,用於找回密碼和邀請成員 | |
database | Y | 配置數據庫,默認使用sqlite3 |
server | Y | ghost服務監聽地址與端口 |
compress | N | 開啓gzip壓縮 |
fileStorage | N | 開啓本地存儲 |
updateCheck | N | 禁止使用,用privacy.useUpdateCheck代替 |
privacy | N | 功能管理,如update check,rpc ping, google fonts |
forceAdminSSL | N | 強制開啓後臺管理SSL訪問,需配置SSL |
urlSSL | N | 定義第二個url 用於SSL訪問 |
paths | N | 自定義content目錄 |
maintenance | N | 維護模式 |
referrerPolicy | N | 配置referrer metadata屬性 |
url
配置ghost服務URL,須要保持與訪問地址一致,指定完整域名,例如:http://ghost-blog.com
email
郵箱用於找回密碼,邀請成員,官方說後面會增長郵件訂閱等更多服務
mail: { // 自定義from字段:默認爲 Blog Title <url> from: 'name@address.com', transport: 'SMTP', options: { host: 'smtp.126.com', secureConnection: false, port: 25, auth: { user: 'name@126.com', pass: 'xxxxxx' } } }
ssl 配置
第一種方式是修改url配置前綴https://
,開啓全站SSL
第二種只開啓管理後臺SSL:forceAdminSSL: true
, http訪問會自動跳轉
也能夠禁止http訪問不跳轉,直接返回403:forceAdminSSL: {redirect: false}
database
ghost默認配置使用SQLite做爲數據庫存儲,但同時也支持MySQL和Postgres,Postgres支持有點小問題,這裏不作說明,mysql配置實例:
database: { client: 'mysql', connection: { host : '0.0.0.0', user : 'ghost', password : '', database : 'ghost_testing', charset : 'utf8' }, // 能夠配置pool修改鏈接池大小,這裏是默認值 pool: { min: 2; max: 10 } },
server
配置ghost服務監聽地址:
server: { host: '127.0.0.1', port: '2368' } # 也能夠配置爲socket監聽: server: { socket: { path: 'path/to/socket.sock', permissions: '0666' } }
gzip compression
默認開啓,須要關閉修改:compress: false
fileStorage
開啓/關閉文件存儲,有些服務器不支持持久存儲的文件系統,因此禁止上傳圖片,關閉後:fileStorage: false
,上傳圖片時將只容許輸入圖片url
paths
ghost默認的content目錄就在安裝目錄,能夠經過paths
配置自定義路徑,如:
paths: { contentPath: path.join(__dirname, 'path/to/content/dir') },
privacy
須要關閉全部可配置的功能科室直接配置useTinfoil
,開啓後全部privacy配置都將失效
privacy: { useTinfoil: true } //單獨配置每一項: privacy: { // 更新檢查,不訂閱官方郵件不會收到通知 useUpdateCheck: false, // 使用谷歌字體服務,但不影響theme中使用的Google Fonts useGoogleFonts: false, // 使用哦Gravatar檢測服務,默認會檢查郵箱是不是Gravatar帳戶 useGravatar: false, // 使用RPC Ping服務,默認開啓 useRpcPing: false, useStructureData: false }
maintenance
開啓維護模式將返回503響應:maintenance: { enabled: true }
referrerPolicy
配置referer metadta屬性,更多關於referrer policy參考W3C@referrer
安裝nginx,不在這裏扯
配置
# 建立虛擬主機配置文件 cat > /etc/nginx/sites-available/ghost.conf 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; } } ctrl-d # 軟鏈配置文件 sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf
重啓nginx生效
sudo service nginx restart
解析域名
獲取證書,正式的話就花錢買吧
複製證書到nginx目錄
mkdir /etc/nginx/ssl cp server.crt /etc/nginx/ssl/server.crt cp server.key /etc/nginx/ssl/server.key
修改ghost-nginx配置/etc/nginx/sites-available/ghost.conf
server { listen 80; listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:2368; } }
重啓nginx
強制要求admin用戶使用HTTPS,修改配置文件:forceAdminSSL: true
備份
登陸管理後臺,訪問Labs設置頁:yourblog.com/ghost/settings/labs/
,導出數據.json
文件,備份content
目錄
確認服務重啓命令
升級後須要重啓服務,確認安裝時使用的服務管理方式forever/pm2/supervisor
跨版本升級,和我沒大關係
下載新版ghost
curl -LOk https://ghost.org/zip/ghost-latest.zip
解壓到一個臨時目錄,不要直接覆蓋原安裝目錄
unzip ghost-latest.zip -d ghost-temp
進入當前ghost安裝目錄,刪除core目錄
cd path/to/ghost rm -rf core
進入臨時解壓目錄,複製文件
cd path/to/ghost-temp cp -R core path/to/ghost cp index.js *.json path/to/ghost cp -R content/themes/casper path/to/ghost/content/themes
回到安裝目錄升級ghost
cd path/to/ghost chown -R ghost:ghost * npm install --production
重啓服務
# 注意使用安裝時的服務管理方式 service ghost restart forever restart index.js pm2 restart ghost
這兩個服務都有官方鏡像源,直接下載(非必須)
docker pull ghost docker pull nginx
# 運行並掛載本地content目錄到容器 docker run --name ghost \ -e NODE_ENV=production \ -v /path/to/ghost-content:/var/lib/ghost \ --restart=always \ -d ghost # 後面使用nginx代理,因此這裏不作端口映射,默認暴露`:2368`端口 # content目錄能夠包含自定義配置文件config.js,默認會自動複製config.example.js文件到content目錄config.js # 建議提早準備好本身的配置文件,默認production的配置是不完整的 # 注意NODE_ENV環境變量,不設置爲production時默認爲development # 每次修改完配置文件重啓: docker restart ghost
# 運行並掛載配置文件 docker run --name nginx \ -v path/to/nginx.conf:/etc/nginx/nginx.conf \ -v path/to/ghost.conf:/etc/nginx/conf.d/ghost.conf \ --link ghost:GHOST_HOST \ --restart=always \ -p 80:80 \ -d nginx # 注意這裏須要同時掛載nginx服務配置和ghost代理配置 # 兩個配置文件雖然不是必須從容器外掛載,但仍是分離開方便維護 # 注意修改上面示例中 ghost.conf 文件:proxy_pass: http://GHOST_HOST:2368