2019年7月4日 星期四

[經驗分享]BookStack 版本更新失敗修復方法


BookStack 是一款可以做為知識庫或教學文件庫的超棒應用。不過,最近在進行版本更新時遇到了大問題,我將處理過程記錄於本文。







更新指令

在 BookStack 的官方文件庫當中,提供了更新的相關作法,如下:
# 需要先切換至 BookStack 安裝路徑
git pull origin release && composer install && php artisan migrate

我原本使用的版本為 0.24.2,經過上面的指令之後預期更新會來到最新的 0.26.2。






套件升級

在更新過程中有遇到一些錯誤,提示我必需將原本的 PHP 7.0 升級到 7.2 以上才可以正常運作,因此我使用了以下指令進行更新,更詳細的 PHP 7.0 升級 7.2 說明可以拉到最下方的參考資料第二個連結。

apt install php7.2 php7.2-common php7.2-cli php7.2-fpm 
apt install php7.2-mysqlnd 
apt install php7.2-mbstring 
apt install php7.2-xml 
apt install php7.2-curl 
apt install php7.2-gd 
apt install php7.2-zip 
apt install php7.2-tidy 
apt install php7.2-dom 

安裝完成以後,還需要修改 PHP 7.2 的相關設定,請同樣拉到參考資料第二個連結參考,主要重點是:

  • 修改 php.ini 的 timezone 為 Asia/Taipei
  • 修改 nginx 的站台設定裡 php sock 路徑 由 7.0 更換為 7.2
  • 重啟 php7.2-fpm 服務


接著再跑一次上面 BookStack 官方的更新指令,順利完成後以瀏覽器打開,不是 HTTP Error 500 就是 An Error Occurred 的錯誤,悲劇了。

更新後無法使用 BookStack






問題處理

PHP 更新了,PHP 的擴充套件該裝的也裝上去了卻還是失敗... 只好來找 Log 檔看看線索,請開啟 /var/log/nginx/error.log 這個檔案。

查看 nginx 錯誤記錄檔


有了,在記錄檔中看到了明確的錯誤訊息  could not find driver ,原來是 MySQL 資料庫連接的 Driver 沒有找到,下指令安裝補回來:
apt install php7.2-mysql

安裝完成以後,再回到瀏覽器打開 BookStack,成功搞定!


更新成功,已可使用





結論

BookStack 還處於快速開發的階段,在安裝與更新的過程中不像 LibreNMS 會主動檢查各種狀況,即便更新失敗後也會在畫面上提供線索以及修復的建議,所以需要由 Log 檔中主動分析,方能找到原因,對症下藥。





參考資料