OneinStack 搭建 LNMP 安装 Tiny Tiny RSS

一般手机上看 RSS 订阅,Feedly + Reeder 3 用很长时间了,Reeder 4 出来了,非必需品,直接用 Reeder 3 或者 Feedly 也挺好,目前已买,用别人分享账号下载使用更新麻烦。

一直看着别人自建 RSS 服务,想折腾试试,可是一直懒得折腾,目前没有太大需求必须自建,Feedly 目前够用,而且自建稳不稳还得看服务器,Tiny Tiny RSS 也耗资源……忍不住,趁瓦工闲置 VPS (512M 内存,10G 硬盘)还有几个月时间,折腾试试。

内容简介:OneinStack 搭建 LNMP 安装 Tiny Tiny RSS,自建 RSS 阅读器。Tiny Tiny RSS 安装,配置自动更新,自动获取全文RSS,更换主题等。

OneinStack 搭建 LNMP

LNMP 环境使用 OneinStack 搭建,不详细说,可参考老杨之前折腾记录或者官方文档(PHP 记得把 fileinfo 编译上)。Nginx 1.17.4 + PHP 7.3 + PostgreSQL 10.4(Tiny Tiny RSS 推荐使用 PostgreSQL)「后来为了方便以后迁移,改用 MariaDB 10.3」,这配置,搭建环境就花了正正两个小时:Total OneinStack Install Time: 124 minutes

目前建议配置:Nginx 1.17.4 + PHP 7.3(开启 OPcache,fileinfo) + MariaDB 10.3 + phpMyAdmin

Tiny Tiny RSS(简称TT-RSS)安装

官网:https://tt-rss.org

环境需求:PHP 版本 5.6 或者更新版本(建议开启 OPcache);PostgreSQL (9.1 或者更新版本) 或者 MySQL - 需要 InnoDB 支持。

PostgreSQL 新建用户 & 数据库

建议 MySQL/MariaDB 数据库,直接 phpMyAdmin 管理更方便。

PostgreSQL 方向需要可点击查看▼展开

PostgreSQL 貌似无法使用 phpMyAdmin 管理 PostgreSQL,使用命令添加用户和数据库。安装完成,会有 PostgreSQL 用户密码信息,如:用户 postgres,密码 ooxx67696969

切换到 postgres 用户

sudo su - postgres

使用 psql 命令登录 PostgreSQL 控制台

psql

这里会提示「Password for user postgres:」,输入密码即可进入控制台。

创建数据库用户 ttrss,并设置密码:

CREATE USER ttrss WITH PASSWORD 'your_password';

创建用户数据库 ttrssdata,并指定所有者为 ttrss

CREATE DATABASE ttrssdata OWNER ttrss;

将 ttrssdata 数据库所有权限都赋予用户 ttrss,否则 ttrss 只能登录控制台,没有任何数据库操作权限

GRANT ALL PRIVILEGES ON DATABASE ttrssdata to ttrss;

添加完成,使用 \q 命令退出控制台。

MySQL/MariaDB 新建用户 & 数据库

这个比较简单,登陆 phpMyAdmin 建立即可。

下载 Tiny Tiny RSS 并安装

官方文档:Installing Tiny Tiny RSS for the first time

进入想要安装 TTRSS 网站目录「/data/wwwroot/rss.0xo.net/」(请根据实际修改),执行 git clone 下载:

cd /data/wwwroot/rss.0xo.net/ && git clone https://tt-rss.org/git/tt-rss.git

修改 tt-rss 目录权限(不修改后面 www 用户可能无法使用 crontab 定时更新 feed 数据):

chown -R www /data/wwwroot/rss.0xo.net

访问 TTRSS 安装程序:

https://rss.0xo.net/install/

安装界面,根据实际填写数据库信息:

 479-ttrss-install

接着 Tiny Tiny RSS 会自动生成 config.php 文件,如果因为目录权限不够没有自动生成,可以手动复制放在 config.php 文件中上传到服务器中。

然后点击 Save configuration 完成安装。

登录 TTRSS

如果前面权限配置好,直接打开 https://rss.0xo.net/install/ 就能进入 TTRSS。

若提示错误,按提示修改即可。▼展开

Startup failed
Tiny Tiny RSS was unable to start properly. This usually means a misconfiguration or an incomplete upgrade. Please fix errors indicated by the following messages:

Image cache is not writable (chmod -R 777 cache/images)
Upload cache is not writable (chmod -R 777 cache/upload)
Data export cache is not writable (chmod -R 777 cache/export)
ICONS_DIR defined in config.php is not writable (chmod -R 777 feed-icons).
LOCK_DIRECTORY defined in config.php is not writable (chmod -R 777 lock).
PHP function mime_content_type() is missing, try enabling fileinfo module.

SSH 登录 VPS,进入 TTRSS 安装目录,比如 /data/wwwroot/rss.0xo.net/,执行:

chmod -R 777 cache/images && chmod -R 777 cache/upload && chmod -R 777 cache/export && chmod -R 777 feed-icons && chmod -R 777 lock

即可解决前面五条错误提示。(如果前面已经执行 chown -R www /data/wwwroot/rss.0xo.net,这五条错误应该不会出现)

而 PHP function mime_content_type() is missing, try enabling fileinfo module. 需要 PHP 编译开启 fileinfo(若搭建环境已开启,就不会有这个错误提示)。OneinStack 安装的 PHP 7.3.5 开启 fileinfo 方法:

参考:php7安装fileinfo扩展

温馨提示:小内存(1G 以下)机器,一定要加 swap,最少 512M 吧,要不然可能会编译失败。

fileinfo 已集成至 php 项目源代码内(https://pecl.php.net/package/Fileinfo)

cd /root/oneinstack/src
tar -zxvf php-7.3.5.tar.gz
cd php-7.3.5/ext/fileinfo
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-fileinfo
make && make install

编译成功,修改 php.ini 添加 fileinfo.so

echo 'extension="fileinfo.so"' >> /usr/local/php/etc/php.ini

然后重启 php:

service php-fpm restart

检查是否开启成功:

php -i | grep fileinfo

开启成功可看到如下字样:

……
fileinfo
fileinfo support => enabled

待数据库和文件属性检测通过,就可以正常登录,默认管理员账户是:admin,密码是:password。登录成功记得先按提示修改密码。

TTRSS 数据更新

主要有两种模式:一种是简单更新(每次登录 TTRSS 更新),一种是服务器自动更新(使用 crontab 定时更新)。详见官方文档:Tiny Tiny RSS Updating Feeds

PHP_EXECUTABLE 设置 PHP 路径:

define('PHP_EXECUTABLE', '/usr/local/php/bin/php');

简单更新模式,config.php 配置文件将 SIMPLE_UPDATE_MODE 设置为 true,这样每次打开 Tiny Tiny RSS 就会更新 RSS 订阅数据。

define('SIMPLE_UPDATE_MODE', true);

定时更新模式,不能使用 root 身份运行 TTRS PHP 更新脚本,可以 www 身份运行。

CentOS 7 修改 /etc/crontab 文件,指定用户执行更新脚本

vi  /etc/crontab

增加定时任务,使用 www 用户执行:

*/30 * * * * www  /usr/local/php/bin/php  /data/wwwroot/rss.0xo.net/update.php --feeds --quiet

注意:30分钟更新一次,须与 TTRSS 后台偏好设置更新频率一致。update.php 单进程,多进程是 update_daemon2.php(实测不好用,会锁死进程更新不了)。

还有两种添加定时任务方法,不过试过不能更新数据:▼展开

1、以 www 用户身份添加定时任务:

crontab -u www -e
*/5 * * * * /usr/local/php/bin/php /data/wwwroot/rss.0xo.net/update.php --feeds --quiet

每5分钟运行一次,/usr/local/php/bin/php 为 php 绝对路径,根据需要来修改。

2、root 添加定时任务,指定使用 www 用户执行:

*/5 * * * * su -m www -c "/usr/local/php/bin/php /data/wwwroot/rss.0xo.net/update.php --feeds --quiet"

重启crontab服务:

service crond reload

或者直接 reboot 重启一下系统。

可以通过日志查看定时任务是否执行:

tail -f /var/log/cron

会有如下日志:

May 21 12:00:01 host CROND[3684]: (www) CMD ( /usr/local/php/bin/php /data/wwwroot/rss.0xo.net/update.php --feeds --quiet)

如果有如下错误提示:

(CRON) ERROR chdir failed (/home/www): No such file or directory

前往 home,创建 www 目录并改目录所有者为 www 即可。

chown -R www /home/www

TTRSS 使用

信息源管理

后台 - 偏好设置 - 信息源 - OPML,可以导入/导出 OPML

 479-ttrss-opml

启用 GZip 压缩

间接提升访问速度,config.php 文件将 ENABLE_GZIP_OUTPUT 值改为 true 即可。

define('ENABLE_GZIP_OUTPUT', true);

客户端

Android 客户端:Tiny Tiny RSS,iOS 客户端:tiny Reader。

这两个客户端,偏好设置 - 通用 -「启用API,允许外部客户端通过 API 来访问该账户」,即可使用 TTRSS 账户登录使用(tiny Reader 亲测,安卓没有测试)。

 479-ttrss-api

如果 iOS 想使用 Reeder,要配合 Fever 插件使用。

安装方法:

cd tt-rss/plugins.local
git clone https://github.com/DigitalDJ/tinytinyrss-fever-plugin fever

然后到:偏好设置 - 插件 - 用户插件,选择 Fever,点「启用选择的插件」……

 479-ttrss-fever

重新登录 TTRSS,偏好设置底下会出现:Fever Emulation,进去设置密码,Reeder 使用 API,TTRSS 用户名 admin,以及这里设置的密码登录即可。

 479-ttrss-fever-set

RSS 全文

需要安装 mercury_fulltext 插件支持,而且 Mercury Parser API 以及开源,还得自己搭建 Mercury Parser API。

安装 mercury_fulltext 插件

cd tt-rss/plugins.local
git clone https://github.com/HenryQW/mercury_fulltext.git

然后「偏好设置」中启用 mercury-fulltext 插件。

搭建 Mercury Parser API

资源:HenryQW - Mercury Parser API

Docker 搭建,很简单。CentOS 7 安装 Docker-CE

# 安装依赖
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

mercury_fulltext 设置

「偏好设置」-「信息源」-「Mercury Fulltext settings (mercury_fulltext)」,填入自建 Mercury Parser API 地址:localhost:3000,保存。

 479-ttrss-mercury-parser-api

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

 479-ttrss-mercury-feed

如无意外就可以了。

主题

Feedly 主题不错:Feedly theme for Tiny Tiny RSS

安装方法:

wget https://github.com/levito/tt-rss-feedly-theme/archive/master.zip ## 下载主题文件
unzip master.zip  ## 解压
cd tt-rss-feedly-theme-master  ## 进入主题目录
cp -r feedly* [TT-RSS_Home 地址]/themes.local  ## 复制主题文件到 TTRSS 目录

然后进入「偏好设置」-「主题」切换主题即可。

另:🐋 Awesome TTRSS 是个好网站。

TTRSS 使用体会

用了两天,iOS 配上 Reeder 4,感觉跟 Feedly + Reeder 4 没什么差别。Feedly 导出 OPML,导入 TTRSS,顺手清理了一下失效订阅源。估计会一直用 TTRSS。

参考资料

Tiny Tiny RSS - 专属于你的RSS服务

用Tiny Tiny RSS搭建自用RSS阅读器

🐋 Awesome TTRSS

除非注明,常阳时光文章均为原创,本文地址 https://cyhour.com/479/ 转载时必须以链接形式注明原始出处。
Vultr 送$25,搬瓦工年付最低$49,优惠码 BWH34QMFYT2R,更多推荐VPS信息,或支持老杨
Views: 4.3K Tags:  ,  ,  , 

Comments:16

  1. 这个坑我也要挖着,等现在的rss用不了了来装。

    2019.05.23 11:22 # 回复
    1楼
  2. 哦啊,被我安利了,这么快就把教程折腾好了。

    2019.05.23 13:53 # 回复
    2楼
  3. 我几乎试遍了所有稍有点名气的rss服务程序,包括ttrss,没一个合适的,要么功能有问题,要么不稳定,要么要求高,比如必须php7,mysql高版本,要么是GO的,要么就事要装一些平时用不到的php库、等等。
    实在受不了,为啥么不能出个php和mysql版本低点的呢?

    2019.05.24 20:55 # 回复
    3楼
  4. 很久没有用rss订阅了。

    2019.05.25 00:56 # 回复
    4楼
  5. 目录要777权限,有点不科学啊

    2019.05.29 13:40 # 回复
    5楼
  6. 我还是使用reeder 3吧,折腾起来有点复杂

    2019.07.05 22:48 # 回复
    6楼

发表留言

Vultr 送$25,搬瓦工年付最低$49,优惠码 BWH34QMFYT2R,更多推荐VPS信息