什麼是 wallabag ?
wallabag 是一款基於 Symfony 框架開發的 PHP 應用程式,是一款優秀的開源免費的稍後閱讀工具。
前言本文是應一位網友的要求而撰寫,他希望老蘇寫一篇使用群暉自帶的 web station + 群暉資料庫搭建 wallabag 的詳細教程。
坦率的說,老蘇不建議在群暉上使用除了 docker 和 套件 之外的方式來安裝服務,因為很容易把機器搞亂(後面有提到切換 PHP 版本帶來的問題,雖然這個問題最終得到了解決),除非你和老蘇一樣,生產和測試不是在一臺主機,並且有良好的備份習慣。
下面的操作有一定的風險,除非你確定知道自己在做什麼。
安裝安裝前先說下老蘇測試機的環境
軟體版本MariaDB 55.5.59-0084phpMyAdmin4.9.2-0183PHP 5.65.6.40-0059PHP 7.37.3.16-0006之所以要特別提到版本是因為老蘇擔心不同版本可能會存在各種差異
創建資料庫通過 phpMyAdmin 在 MariaDB 5 中新建用戶 wallabag,創建同名的庫 wallabag 並授予所有權限。
下載原始碼不要用 git 下載,因為 git 下載的代碼缺 vendor 目錄,這個目錄是項目的依賴包,如果你想自己編譯生成 vendor 目錄,需要在群暉上安裝一堆東西,老蘇不建議這麼幹,所以推薦直接到 https://github.com/wallabag/wallabag/releases 下載最新的 wallabag-2.x.x.tar.gz 壓縮包。
不要下 Source code ,因為也不帶依賴包;
將下載的壓縮包上傳到 web 目錄,並用 SSH 客戶端登錄到群暉
老蘇的 web station 安裝在 volume2 上,這裡要根據你自己的卷標進行修改
# 進入 web station 根目錄
cd /volume2/web
# 創建目錄
mkdir wallabag
# 解壓縮(不包含原目錄)
tar -zxvf ./wallabag-2.4.2.tar.gz --strip-components 1 -C wallabag/
現在的目錄結構是這樣的
切換 PHP 版本在 SSH 客戶端的命令行查詢 PHP 的版本
# 獲取 php 版本
php -v
不出意外的話,應該是 5.6 版本
如果你足夠仔細的話會發現這個版本是 5.6.11,並不是我們前面記錄的 5.6.40,老蘇的好習慣又一次拯救了自己,因為老蘇不僅在群暉上備份了,還順手用 WinSCP 下載到了電腦一份。
如果你還沒有安裝 PHP 其他版本,請到套件中心安裝 PHP 7.3 版本
官方寫的是 compatible with PHP >= 7.2 (maybe not 7.4).,但是用 7.2 安裝並不成功,會提示需要 >= 7.2.5,所以別糾結了,直接上 7.3
# 重命名原來 5.6 版本的 PHP,這一步很重要
mv /bin/php /bin/php56
# 用 7.3 版本的替換
cp -a /volume2/@appstore/PHP7.3/usr/local/bin/php73 /bin/php
# 獲取 php 版本
php -v
這次應該是顯示 7.3 版本
【注意】:這麼做是有後遺症的,會導致 文本編輯器 打開文件任何文件都是空的。
老蘇也嘗試過用 PHP 7.2 來替換, 但 文本編輯器 打開文件會顯示 無法聯機,請檢查你的網絡設置。
還有沒有其他遺留問題,老蘇也不能確定,不過這個問題最終得到了解決,之所以放到最後而不是在這裡講,並不是老蘇想賣關子,而是有個執行順序的問題。
修改配置文件在 app/config子目錄中找到 parameters.yml 文件並打開修改(因為上面的問題,老蘇是下載到本地改完了再上傳替換的,就是因為文本編輯器經常要使用,所以很容易發現了異常)
database_user:默認是 root,改為我們前面創建的 wallabag;
database_password:默認為 null,改為前面設置的密碼;
domain_name:默認為 https://your-wallabag-url-instance.com,老蘇改為了 IP + 埠,之所以用埠是為了能像 docker 一樣方便做反向代理,具體設置在後面的 web station 部分,當然你也可以一步到位,直接填寫域名。
設置 web station因為沒有啟用 個人網站 ,所以沒安裝 Apache
至於為什麼安裝了這麼多 PHP 版本,說實話老蘇自己也忘記了,但是這不重要,wallabag 只要有 PHP 7.3 就行
PHP 設置 ,如果已經存在就 編輯,如果不存在就 新增
接下來設置 虛擬主機 --> 新增 --> 基於埠
控制臺命令軟體開發有三個主要階段,開發 -> 測試 -> 上線,所以對應了三種環境配置:
DEV – 開發環境。
TEST – 測試環境。
PROD – 生產環境。
wallabag 有許多 CLI 命令來管理一系列的任務。您可以通過 bin/console 在 wallabag 文件夾中執行來列出所有命令。
我們不是用來開發也不是用來測試,而是要使用,所以要記住添加 --env=prod 到命令中。
# 進入 wallabag 目錄
cd wallabag/
# 用於顯示詳細的命令和參數
php bin/console --env=prod
接下來執行清理緩存,如果是第一次可以跳過
例如你後面又更新了 parameters.yml 文件,就需要執行一次,否則加載的還是原來 parameters.yml 的內容
# Clears the cache
# 如果設置錯誤或更新了用於清除緩存
php bin/console cache:clear --env=prod
# wallabag installer 包括創建第一個用戶
php bin/console wallabag:install --env=prod
安裝分為四步,第一步是 Checking system requirements,如果都是 OK 那就恭喜你了
第二步是 Setting up database,直接 yes
第三步是 Administration setup,依次輸入用戶名、密碼有郵箱
第四步是 Config setup,不需要輸入,直接顯示結果
看到 [OK] wallabag has been successfully installed. 就是安裝成功了。
文件夾權限這是為了避免出現 Permission denied 這樣的錯誤信息
# 依次執行
chown -R http:http /volume2/web/wallabag/var
chown -R http:http /volume2/web/wallabag/bin
chown -R http:http /volume2/web/wallabag/app/config
chown -R http:http /volume2/web/wallabag/vendor
chown -R http:http /volume2/web/wallabag/data
chown -R http:http /volume2/web/wallabag/web
在 SSH 客戶端命令行執行
# 顯示文件內容
cat /etc/nginx/app.d/server.webstation-vhost.conf
找到埠對應的 5080,以及下面對應的配置文件
conf.d 後面那串字符是不同的,要按自己的修改
# 進入目錄
cd /usr/local/etc/nginx/conf.d/a755a4a7-0762-422c-8dc7-e5f63392cc43/
# 新建文件
vi user.conf.dir
將下面的內容粘貼進去,用 :wq 保存並退出
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
location ~ ^/app\.php(/|$) {
# if, for some reason, you are still using PHP 5,
# then replace /run/php/php7.0 by /var/run/php5
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
error_log /var/log/nginx/wallabag_error.log;
access_log /var/log/nginx/wallabag_access.log;
# 重新加載配置文件
sudo nginx -s reload
見證奇蹟的時刻終於到了,在瀏覽器中輸入 http://群暉IP:5080,就能看到主界面了
用前面創建的用戶 wallabag 登錄,進入 Quickstart
首先當然是 Configure the application --> MORE --> SETTINGS --> language 中選擇 簡體中文 --> SAVE
不需要重啟也不需要刷新
和之前折騰過的 docker 版本似乎存在不少差異,有興趣也可以看看老蘇之前寫的文章:
用Wallabag搭建稍後閱讀
後記老蘇發現在 user.conf.dir 中有這麼一段話,if, for some reason, you are still using PHP 5, then replace /run/php/php7.0 by /var/run/php5,讓老蘇有了新的想法,那就是在確保程序已經能正常運行的情況下,將 PHP 7.3 再換回到 PHP 5.6
# 重命名原來 7.3 版本的 PHP
mv /bin/php /bin/php73
# 重命名原來 5.6 版本的 PHP
mv /bin/php56 /bin/php
# 驗證 php 版本
php -v
現在 文本編輯器 恢復了正常,同時網頁也不影響使用,為了證實確實有效,老蘇還特意重啟了幾次。
還有一點需要說明的,bin 目錄中原始的 php 一定要備份好,一旦丟失,就算你把 /volume2/@appstore/PHP5.6/usr/local/bin/php56 拷貝過來,文本編輯器 依然還是會空白,雖然這兩個都是 PHP 5.6 ,但是版本其實並不一樣
雖然只是小版本的差異,但文件大小了差了很多
雖然結果是正確的,但過程這麼折騰,一定是有哪裡還沒做對,讓老蘇靜靜~
參考文檔wallabag/wallabag: wallabag is a self hostable application for saving web pages: Save and classify articles. Read them later. Freely.
地址:https://github.com/wallabag/wallabag
Installation · GitBook
地址:https://doc.wallabag.org/en/admin/installation/installation.html
群暉系統上如何切換PHP版本-伊陽博客群暉系統上如何切換PHP版本-下載頁面
地址:https://chyiyang.cn/140.html
群暉web station搭建的WordPress 修改固定連結後出現404的解決方案 | 網言網事
地址:https://www.since83.cn/151.html
有建議或者疑問,歡迎留言