非docker方式搭建wallabag

什么是 wallabag ?

wallabag 是一款基于 Symfony 框架开发的 PHP 应用程序,是一款优秀的开源免费的稍后阅读工具。

前言

本文是应一位网友的要求而撰写,他希望老苏写一篇使用群晖自带的 web station + 群晖数据库搭建 wallabag 的详细教程。

坦率的说,老苏不建议在群晖上使用除了 docker套件 之外的方式来安装服务,因为很容易把机器搞乱(后面有提到切换 PHP 版本带来的问题,虽然这个问题最终得到了解决),除非你和老苏一样,生产和测试不是在一台主机,并且有良好的备份习惯。

下面的操作有一定的风险,除非你确定知道自己在做什么。

安装

安装前先说下老苏测试机的环境

软件 版本
MariaDB 5 5.5.59-0084
phpMyAdmin 4.9.2-0183
PHP 5.6 5.6.40-0059
PHP 7.3 7.3.16-0006

之所以要特别提到版本是因为老苏担心不同版本可能会存在各种差异

创建数据库

通过 phpMyAdminMariaDB 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 上,这里要根据你自己的卷标进行修改

1
2
3
4
5
6
7
8
# 进入 web station 根目录
cd /volume2/web

# 创建目录
mkdir wallabag

# 解压缩(不包含原目录)
tar -zxvf ./wallabag-2.4.2.tar.gz --strip-components 1 -C wallabag/

现在的目录结构是这样的

切换 PHP 版本

在 SSH 客户端的命令行查询 PHP 的版本

1
2
# 获取 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

1
2
3
4
5
6
7
8
# 重命名原来 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 设置 ,如果已经存在就 编辑,如果不存在就 新增

  • PHP 版本 必须是对应的 PHP 7.3
  • 扩展名 其实就是用到的第三方插件,因为不好截图我把需要勾选的依次列一下,bcmathgdintlmysqlipdomysqlsocketszip

接下来设置 虚拟主机 –> 新增 –> 基于端口

  • 端口对应前面设置文件中的端口,前面设的 5080
  • 文档根目录不是 wallabag,而是它的子目录 web

控制台命令

软件开发有三个主要阶段,开发 -> 测试 -> 上线,所以对应了三种环境配置:

  • DEV – 开发环境。
  • TEST – 测试环境。
  • PROD – 生产环境。

wallabag 有许多 CLI 命令来管理一系列的任务。您可以通过 bin/consolewallabag 文件夹中执行来列出所有命令。

我们不是用来开发也不是用来测试,而是要使用,所以要记住添加 --env=prod 到命令中。

1
2
3
4
5
# 进入 wallabag 目录
cd wallabag/

# 用于显示详细的命令和参数
php bin/console --env=prod

接下来执行清理缓存,如果是第一次可以跳过

例如你后面又更新了 parameters.yml 文件,就需要执行一次,否则加载的还是原来 parameters.yml 的内容

1
2
3
#  Clears the cache 
# 如果设置错误或更新了用于清除缓存
php bin/console cache:clear --env=prod

1
2
# 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 这样的错误信息

1
2
3
4
5
6
7
# 依次执行
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 客户端命令行执行

1
2
# 显示文件内容
cat /etc/nginx/app.d/server.webstation-vhost.conf

找到端口对应的 5080,以及下面对应的配置文件

conf.d 后面那串字符是不同的,要按自己的修改

1
2
3
4
5
# 进入目录
cd /usr/local/etc/nginx/conf.d/a755a4a7-0762-422c-8dc7-e5f63392cc43/

# 新建文件
vi user.conf.dir

将下面的内容粘贴进去,用 :wq 保存并退出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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;

1
2
# 重新加载配置文件
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

1
2
3
4
5
6
7
8
# 重命名原来 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