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 檔中主動分析,方能找到原因,對症下藥。
參考資料
- Updating BookStack · BookStack
https://www.bookstackapp.com/docs/admin/updates/
- [經驗分享]LibreNMS 更新 PHP 7.2 問題與解決方法https://blog.jason.tools/2019/02/librenms-php-upgrade-.html
- [經驗分享]開源知識管理平台 - BookStack
https://blog.jason.tools/2018/03/bookstackapp-useful.html