sword

用Tiny-Tiny-RSS搭建RSS阅读器/支持网页及APP阅读
一、简介RSS(Really Simple Syndication)即简易信息聚合(也叫聚合内容),采用RSS订阅...
扫描右侧二维码阅读全文
04
2019/06

用Tiny-Tiny-RSS搭建RSS阅读器/支持网页及APP阅读

一、简介

RSS(Really Simple Syndication)即简易信息聚合(也叫聚合内容),采用RSS订阅可以定期订阅自己喜欢的博客,网站更新的内容,并聚合在一起查看,很方便。之前博客也介绍过 利用RSSBot打造自己的订阅机器人

Tiny Tiny RSS 是一款 PHP 语言的国外开源 RSS 阅读器,支持中文,功能十分强大。
项目地址:https://github.com/torne/Tiny-Tiny-RSS
官方网站:https://tt-rss.org/

二、特点

  • 可更换主题,有防Reeder、Feedly和Google Reader等主题;
  • 支持多种插件
  • 支持多用户
  • 有官方 Android 客户端和第三方ios客户端(Reeder等)
  • 自定义更新频率,每15分钟、每30分钟和每1小时等;
  • 支持导入OPML
  • 可以收藏和存档
  • 全文搜索
  • 支持中文
  • 有标记、近期阅读
  • 支持自动清理文章

三、环境要求

Nginx/Apache
PHP 5.6及以上(PDO引擎、JSON、XML、mbstring、fileinfo、CURL),具体见官方文档
PostgreSQL (9.1 及以上) 或者 MySQL - InnoDB
安装时如果缺少组件会有提示,到时相应添加即可

四、安装

这里以在宝塔中安装为例,毕竟简单方便。

1、安装宝塔:参考文章 宝塔Linux面板 - 5.9免费版

2、然后进入后台再安装PHP、Nginx和Mysql环境,再找到左侧软件管理-PHP管理-设置-安装Fileinfo拓展。
注:如果Fileinfo拓展安装失败,可能是内存太小,我们可以添加swap,不适用于ovz。找到左侧软件管理-系统工具-安装Linux工具箱,然后进入工具箱添加。

3、在宝塔上添加站点来新建网站
请输入图片描述

4、下载Tiny Tiny RSS源码,将程序上传到网站根目录后解压,
浏览器输入自己的网站域名(这里为oa.rw),可以看到安装界面,
然后填写你的数据库账号、密码等信息(这个可以在宝塔的数据库看到)。
请输入图片描述

然后点击 test configuration 测试配置是否正确,之后点击Initialize database初始化数据库

然后会自动生成config.php文件,然后save configuration保存。

最后就可以重新打开域名进入网站了。

5、修改文件夹权限
通过以上步骤后进入网站可能会报错,其实报错时已经给出解决办法了
请输入图片描述

权限问题:打开ssh,切换到网站根目录,依次错误提示时输入括号中的命令即可
fileinfo问题:忘记安装了,参考步骤2安装即可。

6、完成登录
demo: http://oa.rw/
默认账户为admin ,密码为password

请输入图片描述

请输入图片描述

五、配置

1、RSS更新
Tiny Tiny RSS有两种更新模式,一种是简单更新模式,一种是服务器自动更新模式。可参考官方的步骤:Tiny Tiny RSS Updating Feeds

简单更新模式
在config.php中将SIMPLE_UPDATE_MODE设置为true ,这样每次打开Tiny Tiny RSS 就可以开始更新RSS订阅了。
请输入图片描述

自动更新模式
需要先设置php的执行路径,在config.php中PHP_EXECUTABLE设置好PHP的路径。这个以宝塔为例,我这里如图所示
请输入图片描述

方法一:
由于ttrss规定不能以root启动服务,所以宝塔的计划任务不太好用,我们这里用systemd

在 /etc/systemd/system/ 文件夹下创建一个 ttrss.service 文件,填入下面的内容:(路径改为自己的文件路径即可)

[Unit]
Description=ttrss_backend
After=network.target mysql.service postgresql.service

[Service]
User=www
ExecStart=/www/wwwroot/oa.rw/update_daemon2.php

[Install]
WantedBy=multi-user.target

然后使用命令

重新加载配置文件:systemctl daemon-reload
设置开机启动:systemctl enable ttrss
启动服务: systemctl start ttrss
查看服务状态:systemctl status ttrss

方法二:
好像我用上面的方法没有生效,所以换成cron试试,
由于不能以root运行,宝塔计划任务默认只能root,所以只能手动添加运行计划

手动添加运行计划(时间15分钟--用户www--php运行目录--php文件目录),运行后会在/var/spool/cron/生成www文件,里面有定时任务内容。

echo "*/15 * * * * www /www/server/php/71/bin/php /www/wwwroot/oa.rw/update.php --feeds --quiet" >> /var/spool/cron/www

#赋予www文件权限
chmod 600 /var/spool/cron/www

#重新加载及重启crond

service crond reload
service crond restart

然后就可以通过命令查看是否运行

tail -f /var/log/cron

如果报错,一般是因为没有/home/www目录造成的,手动创建即可

mkdir /home/www

2、RSS 全文输出

需要安装 mercury_fulltext 插件支持,而且需要 Mercury Parser API,不过是开源的,可以自己搭建 Mercury Parser API

2.1 安装 mercury_fulltext 插件
直接运行代码即可,也可以手动下载插件,放到对应目录

cd /www/wwwroot/oa.rw/plugins
git clone https://github.com/HenryQW/mercury_fulltext.git

然后「偏好设置」中启用 mercury-fulltext 插件。
请输入图片描述

2.2 搭建 Mercury Parser API
项目地址:https://github.com/HenryQW/mercury-parser-api

我们使用docker搭建,方便一点(反正博主手动搭建没成功)

# 安装依赖
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

# 添加docker下载仓库
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 安装docker-ce
sudo yum install docker-ce

# 启动/设置开机启动 docker-ce
sudo systemctl start docker
sudo systemctl enable docker

# 验证
sudo docker --version
sudo docker run hello-world

Docker-CE 安装好后,执行下面代码「拉取/运行」完成 Mercury Parser API 搭建:

docker run -p 3000:3000 --restart=always -d wangqiru/mercury-parser-api

2.3 mercury_fulltext 设置
「偏好设置」-「信息源」-「Mercury Fulltext settings (mercury_fulltext)」,填入自建 Mercury Parser API 地址:localhost:3000,保存。(当然我是在本机搭建的api,直接localhost,如果其他机子搭建的,可以用服务器地址+端口填入)
请输入图片描述

编辑需要获取全文的 Feed(信息源),插件 - 启用「Get fulltext via Mercury Parser」保存退出即可。

请输入图片描述

docker搭建可参考Awesome TTRSS
参考文章:OneinStack 搭建 LNMP 安装 Tiny Tiny RSS

Last modification:June 10th, 2019 at 10:27 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment

20 comments

  1. ChrAlpha   ( Mac OS X 10.12.6 Mac OS X 10.12.6 / Google Chrome 79.0.3945.130 Google Chrome 79.0.3945.130 )

    博主你好,我按照您的教程搭建出来了 Tiny Tiny RSS ,但是自动更新那里一直有问题。
    ![](https://cdn.jsdelivr.net/gh/chralpha/imgbag/20200120102031.png)
    图中这样我认为是已经生效的了,但是登录进去的时候发现文章并没有更新。

    1. ChrAlpha   ( Mac OS X 10.12.6 Mac OS X 10.12.6 / Google Chrome 79.0.3945.130 Google Chrome 79.0.3945.130 )
      @ChrAlpha

      我是使用宝塔面板搭建的 tt-rss

      1. sword   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 79.0.3945.130 Google Chrome 79.0.3945.130 )
        @ChrAlpha

        额,我也是宝塔,好像我的一直可以,或者你试试文末的方法,好像简单点

  2. Stille   ( Mac OS X 10.15.1 Mac OS X 10.15.1 / Google Chrome 78.0.3904.97 Google Chrome 78.0.3904.97 )

    按照你的教程安装没问题.但是一些插件得手动在装.
    找到了docker compose的教程.试了N次..都失败了,每次都是提示域名地址不对...yml文件里的域名改过各种形式,都不行..
    彻底放弃了...

    1. sword   ( Windows 7 x64 Edition Windows 7 x64 Edition / Google Chrome 78.0.3904.97 Google Chrome 78.0.3904.97 )
      @Stille

      建议参考文末的awesome TTRSS来搞,或者群晖有TTRSS第三方套件哦

      1. Stille   ( Mac OS X 10.15.1 Mac OS X 10.15.1 / Google Chrome 78.0.3904.97 Google Chrome 78.0.3904.97 )
        @sword

        我就是参考awesome TTRSS的.死活不行...

  3. 45share   ( Mac OS X 10.14.6 Mac OS X 10.14.6 / Google Chrome 75.0.3770.142 Google Chrome 75.0.3770.142 )

    我的报错内容还不能评论,显示网络有问题

    1. 云点   ( Mac OS X 10.15.7 Mac OS X 10.15.7 / Google Chrome 91.0.4472.106 Google Chrome 91.0.4472.106 )
      @45share

      用手机热点试试

  4. 45share   ( Mac OS X 10.14.6 Mac OS X 10.14.6 / Google Chrome 75.0.3770.142 Google Chrome 75.0.3770.142 )

    同样宝塔环境,ttrss已经搭建成功了,打开网站可以更新,自动更新好像一直不好使,不知道为什么,两种方法都尝试了. 显示都已经正常运行了

    1. sword   ( Android 8.1.0 Android 8.1.0 / WebView 4.0 WebView 4.0 )
      @45share

      1、第二种方法应该是生效的,仔细检查一下命令,不要直接用,对应的改成自己的才行
      2、报错这个截图吧,可能是因为我的防火墙保护,没法加报错内容文本

  5. Tshore   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 )

    [root@VM_0_6_centos ~]# tail -f /var/log/cron
    Jun 16 09:33:21 VM_0_6_centos crond[31110]: (CRON) bad minute (/var/spool/cron/www)
    Jun 16 09:33:21 VM_0_6_centos crond[31110]: (CRON) bad minute (/var/spool/cron/www)
    Jun 16 09:33:21 VM_0_6_centos crond[31110]: (CRON) bad minute (/var/spool/cron/www)
    Jun 16 09:33:21 VM_0_6_centos crond[31110]: (CRON) bad minute (/var/spool/cron/www)
    Jun 16 09:33:21 VM_0_6_centos crond[31110]: (CRON) bad minute (/var/spool/cron/www)
    Jun 16 09:33:21 VM_0_6_centos crond[31110]: (CRON) INFO (running with inotify support)
    Jun 16 09:33:21 VM_0_6_centos crond[31110]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
    Jun 16 09:34:01 VM_0_6_centos CROND[31162]: (root) CMD (/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &)
    Jun 16 09:35:01 VM_0_6_centos CROND[31247]: (root) CMD (/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &)
    Jun 16 09:35:01 VM_0_6_centos CROND[31255]: (www) CMD (www /www/server/php/73/bin/php /www/wwwroot/tshore.me/update.php --feeds --quiet)
    Jun 16 09:36:01 VM_0_6_centos CROND[31342]: (root) CMD (/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &
    也不知道这是什么意思……也不知道哪里出问题了。 (╯‵□′)╯︵┴─┴

    1. sword   ( Android 8.1.0 Android 8.1.0 / WebView 4.0 WebView 4.0 )
      @Tshore

      看倒数第二段,没问题啊

      1. Tshore   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 )
        @sword

        大神您好。照着您的教程,我几乎完成了一个对电脑白痴来说的巨大工程。在此先表示由衷的感谢。但现在我想请教几个问题,希望您能不吝指教——
        1、您在文中提到:“当然我是在本机搭建的api,直接localhost,如果其他机子搭建的,可以用服务器地址+端口填入。”我现在用的是腾讯云主机搭建的……是不是这个“其他机子”的“服务器地址”填的就是我这个腾讯云主机的公网IP啊?或者是域名?比如说www.我的域名.me:3000 这样写可以吗?
        2、我点击启用“允许外部客户端通过 API 来访问该账户”但插件页并没有出现像https://ttrss.henry.wang/zh/#fever-api 这个网页所展示的第二步Fever设置页面。 而且插件设置页面还提示“Your PHP configuration has open_basedir restrictions enabled. Some plugins relying on CURL for functionality may not work correctly.”请问这些都是怎么回事呢?这种情况该如何处理?因为我也想使用手机端的TTRSS。

        1. sword   ( Windows 7 x64 Edition Windows 7 x64 Edition / Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 )
          @Tshore

          1、如果你的ttrss和全文输出api在同一台机器的话按照我的教程就行了,如果不在同一台机器就写ip+端口,注意api那台机子要开防火墙;
          2、不出现是正常的啊,如果你是安卓手机,直接就可以下载app链接用了,如果你是苹果手机,才需要fever(当然不知道是不是一定需要,因为我的不是苹果),这个需要安装fever插件才会出现。

          1. Tshore   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 )
            @sword

            原来这个地址得写成“http://www.我的域名.me”!谢谢大神的教程了。好人一生平安~ ヾ(≧∇≦*)ゝ

          2. Tshore   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 )
            @sword

            呃,我把地址改成公网IP地址了。现在它又提示“无法登陆你的账号,请检查认证信息”……请问大神这个该怎么搞?

            1. sword   ( Android 8.1.0 Android 8.1.0 / WebView 4.0 WebView 4.0 )
              @Tshore

              完全都搞混了,app上填的地址就是电脑网页打开时的地址,你的应该是http://tshore.me,然后账号密码一样

          3. Tshore   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 )
            @sword

            报告大神:1、我的ttrss和全文输出api确实都在我现在所用的同一台机器上。已经将其改为localhost:3000了。同时,我现在这台电脑的windows defender中的防火墙也已经打开。
            2、我现在用的也是安卓手机。但我在手机客户端上的“偏好设置”里,填写了我的服务器地址“www.我的域名.me”,然后我发现用户名填和密码无论我填写正确与否,客户端均提示“无法连接到Tiny Tiny RSS服务器,请检查你的网络连接或者偏好设置中的连接设置 错误详情:Exception in doRequest(): Exception-Message: no protocol: www.我的域名.me/api/index.php No Exception-Cause available.”这个错误提示,我在网上还搜不到解决方案。作为一个电脑白痴,表示不知所措。烦请大神指点。(/ω\)

            1. sword   ( Android 8.1.0 Android 8.1.0 / WebView 4.0 WebView 4.0 )
              @Tshore

              1、全文输出api只是增强插件,并不是必须的,没有也可以用,和客户端api是完全不相关的两回事;
              2、所以你的地址是啥,一直没说啊

  6. 奶爸de笔记   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 )

    看到的第三篇这个教程了,当我的rss阅读器不能用了我就自己搭建一个。