Ubuntu伺服器搭建Ghost部落格

licoded發表於2020-11-01

本文轉載自 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 中,檔案目錄如下:

91c7cb115a3d8ee6

騰訊雲使用的就是 fullchain.ceryoursite.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 協議》,轉載必須註明作者和本文連結

相關文章