在VPS上部署Stringer RSS阅读器的完整指南
stringer A self-hosted, anti-social RSS reader. 项目地址: https://gitcode.com/gh_mirrors/st/stringer
Stringer是一个现代化的RSS阅读器,本文将详细介绍如何在VPS上部署Stringer服务。我们将从基础环境配置开始,逐步完成整个部署过程。
一、系统依赖安装
首先需要安装Stringer运行所需的基础依赖包,不同Linux发行版的安装命令略有不同。
Ubuntu/Debian系统
sudo apt-get install git libxml2-dev libxslt-dev libcurl4-openssl-dev libpq-dev build-essential postgresql libreadline-dev
CentOS/Fedora系统
sudo yum install git libxml2-devel libxslt-devel curl-devel postgresql-devel make automake gcc gcc-c++ postgresql-server readline-devel openssl-devel
CentOS系统还需要初始化PostgreSQL服务:
service postgresql initdb && service postgresql start
Arch Linux系统
pacman -S git postgresql base-devel libxml2 libxslt curl readline postgresql-libs
Arch Linux需要额外配置PostgreSQL:
systemd-tmpfiles --create postgresql.conf
chown -c -R postgres:postgres /var/lib/postgres
sudo su - postgres -c "initdb --locale en_US.UTF-8 -E UTF8 -D '/var/lib/postgres/data'"
systemctl start postgresql
systemctl enable postgresql
二、数据库配置
Stringer使用PostgreSQL作为后端数据库,需要先创建专用用户和数据库。
- 创建数据库用户:
sudo -u postgres createuser -D -A -P stringer
执行后会提示设置密码,请妥善保存。
- 创建数据库:
sudo -u postgres createdb -O stringer stringer_live
三、创建专用用户
为安全考虑,建议为Stringer创建专用系统用户:
sudo useradd stringer -m -s /bin/bash
sudo su -l stringer
注意:切换用户时务必使用-l
参数,否则用户配置文件不会被加载。
四、Ruby环境配置
我们将使用Rbenv管理Ruby版本,确保环境隔离。
- 安装Rbenv:
cd
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> $HOME/.bash_profile
echo 'eval "$(rbenv init -)"' >> $HOME/.bash_profile
git clone git://github.com/sstephenson/ruby-build.git $HOME/.rbenv/plugins/ruby-build
source ~/.bash_profile
- 安装Ruby 2.7.5:
rbenv install 2.7.5
rbenv local 2.7.5
rbenv rehash
- 安装必要的Ruby工具:
gem install bundler
rbenv rehash
gem install foreman
五、Stringer安装与配置
- 获取Stringer源代码:
git clone git@github.com:stringer-rss/stringer.git
cd stringer
- 安装依赖:
bundle install
rbenv rehash
- 配置环境变量:
echo 'export DATABASE_URL="postgres://stringer:EDIT_ME@localhost/stringer_live"' >> $HOME/.bash_profile
echo 'export RACK_ENV="production"' >> $HOME/.bash_profile
echo 'export RAILS_ENV="production"' >> $HOME/.bash_profile
echo "export SECRET_KEY_BASE=`openssl rand -hex 64`" >> $HOME/.bash_profile
echo "export ENCRYPTION_PRIMARY_KEY=`openssl rand -hex 64`" >> $HOME/.bash_profile
echo "export ENCRYPTION_DETERMINISTIC_KEY=`openssl rand -hex 64`" >> $HOME/.bash_profile
echo "export ENCRYPTION_KEY_DERIVATION_SALT=`openssl rand -hex 64`" >> $HOME/.bash_profile
source ~/.bash_profile
注意:将EDIT_ME
替换为之前设置的数据库密码。
- 初始化数据库:
rake db:migrate RAILS_ENV=production
- 启动应用:
foreman start
六、定时任务配置
设置定时任务自动抓取RSS源:
crontab -e
添加以下内容:
SHELL=/bin/bash
PATH=/home/stringer/.rbenv/bin:/bin/:/usr/bin:/usr/local/bin/:/usr/local/sbin
*/10 * * * * source $HOME/.bash_profile; cd $HOME/stringer/; bundle exec rake fetch_feeds;
七、系统服务管理(Systemd)
将Stringer配置为系统服务:
- 生成systemd服务文件:
cd ~/stringer
mkdir systemd-services
foreman export systemd systemd-services -a stringer -u stringer
- 安装服务文件:
sudo cp -a ~stringer/stringer/systemd-services/* /etc/systemd/system
- 启动并设置开机自启:
sudo systemctl start stringer.target
sudo systemctl enable stringer.target
八、Nginx反向代理配置
为Stringer添加Nginx反向代理,提升安全性:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:1337/;
proxy_set_header Host $host;
}
}
如需HTTPS支持,可取消注释相关SSL配置并配置证书路径。
九、Apache与Passenger部署方案
如果已有Apache环境,可使用Passenger部署Stringer:
- 安装mod_passenger(参考官方文档)
- 重新安装依赖:
cd ~/stringer
bundle install --path vendor/bundle
- 配置database.yml:
sed -i "s|url: .*|url: $DATABASE_URL|" config/database.yml
- 添加Apache虚拟主机配置:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /home/stringer/stringer/public
PassengerEnabled On
PassengerAppRoot /home/stringer/stringer
PassengerRuby /home/stringer/.rbenv/shims/ruby
<Directory /home/stringer/stringer/public>
Options FollowSymLinks
Require all granted
AllowOverride All
</Directory>
</VirtualHost>
至此,Stringer RSS阅读器已成功部署在您的VPS上。您可以通过配置的域名访问服务,开始享受个性化的RSS阅读体验。
stringer A self-hosted, anti-social RSS reader. 项目地址: https://gitcode.com/gh_mirrors/st/stringer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考