本文轉載自 Ghost Blog安裝筆記–淮城一隻貓,並有少量原創內容
之前使用過 ghost 搭建部落格,但因為速度慢、太難上手、沒有好看的主題再加上伺服器需要用於其他用途,遷移回了 hexo 。現在除了難於上手外問題基本都解決了,並且 ghost 還有了很多新特性讓我難以抗拒,於是乎就搬回了 ghost 。
我用的是阿里雲輕量級應用伺服器,學生機,Ubuntu18.04LTS,1 CPU/2G RAM/40G ROM.廢話不多說,開始整活,詳細介紹一下搭建 ghost 部落格的具體步驟。
由於 Ghost 不允許 root 安裝,所以需要新建一個賬戶並讓他以 root 身份登入
# 更新軟體
sudo apt update && sudo apt upgrade
# ghost不允許root使用者安裝,所以需要新建個<user>使用者
adduser <user>
# 給予<user>使用者為超級許可權
usermod -aG sudo <user>
# 登入使用者
su - <user>
這裡的 使用者名稱可以自己任意修改,例如 tom 、 gh 、 lic 等。
但不能使用 ghost 作為使用者名稱,因為和 ghost-cli 使用者名稱產生衝突。
# 下載並安裝 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
# 新增下面這句話到 ~/.bashrc 或 ~/.zshrc
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
# 檢視最新的 nodejs-lts 版本
nvm ls-remote --lts
# 安裝 nodejs。版本號可能會有變化
nvm install 12.16.1
# 安裝 nrm 並更換 npm 源為 taobao 映象
npm install nrm -g
nrm use taobao
# 安裝 ghost-cli
npm install ghost-cli@latest -g
sudo apt-get install nginx
nginx -v
# 關閉防火牆
sudo ufw allow 'Nginx Full'
我使用的是 MariaDB,而不是官方推薦的 MySql
MariaDB 的安裝很簡單,只需要點選這個連結,選擇你的作業系統,複製安裝指令碼,貼上到你的命令列就好了
例如Ubuntu 18.04安裝10.4版本的資料庫:
sudo apt-get install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.4/ubuntu bionic main'
sudo apt update
sudo apt install mariadb-server
安裝完成之後,使用 mysqladmin -u root -p password <your password>
命令修改 root 密碼
# 建立ghost資料夾的網站目錄,這個名字可以自己隨便定義
sudo mkdir -p /var/www/ghost
# 使資料夾擁有許可權,<user>是當前使用者名稱
# 例如當前使用者名稱是ubuntu,那麼應該是:sudo chown ubuntu:ubuntu /var/www/ghost
sudo chown <user>:<user> /var/www/ghost
# 設定讀寫許可權
sudo chmod 775 /var/www/ghost
# 定位
cd /var/www/ghost
# 進行Ghost部落格平臺安裝
ghost install
安裝過程根據主機效能來決定,下面是選項配置講解:
- Enter your blog URL: 部落格展示地址,格式:http(s):(www.)example.com,不支援ip地址。
- Enter your MySQL hostname: 資料庫主機地址,回車預設是localhost。
- Enter your MySQL username: / Enter your MySQL password: 資料庫使用者名稱/密碼,上面安裝的資料庫使用者名稱是root,密碼是自己設定的。
- Enter your Ghost database name: Ghost部落格資料庫名
- Do you wish to set up “ghost” mysql user? 設定資料庫使用者名稱為ghost,這個為了避免許可權太大導致資料瞎搞,Ghost官方推薦是y。
- Do you wish to set up Nginx? 自動化Nginx,推薦y。
- Do you wish to set up SSL? 配置SSL證照,推薦y,如果你有證照問題,請檢視文章最下面的問題。
- Enter your email (For SSL Certificate):個人郵箱,配置ssl證照需要的郵箱地址。
- Do you wish to set up Systemd? 使用ghost程式管理工具,推薦y,個人覺得海星。
- Do you want to start Ghost? 啟動Ghost部落格就可以進入網址訪問。
我使用的是騰訊雲的免費CDN,使用 CDN 本身沒有什麼難度,我用的時候主要有下面兩個困惑
SSL 證照下載
在上一步 ghost install
過程中,我們免費申請了 letsencrypt 的免費 SSL 證照,而使用 cdn 就需要提供 SSL 證照,哪我們的證照在哪裡呢?
網上的資料不多,我最後通過谷歌找到了,就在我們的伺服器的 /etc/letsencrypt/yoursite.com
中,檔案目錄如下:
騰訊雲使用的就是 fullchain.cer
和 yoursite.com.key
兩個證照
cdn 的 CNAME 記錄和 A 記錄解析衝突
勇敢地把 A 記錄刪除掉就 OK了,具體原因我也不是很懂
安裝並配置 qn-store 後,我們在 ghost 後臺上傳的圖片就直接儲存在七牛雲圖床上,而不是在伺服器上了
在/var/www/ghost/content/adapters檔案下新建個storage資料夾
cd /var/www/ghost/content/adapters/storage # 定位
git clone https://github.com/Minwe/qn-store.git # 拉取原始碼
cd qn-store # 定位
npm install # 安裝模組依賴
然後開啟/var/www/ghost/config.production.json檔案,新增程式碼:
{
// ...
"storage": {
"active": "qn-store",
"qn-store": {
"accessKey": "your access key", // https://portal.qiniu.com/user/key獲取AK密匙
"secretKey": "your secret key", // https://portal.qiniu.com/user/key獲取SK密匙
"bucket": "your bucket name", // 儲存物件空間名字
"origin": "http://xx.xx.xx.glb.clouddn.com", // 七牛CDN地址
"fileKey": {
"safeString": true,
"prefix": "YYYYMM/"
}
}
}
// ...
}
最後重啟Ghost
cd /var/www/ghost
ghost restart
本作品採用《CC 協議》,轉載必須註明作者和本文連結