前两天长毛象上有人问关于 RSSHub 部署的相关问题,今天回复了之后,又去看了看官方的文档,发现官方文档有些地方写的太简略了,对于零基础的新手来说并不友好,于是今天在此尝写一篇详细的文章介绍如何部置RSSHub。
方法选择
RSSHub官方文档中提到了4种部署方法:
手动部署
Docker
Heroku
Google App Engine
后两种因为是限定在特定平台上的方法,本文就不进行介绍了。
手动部署
优点:节省空间、自定义程度高、可供自行开发调整
缺点:部署操作较麻烦
Docker
优点:操作简单、维护较方便
缺点:占用空间较大、自定义程度低、不适合于自行开发
对于初学者来说,强烈建议使用 Docker 进行部署。
手动部署
安装 NodeJS
Ubuntu
curl --silent --location https://deb.nodesource.com/setup_6.x | sudo bash - sudo apt-get install --yes nodejs
Debian
apt-get install curl curl --silent --location https://deb.nodesource.com/setup_6.x | bash - apt-get install --yes nodejs
Red Hat
curl --silent --location https://rpm.nodesource.com/setup | bash - yum -y install nodejs
下载文件
部署安装
国内
国外
启动
尝试访问以下两个网址,如果访问成功,即安装成功。
视频演示
创建 systemd 服务
[Unit] Description=Rsshub(https://github.com/DIYgod/RSSHub) After=network.target Wants=network.target [Service] Type=simple User=rsshub Group=rsshub WorkingDirectory=/srv/app/RSSHub Environment= ExecStart=/bin/bash -c 'npm start' Restart=on-failure [Install] WantedBy=multi-user.target
适当修改 WorkingDirectory
后,将上述内容写入 /etc/systemd/system/rsshub.service
文件中。
然后重载服务,启动、激活 RSSHub 服务。
sudo systemctl daemon-reload sudo systemctl start rsshub.service sudo systemctl enable rsshub.service sudo systemctl status rsshub.service
Docker
安装Docker
Docker安装方法请参考 Docker官方文档。
下面仅介绍 Ubuntu 16.04及更高版本的安装方法。
sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update sudo apt-get install docker-ce
拉取 RSSHub 镜像
运行 RSSHub
创建服务
创建 /etc/systemd/system/docker-rsshub.service
文件。
[Unit] Description=Rsshub container Requires=docker.service After=docker.service [Service] Restart=on-failure ExecStart=/usr/bin/docker start -a rsshub ExecStop=/usr/bin/docker stop -t 2 rsshub [Install] WantedBy=default.target
启动服务 ,启动服务前请确保 rsshub docker 已经停止。
sudo systemctl daemon-reload sudo systemctl start docker-rsshub.service sudo systemctl enable docker-rsshub.service sudo systemctl status docker-rsshub.service
视频演示
进阶配置
完成以上安装后,可以生成大多数网站的RSS,但部分RSS需要单独配置后方可生成,如 pixiv、disqus、twitter、youtube、telegram、github。
下面将以 pixiv 为例介绍相应的配置方法。
手动部署
手动部署直接修改 systemd service 文件,在 Environment
中加入所需环境变量即可。可添加多个变量,变量之间使用空格分隔开来。
Description=Rsshub(https://github.com/DIYgod/RSSHub) After=network.target Wants=network.target [Service] Type=simple User=rsshub Group=rsshub WorkingDirectory=/srv/app/RSSHub Environment=PORT=1200 CACHE_TYPE=memory CACHE_EXPIRE=600 LISTEN_INADDR_ANY=0 PIXIV_USERNAME=user PIXIV_PASSWORD=password ExecStart=/bin/bash -c 'npm start' Restart=on-failure [Install] WantedBy=multi-user.target
各个环境变量含义请参考 RSSHub文档。
默认情况下请不要添加环境变量,请理解环境变量含义后根据需裘添加。
Docker
修改rsshub容器启动命令,中加入所需环境变量即可。
修改前,先删去原有容器。
上面的 systemd service 文件等价于以下 docker 命令。
更新RSSHub
RSSHub版本迭代较快,应当及时更新,现介绍RSSHub更新方法。
手动部署
Docker
删除RSSHub
手动部署
Docker
Nginx?
虽然使用 PORT=80
、LISTEN_INADDR_ANY=1
两个参数再配置好防火墙就可以直接访问了,但是不建议这样做。最好还是在RSSHub前面加上一个Nginx。
另外使用Nginx还有一些其它好处,比如说:HTTPS支持,修改请求,重定向请求……
结语
这篇文章12月初就开始写了,但之前写了一半,直到今天才抽出时间把它全部写完。也算是一个总结吧。
最后放上我的RSSHub地址,如果有需要请自行使用。
由于主机在国外,知乎RSS很容易触发反爬,所以我把它重定向到本地了。
运行用户问题
如果你是手动部署的话,还存在运行用户的问题。现在让我们回顾一下,之前的 rsshub.service 文件。
请注意这两行,如果不在 service文件 中指明 User
、Group
的话,运行时的用户便是 root
,为了安全起见,请你用普通用户运行 RSSHub。
具体来说,便是使用普通用户(假设该用户为 rsshub
)下载(git clone
)、安装(npm install
)RSSHub。
然后在 service文件 中,设置 User
、Group
为 rsshub
。
如果你使用 Docker 的话则不存在这个问题。