[Debian]LNMP 环境下安装和配置 FreshRSS 教程(更新于:20200729)

说起来昨天我写好 Tiny Tiny RSS 的教程来着,怎么又想着写这个 FreshRSS 的?

其实对于 RSS 自搭建订阅平台这个,我一直以来了解得都不多,印象最深刻的也是最出名的就记得一个 Tiny Tiny RSS,所以当我想搭建 RSS 订阅平台的时候,第一个想到的就是它。

然而这个 Tiny Tiny RSS 在我试用了一段时间之后,感觉并没有自己想象中的那么好,网页上的速度感觉不是特别快,对移动浏览器也没有做很好的支持(使用自带主题的情况下),而且我喜欢的一个 RSS 功能 WebSub 作者一直没有支持,恰好这时候看到了别人安利 FreshRSS,在考虑了一番之后,觉得不能仅局限在一个程序上,决定再看看 FreshSub 的表现,也正好再水一下文章丰富一下博客内容,所以就有了此文。

一、LNMP 环境的搭建

这里说明一下,因为这 Tiny Tiny RSS 和这个 FreshRSS 的搭建有很多的相似之处,所以有些没必要重复再写的内容,我就直接复制粘贴我的另一篇 Tiny TIny RSS 的文章了,还望大家见谅。内容方面大家不需要担心,我肯定是有检查过不会不适用的。

这部分我就略过不说了,因为没什么好讲的,环境的搭建在 LNMP 的官网就能找到,我原来也写过一篇,大家可以看看,不过因为写的时间比较久了,有些内容不一定适用了,大家当作参考就好,还是要根据自己现在 LNMP 的版本来进行安装:[Debian]服务器搭建 LNMP 环境&创建虚拟主机教程(日期:20180415)

在这里特别提一下,因为上面的教程只是创建好了虚拟主机,还没有创建好数据库和数据库用户,所以大家需要在操作完上面的教程之后,再到 LNMP 自带的 phpMyAdmin 里用 Root 用户登录先创建好给 FreshRSS 网站用的数据库用户名和密码,这步我就不说了,有不懂的留言我以后再来补吧!

二、FreshRSS 的安装

在开始正式安装前,首先需要给大家介绍一下官方对 PHP 模块方面的一些需求和推荐安装的模块:

1. PHP 模块需求

必选的模块有下面这些:

  • PDO_mysql(最新的 LNMP 1.6 PHP 已自带,另外官方也说了还支持 PDO_SQLite 和 PDO_PGSQL,其中前者也带有)
  • DOM(同上已自带)
  • cURL(同上已自带)
  • libxml (同上已自带)

推荐安装的模块:

  • JSON(最新的 LNMP 1.6 PHP 已自带)
  • GMP(这个 LNMP 1.6 没有自带,稍后给大家说怎么安装)
  • Zlib(已自带不需要安装)
  • IDN(也就是 intl,已自带不需要额外安装)
  • mbstring(同上已自带)
  • iconv(同上已自带)
  • Zip(同上已自带)
  • fileinfo(这个官方没提,LNMP 默认是不安装的,需要到 LNMP 的安装配置文件里修改开启安装,如果你开始装环境的时候没装,事后开启该选项升级一下 PHP 客户端就可以了)
  • Opcode(这个同上没提,不过我建议大家装一下,PHP 7 的话默认装了但是没开启,需要自己开启,旧版本需要自己安装,可参考 LNMP 的教程:https://lnmp.org/faq/addons.html

关于需要和推荐安装的模块详细说明,可以看下官网的文档:https://freshrss.org/#requirements

另外除了官网主页上说的,我还看了下 Docker 源码里的具体要求,还有下面这些是需要的,不过 LNMP 1.6 都自带了所以就不特地拿出来说了:

  • xml
  • ctype
  • dom
  • session
  • simplexml
  • xmlreader

如果你用的不是 LNMP 安装的 PHP,注意检查下你的 PHP 是否安装好了上述的这些模块吧,可以下载一个 PHP 探针,可以很直观的看到。涉及安装这方面的,可能就因人而异了,这里还是以 LNMP 为主来写的就不说了。

2.根据需求添加缺少的模块

注意:下面的命令都是在 SSH 连接上 VPS 之后输入的,别说不知道啊……

因为上面已经说了,我们缺的只是 GMP 模块,这个在 LNMP 1.6 里修改下配置文件,再更新下 PHP 就能搞定了。

要修改配置的话,首先我们需要知道 LNMP 1.6 的安装目录,我这里就以目录为 /root/lnmp1.6 为例来说了,编辑其中的 lnmp.conf 文件:

vi /root/lnmp1.6/lnmp.conf

找到其中的 PHP_Modules_Options= 这里,加上 GMP 的编译参数 –with-gmp:

PHP_Modules_Options='--with-gmp'

关于 vi 的编辑和保存命令,这里就不额外说了,大家可以自己去了解一下。

因为安装 GMP 需要先安装好 libgmp-dev 依赖包,所以我们要先装一下,这里以 Debian 系统为例:

apt install libgmp-dev

装好后切到 LNMP 的安装目录,运行升级脚本并按照提示升级下 PHP 就可以了:

cd /root/lnmp1.6
./upgrade.sh php

PS:如果在升级 PHP 的时候弹出错误提示“configure: error: Unable to locate gmp.h”这种的,可能是因为你用的是 64 位系统的原因,可尝试运行下下面您这个命令:

ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

3.正式安装教程

上面交代的应该都差不多了,下面就开始正式的安装吧!注意下面的操作非特别说明都是在 SSH 下连接服务器输入命令进行的。

1.下载 FreshRSS 并解压

首先我们需要进入网站所在根目录,我这里以 example.com 为例,LNMP 默认设置的网站目录为:/home/wwwroot/example.com,然后使用 Wget 命令下载好程序包。

cd /home/wwwroot/example.com
wget https://github.com/FreshRSS/FreshRSS/archive/master.zip
unzip master.zip

2.复制文件到网站根目录并修改权限,随后删除多余的文件

注意做完上面的操作之后,不要切换目录,然后继续执行下面的命令。

cp -R FreshRSS-master/* .
chown -R www:www . && chmod -R g+r . && chmod -R g+w ./data/
rm -f master.zip
rm -rf FreshRSS-master/

注意因为 LNMP 默认的跨目录权限限制,这里修改文件权限时可能会出现一个提示,可忽略不管。

3.修改 Nginx 虚拟主机配置文件

因为 FreshRSS 的一些设置,我们需要在安装前先去配置下虚拟主机的 Nginx 配置,以免在安装过程中出错。

因为我们装的 LNMP 默认已经帮我配置好了大部分内容,因此这里我们只需要简单修改下就可以了,主要是 root 这里和再添加一条 location 规则:

root  /home/wwwroot/example.com/p/;
location / {
	try_files $uri $uri/ index.php;
}

注意下这个 location 规则的添加位置,这里建议添加在所有 location 规则的最前面,以防万一。

编辑好之后,别忘了重载下 Nginx:

lnmp nginx reload

4.修改防跨目录设定

因为 LNMP 默认添加好虚拟主机后,会做防跨目录的安全配置,但是由于我们的 FreshRSS 的一些原因需要调用到上级目录的文件,因此会造成跨目录的问题,导致网站白屏报 500 错误,所以我们需要先修改下有关配置,关闭这个跨目录的限制。

首先我们先将网站目录下的.user.ini 文件移除锁定,然后删除这个文件,这里以 example.com 网站为例:

chattr -i /home/wwwroot/example.com/.user.ini
rm -f /home/wwwroot/example.com/.user.ini

删除之后,还要打开 /usr/local/nginx/conf/fastcgi.conf 这个文件,将下面这行注释掉,也就是前面加个#:

#fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";

完成之后,执行命令重启下 php-fpm 并重载 nginx:

lnmp php-fpm restart
lnmp nginx reload

跨目录设置这个其实还是有好处的,主要是在安全方面,无奈现在还不了解程序,无法判定到底是需要访问哪些上层目录的文件,所以暂时就只能删除来完全解除这个限制了。如果以后对这方面有头目了,可以让程序和跨目录设定兼容的话,到时候再来更新这里的说明吧。

PS:LNMP 自带的工具里有移除跨目录限制的脚本,不想自己改的可以执行 lnmp/toots/remove_open_basedir_restriction.sh 这个脚本,按照提示操作就可以移除限制了。

5.正式安装 FreshRSS

前面已经跟大家交代过了,要记得创建好网站用的数据库用户和数据库,所以这里就不再重复了,这个大家还是知道的吧?

下面开始正式的安装说明。

1.打开自己的网站如 example.com,你应该会看到如下界面,根据自己的需求修改语言设置,然后点击下一步:

2.检查是否安装必须的组件,如果你按照我前面的说明来的,这里应该都没什么问题,直接下一步就行了:

3.设置登录的用户名和密码什么的,认证方式那个和我的保持一致就可以,主要另一个高级认证方式我们的 Nginx 也没法选择,应该是 Apache 才支持的功能:

4.设置数据库有关的内容,注意这里支持两种,SQLite 的好处就是不用额外设置,不过我这里还是选择了传统的数据库程序 MySQL,要注意的地方不多,看图吧:

主要就是注意主机这里,因为我们一般数据库都是和网站所用的主机放在同一台上的,所以填写 localhost 就可以了,如果你是远程数据库还请自己修改。表前缀这个是可以自己设置的,有长短和文本内容限制。

5.上面的设置好之后就可以看到完成安装的提示并跳转到登录页面了,这个时候就可以开始正常使用了。

三、FreshRSS 的配置

1.设置 FreshRSS 能够定时自动更新 RSS

首先要说明下,在文章开头部分我已经说过了,FreshRSS 支持 WebSub 这个协议,这相当于是个更新实时推送,支持这个的 RSS 源能够在自己有更新的时候自动发通知给订阅平台告诉他们自己已经有新文章了,所以如果你用 FreshRSS 订阅的那些 RSS 都带有这个功能,则相当于就是带有自动更新功能了,下面的操作不设置也 OK。不过我估计这种 RSS 肯定很难做到全部都支持,所以我们还是有必要按照传统的方法设置一个自动更新 RSS 的保险机制的,免得你每次要看 RSS 的更新内容还得自己刷新一下。

由于 FreshRSS 提供的更新脚本貌似是一次性运行的,所以没法像 Tiny Tiny RSS 那样设置常驻运行的服务,只能通过定时任务定时执行一下了。

1.首先创建一个定时任务:

vi /etc/cron.d/FreshRSS

vi 的命令怎么使用这里就不提了,操作 VPS 的话总不能不懂这个的,大家自行搜索下吧。

PS: 关于定时任务,我后来了解了一下,有三种设置方法,一是我这里写的,特点是能指定用户运行,仅 Root 用户可以操作,二是编辑 /etc/crontab 来写,特点是需要 Root 权限且要指定执行用户,三是用 crontab -e,特点是不用指定执行用户,以执行 crontab -e 命令用户的身份来运行任务,其文件根据执行的用户来分别命名并保存在/var/spool/cron/crontabs 里。由于我不是专业人士,理解可能有所偏差,如果理解有误的话欢迎大佬们评论纠正。

2.在创建的定时任务文件中输入以下内容:

6,36 * * * * root sudo -u www php /home/wwwroot/example.com/app/actualize_script.php > /tmp/FreshRSS.log 2>&1

注意这个文件在写完上面的内容之后要再输入一个换行符哦,另外还要注意其中的文件路径,/home/wwwroot/example.com/这里记得换成自己网站实际所在目录。这句话的意思是每当时间的分钟在 06 或者 36 时(也可以理解为每半小时),以 Root 用户的身份执行 sudo 命令,使用 www 用户来运行一下网站目录下(再次注意其中的文件路径要改成自己的)的更新 RSS 脚本,并将日志输出到/tmp/FreshRSS.log 里。

这里解释一下,上面写的之所以这么绕而没有直接用 www 用户来执行任务,是因为我后来了解到使用特定用户执行定时任务的前提是该用户必须要有对应的用户主目录,www 因为不是实际在用的用户所以并没有该目录,而我又不想新建一个空的放在那里,所以只好出此下策,不当之处欢迎指正。另外关于定时任务的时间格式问题,这个不在本文的说明范围内,还请大家自己了解一下这方面的知识,并选择合适的执行脚本时间。

3.读取 crontab 任务

crontab /etc/cron.d/FreshRSS

2.安装扩展

FreshRSS 默认没有安装什么扩展,但是可以很方便的自己安装。只需要下载好扩展的压缩包,把解压出来的文件夹放到/home/wwwroot/example.com/extensions 这个目录下就可以了,但是要注意文件和文件夹的权限和用户组。

基本上 FreshRSS 只需要自己配置下这个自动更新就可以了,算是开箱即用了吧!

四、FreshRSS 程序的更新

首先程序好像自带有更新功能,不过因为我装的是最新版所以还没法测试在网页上更新是否有效,所以除此之外这里再给大家说下官方给的另一个更新方法,和前面安装 FreshRSS 挺相似的,所以我这里就直接复制下来给大家说了。

1.下载 FreshRSS 并解压

首先我们需要进入网站所在根目录,我这里以 example.com 为例,LNMP 默认设置的网站目录为:/home/wwwroot/example.com,然后使用 Wget 命令下载好新的程序安装包并解压好。

cd /home/wwwroot/example.com
wget https://github.com/FreshRSS/FreshRSS/archive/master.zip
unzip master.zip

2.复制文件到网站根目录并修改权限,随后删除多余的文件

注意做完上面的操作之后,不要切换目录,然后继续执行下面的命令。

cp -R FreshRSS-master/* .
chown -R www:www . && chmod -R g+r . && chmod -R g+w ./data/
rm -f master.zip
rm -f data/do-install.txt
rm -rf FreshRSS-master/

注意这里和安装时不同,多了一条删除文件的命令:rm -f data/do-install.txt。do-install.txt 这个文件是用来检测是否需要全新安装程序的,因为我们是更新程序所以在此之前需要先将这个文件删除,以免又重新安装了。

另外因为 LNMP 默认的跨目录权限限制,这里修改文件权限时可能会出现一个提示,可忽略不管。

做完这些之后,再访问你的网站,应该就是新程序了,如果有什么提示之类的,按照提示来操作就可以搞定。

五、参考说明

终于把这篇文章写完了,FreshRSS 确实安装起来挺简单的,需要配置的东西比 Tiny Tiny RSS 少不少,像我这种新手都能轻松安装好并使用,在界面和速度方面也比 Tiny Tiny RSS 好不少。

本文都是直接看官方安装文档就解决了问题,不过不得不说官方文档因为 GitHub 那边和官网上写的内容不太统一,在一些小问题上还是会碰上点问题的,希望开发者以后能统一一下。下面贴一下本文教程的参考链接吧:

GitHub 官方文档:https://github.com/FreshRSS/FreshRSS

官网的安装教程(英文):https://freshrss.github.io/FreshRSS/en/admins/01_Index.html

文章标题:[Debian]LNMP 环境下安装和配置 FreshRSS 教程(更新于:20200729)
本文作者:希卡米
链接:https://hikami.moe/master/program/2954.html

如非文内特别说明,博客内作品均默认采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
知识共享许可协议

评论

  1. 4 年前
    2019-10-31 15:38:49

    我也同时搭建了tiny tiny RSS和freshRSS,不知道你更推荐哪个?我也正在纠结选哪个呢

    • 12点半
      张波博客
      4 年前
      2019-10-31 15:59:54

      我选 FreshRSS。一是因为我文章开头说的,它支持 WebSub,我觉得这是个很好的功能,我自己的博客就是支持的。二是对比两者之后,我觉得 FreshRSS 的界面更现代化一些,且页面完整加载也更快。三是因为 Tiny Tiny RSS 默认用户名为 Admin 且不可更改,有一定的安全隐患。最后还有一点,我是 Inoreader 的用户,FreshRSS 对于导入其备份有着更好的支持(可以导入星标文章)。

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇