前注:由于该repo的更新及重构,rtinst脚本的重大变更,此处的安装步骤已经不能使用,仅供参考。
以前发布美剧0day都是本地ut下种发种,那时候就很羡慕类似WHU或者CMCT这样自建有Autoseed的站点。趁着自己还熟悉一些编程,就询问了群里另一位开发种机的dalao怎么建发种机。然后得到了这样的结果(扑。。
好吧,那就自己写吧(其实我原来想直接借用的QAQ)。然后就用Python写了个以transmission为PT工具的,专司发布剧集的发种机。
当然本文并不是讲这些故事,主要来梳理下怎么搭建这个Byrbt-Autoseed。(这是一个很复杂的过程QAQ
来先梳理下,pt工具是transmission,因为有相关python库而且好用(然而并不是,在实际写程序以及运行过程中遇到了很多问题);RSS订阅依赖flexget和irssi-autodl, flexget一则处理国内站点rss源方便,二来能填补irssi-autodl中未能订阅成功(以及不能发布proper的情况,估计是我没设置好的原因2333),irssi-autodl就更不用说了,外站必用;数据库管理用mysql,在写程序过程中也曾想过使用本地sqlite,然而实际考虑过一些问题后发现还是mysql好用,而且可以远程控制,方便后期维护,虽然有内存占用的问题存在,但是应该注意到seedbox在多数情况下不用考虑内存问题。
本文以在Vultr新开一台全新机(演示完已删除)为背景叙述。所用系统为Ubtuntu 14.04。开有IPv6支援,全程使用sudo提权或者使用root用户。
配置基本环境
使用putty登陆vps,依次安装transmission、flexget、rt+irssi-autodl、mysql、supervisord。
- 安转transmission(参考 Ubuntu 14.04 安装Transmission2.82 )
apt-get -y install software-properties-common
add-apt-repository -y ppa:transmissionbt/ppa
apt-get update
apt-get -y install transmission-cli transmission-common transmission-daemon
安装好先停了服务就行,相关配置文件(settings.json)等基础环境全部安装好后在修改service transmission-daemon stop
- 安转flexget
apt-get -y install python-pip
pip install flexget
- 安转rt+irssi-autodl(这里为了方便,使用一键脚本进行安装)
①获取脚本
cd
cd temp
wget https://raw.githubusercontent.com/arakasi72/rtinst/master/rtinst.sh --no-check-certificate
②修改脚本内容
因为各大pt站禁rt 0.9.6,降级
apt-get –y install vim
vi rtinst.sh
修改以下字段并保存退出,
③运行脚本,填入rt密码,等待脚本执行完毕。注意脚本会提示创建新用户,并修改默认ssh端口。(如果在输入信息时出错请按住ctrl再按删除键)bash rtinst.sh
安装完成,可以看到ssh端口已经被移到了23889了。另外脚本更改了ssh设置,禁止使用root用户登录。
- 继续安装mysql(这一步并不是必须的,也可以使用远程mysql)
apt-get -y install mysql-server
安转过程中会提示重复输入mysql的root密码。
- 安转supervisord(程序使用supervisord启动并保证能断线重启)
pip install supervisor
- 脚本相关的依赖库
apt-get -y install python3-pip mediainfo
pip3 install pymysql transmissionrpc requests bs4 pymediainfo
至此脚本所有依赖安装过程完毕。我们来一一调教刚才安装的依赖~
transmission配置
参考 Ubuntu 14.04 安装Transmission2.82,建议将tr有关目录放在安装rt时候脚本自动创建的用户目录中(特别是watch目录)。完成后开启tr服务service transmission-daemon start
mysql配置
mysql -uroot –p
1、创建用户及相关数据库(<...>请自己修改)
CREATE USER '<user>'@'%' IDENTIFIED BY '<password>';
CREATE DATABASE IF NOT EXISTS `<database>`;
GRANT ALL PRIVILEGES ON `<database>`.* TO '<user>'@'%';
2、创建表格USE <database>;
复制 sql/table_only.sql 中的内容并执行,完成后退出即可。(你也可以导入TV-series.sql 中的相关剧集信息)
3、修改数据库远程访问权限vi /etc/mysql/my.cnf
找到并注释掉该行,并保存退出# bind-address =127.0.0.1
获取Autoseed并配置
git clone https://github.com/Rhilip/Byrbt-Autoseed.git
cd Byrbt-Autoseed
cp settings.example.json settings.json
mv web-part/ <web_loc>; # web_loc一般为/var/www,(具体见nginx设置)
vi settings.json
填写以下信息
注:byr_cookies请开一个隐身窗口获取,防止平时误退出导致cookies失效;
配置supervisord
更多参见 “使用 supervisor 管理进程”
- 创建默认模板
echo_supervisord_conf > /etc/supervisord.conf # 创建默认配置文件
supervisord -c /etc/supervisord.conf #启动supervisord.conf
mkdir /var/log/autoseed # 创建日志文件夹
mkdir /etc/supervisord # 创建supervisord配置文件夹
编辑/etc/supervisord.conf,直接拉到最后,修改原本被注释掉的[include]字段为
[include]
file= /etc/supervisord/*.conf
- 创建autoseed.conf
cd /etc/supervisord
vi autoseed.conf
参考实例
[program:autoseed]
directory = /home/rhilip/Byrbt-Autoseed ; 程序的启动目录
command = python3 autoseed.py ; 启动命令,可以看出与手动在命令行启动的命令是一样的
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = root ; 用哪个用户启动
; stdout 日志文件
stdout_logfile = /var/log/autoseed/out.log
stdout_logfile_maxbytes = 10MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 5 ; stdout 日志文件备份数
; sterr 错误日志文件
stderr_logfile = /var/log/autoseed/err.log
stderr_logfile_maxbytes = 10MB
stderr_logfile_backups = 5
- 启动
supervisord -c /etc/supervisord.conf
如果无误的话,可以用 supervisorctl -c /etc/supervisord.conf 看到以下信息
至此基本完成。
关于flexget、irssi-autodl、nginx的部分就不在此文叙述。
数据库也可以考虑使用本地软件管理,也不多说了。
请问站长什么专业?本硕?