非docker方式搭建wallabag

2022-01-17 各種折騰

什麼是 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

設置 nginx

在 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

有建議或者疑問,歡迎留言

相關焦點

  • 重溫 wallabag:Instapaper 的開源替代品 | Linux 中國
    早在 2014 年,我寫了篇關於 wallabag 的文章[1],它是諸如 Instapaper 和 Pocket 這樣的稍後閱讀應用的開源替代品。如果你願意,去看看那篇文章吧。別擔心,我會等你的。好了麼?很好。自從我寫這篇文章的四年來,wallabag[2] 的很多東西都發生了變化。現在是時候悄悄看一下 wallabag 是如何成熟的。
  • 如何在CentOS7下通過Docker方式搭建OpenStf環境?
    windows上通過VMware安裝虛擬機CentOS7,然後安裝docker,使用docker方式搭建。CentOS如何搭建不在本文範圍。注意:windows系統不建議直接用docker的toolbox版本,會有很多問題。
  • Dockerfile搭建極簡LNMP環境
    常規環境搭建的方式有兩種,一種是把php、mysql、nginx分別編寫一個Dockerfile,然後再使用docker-compose.yml來編寫一個容器互連的配置,使用docker-compose來管理和生成容器。另外一種方式是把php、nginx、mysql都安裝到一個鏡像裡面,簡單粗暴。
  • 基於 Docker 搭建 MySQL 主從複製
    ,但是也忘的也差不多了,因此本次嘗試在Docker中搭建。本篇博文相對簡單,因為是初次使用Docker,MySQL的主從複製之前也在Centos環境下搭建過,但是也忘的也差不多了,因此本次嘗試在Docker中搭建。根據網上教程走還是踩了一些坑,不過所幸最終搭建成功,因此記錄下來,避免以後踩了重複的坑。
  • 使用 Docker 搭建 Laravel 本地環境
    比,它佔用體積太大,啟動速度慢,同時響應速度很慢,現在有了 docker 這種更好的方式,可以輕鬆方便的搭建整套 PHP 開發環境。本文就介紹如何使用 docker 搭建 Laravel 本地環境。安裝 docker首先安裝 docker。
  • 搭建一個私有的Docker registry
    其他的公司也開始提供類似服務,但是價格可不便宜。另外,如果你需要用Docker部署一個用於生產環境的應用,恐怕你不希望將這些鏡像放在公開的Docker Hub上吧!這篇文章提供了一個非常務實的方法來處理搭建私有Docker registry時出現的各種錯綜複雜的情況。我們將會使用一個運行於DigitalOcean(之後簡稱為DO)的非常小巧的512MB VPS 實例。
  • Docker簡單搭建Vulfocus靶場
    搭建原因搭建漏洞環境太麻煩又浪費時間,Docker搭建方便。pull vulfocus/vulfocus:latestdocker imagesdocker.sock -e VUL_IP=192.168.1.71 2ff13d764bcfdocker ps
  • 在docker搭建自己的郵件伺服器
    1簡介現在的郵件伺服器各種各樣,非常的多,我這裡給大家介紹幾種目前常見的郵件伺服器在Docker上的搭建方法
  • docker搭建mongodb分片集群
    ,請檢查文件目錄,可直接根據匯總docker-composeyml開始搭建,配置文件在上面每個服務中最終文件目錄configserver1、準備工作chmod待configServer服務搭建完成、創建用戶後在開啟認證3、創建docker-compose.ymlcd /mongo/configservervim docker-compose.yml (內容如下)cd ..
  • 如何用 Docker 快速搭建 MySQL 主從
    本文主要描述如何使用 Docker 技術快速搭建一個 MySQL 主從架構。環境準備CentOS 7Docker 18.09.0MySQL 5.7環境搭建1. 使用 Docker 搜索 MySQL 鏡像,並且拉取 MySQL 5.7 版本。
  • 使用docker swarm 搭建docker集群
    (docker swarm –help 查看幫助)docker service:服務創建,子命令有 create, inspect, update, remove, tasks。task 是 service 的執行實體,task 啟動 docker 容器並在容器中執行任務。這裡用兩臺機器來搭建,分別如下:swarm01   192.168.106.101swarm02   192.168.106.1021.
  • Docker+nginx搭建教程
    新建docker-ce.repotouch  /etc/yum.repos.d/docker-ce.repovim /etc/yum.repos.d/docker-ce.repo#複製下面的「這個是centos 7配置」name=Docker CE Stable -
  • Docker 應用| 使用 Mailu.io 搭建基於 Docker 的域名郵箱
    之前,我們介紹過Poste郵箱系統的搭建;Poste已經很久不再更新了,而Mailu則是Poste的升級版,一直穩定更新。今天,我們就來介紹如何搭建並使用Mailu.io域名郵箱。類似的域名郵箱系統,我們還推薦iRedMail與Zimbra, 您可以自行比較並選擇喜歡的程序。
  • Docker 開發鏡像搭建與DockerFile分享
    文章字數:約800閱讀大約需要時間:5min文章結構:背景 -> 使用方法 -> 開發過程 -> 總結    背景    之前搭建過一個開發鏡像也無法對鏡像在構建過程進行擴展-- 比如我還想裝其他開發語言,依然只能手動裝,而且換臺電腦之後可能還得這麼來操作一次綜上,為了改進我們的開發鏡像的這兩點,通過 DockerFile 我們再構建一次之前的開發鏡像    使用方法    https://github.com/smiecj/docker-centos
  • 如何在正確使用 Docker 搭建 GitLab
    很多程式設計師在內網搭建 gitlab 都搭建的坑坑窪窪,不支持 https,或者裝個 gitlab 就把伺服器弄得亂七八糟的,根本不知道該怎麼維護和遷移
  • Docker+Selenium Grid+Python搭建分布式測試環境
    於是搭建了一個分布式的測試環境來試試。  既然Docker現在已經如此流行,此次嘗試著在Docker的環境中搭建用於兼容性Web測試的分布式測試環境。  目標:  1.成功搭建docker結合selenium構建分布式測試環境。  2.編寫腳本執行web的自動化測試分布式測試。
  • Docker 搭建--jira平臺
    本文帶領大家使用
  • 使用Docker高效搭建開發環境
    ,今天給大家帶來的是奇虎360的開發是如何使用Docker高效搭建開發環境的。公司雖然有專門負責部署、運維這些服務的同學,但我在開發的時候,還是喜歡自己來搭建這些東西,因為這樣通常可以對使用到的服務有更多的認識,也能幫助自己使用的更好。今天我就來和大家分享下我是如何高效的搭建好自己的開發環境的。
  • 【流程研發】虛擬機伺服器搭建WIKI文檔(docker+confluence)
    docker --version # 查看docker版本systemctl start docker # 啟動dockerps aux|grep docker # 查看docker進程是否正常啟動docker start postgresdb # 啟動資料庫 postgresdbdocker start confluence # 啟動 Wiki confluencedocker ps #
  • 來,用docker搭建一個個人博客網站(WordPress)玩玩
    WordPress是一款個人博客系統,並逐步演化成一款內容管理系統軟體,它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持 PHPWordPress有許多第三方開發的免費模板,安裝方式簡單易用。不過要做一個自己的模板,則需要你有一定的專業知識。比如你至少要懂的標準通用標記語言下的一個應用HTML代碼、CSS、PHP等相關知識。