这是记录和整理搭建ttrss步骤的一篇文章,于此。

原因

因为发现自己好像经常花时间去看知乎、微博之类的里面的问题,而白白浪费了时间,且没有学到任何事情。并且,感觉这些平台根据兴趣推送的信息,以及下面的不理性的评论。使自己出现了非理性的负面的倾向——可能被带节奏了。

于是,我找到了 新闻聚合 ,通过rss和atom协议向新闻聚合程序的使用者推送经过遴选过的信息,不包括评论。限制信息的获取途径以避免被无用信息淹没。

新闻聚合有很多的软件能用,跑在客户端的,跑在服务器的……正好有一个小vps,于是,我选择的是tiny tiny rss,运行在服务器端的,基于web的免费开源的新闻提要阅读和汇总器。

过程

在搭建tt-rss的服务器的过程中,我遇到了很多坑,大多数是因为我不了解php和nginx,以及mysql的配置信息导致的。

我的系统环境是debian 10。

包管理器安装

我最开始尝试通过debian包安装ttrss, apt install ttrss ,但是因为包管理器的安装,个人感觉太过困难,于是我放弃了包管理器安装。

不过,如果可以的话,还是使用包管理器自带的软件比较稳定和方便。

配置mysql数据库

在执行 mysql -p -u root 以登陆root账号,创建数据库的时候,遇到了一个错误,如下:

1
ERROR 2002 (HY000): Can't connect to MySQL server through socker '/v……/mysqld/mysqld.socks'

一个看起来很蠢的错误,但是依旧是困了我好几个小时……因为我以为在安装tt-rss的时候,mysql依赖都装完了。

结果,到处找mysqld的启动脚本,像 systemctl start mysql(d) 这样的命令执行了好几次……(自然的,每次都报"找不到’mysql(d).service’"。)

最终,发现的结果是, mariadb-server 才是debian的mysql服务端。(mariadb好像是mysql的替代品?不清楚……)执行 systemctl start mariadb.service 启动mariadb守护进程。

最后,登陆到mysql环境后,执行下面的指令,初始化数据库,数据库配置就此告一段落。

1
2
3
4
5
6
mysql> CREATE USER '<用户名>'@'localhost' IDENTIFIED BY '<对应用户的密码>';
# 新建用户
mysql> CREATE DATABASE <数据库名称>;
# 新建数据库
mysql> GRANT ALL PRIVILEGES ON <数据库名称>.* TO "<用户名>"@"localhost" IDENTIFIED BY '<密码>';
# 赋予用户新建的数据库的操作权限

下载网站文件,并配置nginx和php

虽然官方网站推荐的是使用docker安装,但是……我觉得我的vps空间并没有那么大能用来装docker,所以使用的是主机安装。

下载源代码

执行此命令克隆源码到服务器

1
git clone https://git.tt-rss.org/fox/tt-rss.git tt-rss

配置nginx配置文件

在nginx配置文件中加一个location块,然后在这个块里面再加上一个块,用于配置php。(之前不知道还能嵌套location块,还在到处找怎么让nginx一个块匹配多条件……QWQ)

示例配置如下,nginx在debian的配置文件路径一般在/etc/nginx/nginx.conf,示例配置不包括server块,需要自行添加。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
location /ttrss {
root <上述源码所在路径的父目录> ;
autoindex  on;
allow all;
index index.php index.html index.htm ;
location ~ \.php$ {
#	php环境配置
      fastcgi_pass unix:/tmp/php-fpm.sock;
#	设置nginx与php-fpm通讯的方式路径,这里和php-fpm配置的方式必须相同,这里是通过套接字文件。
      fastcgi_index  index.php;
#	fastcgi_param  SCRIPT_FILENAME  /home/leimengyao/api/app/htdocs$fastcgi_script_name;
      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      include        fastcgi_params;
      }
}

安装php

在debian,tt-rss依赖于php。这里使用debian自带的包安装php,并配置。

1
# apt install php-cli php-curl php-mbstring php-json php-intl php-gd php-pgsql php-xml php-opcache php-cgi php-fpm php-mysqli

不确定这么多包是不是都是被依赖的,不过可以肯定的是,php-fpm是必须装的。然后,php-mysqli这个包不再可能会对正常运行tt-rss有影响。

配置php-fpm

找到php-fpm的配置文件。deebian10的这个配置文件位置位于/etc/php/7.3/fpm/php-fpm.conf

然后在这个文件的最后,加上:

1
listen = /tmp/php-fpm.sock (等号后面的必须与nginx的fastcgi_pass的值一致)

然后启动php-fpm守护进程,在debian10是使用 php-fpm7.3 命令启动。(不知道为什么没有软链接什么的非要加上版本号)

如果这个命令不对的话,可以用bash的补全找找看—— php-fpm<TAB> 就像这样。

遇到的一些其他的问题

在配置的时候遇到了服务器空白回应(浏览器什么都不显示,包括404之类的错误码)的问题,可能是nginx把错误的文件路径发送给php-fpm处理,导致php-fpm返回空。

解决方案是,在nginx的fastcgi_params配置文件(一般在 nginx配置路径/fastcgi_params ,debian软件源安装的位于 /etc/nginx/fastcgi_params )里追加一段:

1
2
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
fastcgi_param PATH_INFO                $fastcgi_script_name;

网站初始化

访问设置的网站位置,如果一切顺利的话,会来到安装导航页,比如我的导航页是https://test.ggwwff.ml/ttrss/install

顺着安装指引操作,就装好了。

安装指引

我觉得这里应该是最简单的部分,不过姑且还是说一下吧?

在这个简易导航页,按照提示输入网站所在的位置,数据库账户以及密码(在之前配置mysql设置的账户密码),选择使用的数据库(我选择的是mysql)

然后点击"测试配置",如果一切顺利,就能进入下一步。(tt-rss缺少php-mysqli的依赖的问题就是在这里发现的。)

如果php-fpm拥有对安装目录的读写权限,那么应该就会自动完成配置。如果失败,复制网页上的配置。然后手动创建和打开tt-rss的配置文件,并把之前复制的配置写入到配置文件里。

1
nano /ttrss/源码/所在的目录/config.php

如果有更改配置文件的要求的话,就是在这步改咯。

安装结束

访问ttrss,使用默认账户和密码登陆,然后请立即更改默认密码。

1
2
默认账户:admin
默认密码:password

结束

tt-rss到这里就安装结束了,你可以在网站上添加其他平台提供的rss,来阅读rss新闻。

(如果想订阅这篇博客的rss的话,按一下下面那个像wifi一样的图标就可以订阅了呢!大概?)

年龄在今天又增加了一岁,祝自己生日快乐吧!

不过,花了接近两个半小时才写完呢,真的有点慢呢……估计很啰嗦吧……

嗯……就这样吧,不管了!