欢迎光临
我们一直在努力

CentOS7安装TorrentBOX

TorrentBOX是一个开源的用Python3写的多用户BT下载工具,该项目已经烂尾,不过不影响使用。所以我还是尝试着部署了一下,只能说坑是真的太多了。。。

因为这个项目依赖python3和libtorrent,而CentOS7上面的python最高只支持到2.7,所以我们得先想办法装个python3上去,虽然方法很多,比如之前我一直常用的pyenv,但是我测试了pyenv安装的python3不能应用在这个项目上。所以我想到了用CentOS的scl工具。好,现在python3是安装上去了,但是我们还得让这个全新的python3能够导入libtorrent,而libtorrent在CentOS上也没有现成可用的包,所以只能去编译,但是众所周知编译libtorrent又依赖于boost这个C++库,而CentOS用yum安装的boost库是基于python2.7的,所以我们还得去编译一遍boost。。。。。。

所以我们要搭建这个TorrentBOX,首先得在系统上安装一个python3+boost库+libtorrent,这几个玩意在编译的过程中实在是太蛋疼,下面我记录的这个编译方法,只是在我自己的机器上测试通过可用,别的机器上如有问题,请勿留言,自己折腾吧。。。

先更新系统:

yum -y update

安装EPEL源:

yum -y install epel-release

安装开发工具包:

yum -y groupinstall "Development Tools"

安装SCL源:

yum -y install centos-release-scl

安装Python3.6:

yum -y install rh-python36

把当前shell的Python版本切换为3.6:

scl enable rh-python36 bash

安装编译boost所需的依赖:

yum -y install zlib-devel bzip2-devel

下载boost源码包解压并进入到目录:

wget https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.gz
tar -xzvf boost_1_68_0.tar.gz
cd boost_1_68_0

使用下面的参数进行配置:

./bootstrap.sh --with-libraries=all --with-python=/opt/rh/rh-python36/root/usr/bin/python3 --with-python-root=/opt/rh/rh-python36/root/usr/bin --with-python-version=3.6

完成之后编辑这个配置文件:

vi project-config.jam

复制下面这段代码:

using python : 3.6 : /opt/rh/rh-python36/root/usr/bin : /opt/rh/rh-python36/root/usr/include/python3.6m : /opt/rh/rh-python36/root/usr/lib64/python3.6 ;

直接替换掉如图红框标注的位置:

开始编译,并使用C++11:

./b2 cxxflags="--std=c++11" -j2

完成之后把Boost库直接安装到usr这个路径下面,这样可用省去配置环境变量的步骤,如果你安装在别的位置了,就自己ldconfig一下吧。

./b2 install --prefix=/usr

现在安装编译libtorrent所需的依赖:

yum -y install gcc gcc-c++ qt-devel openssl-devel qt5-qtbase-devel qt5-linguist

下载libtorrent源码包解压并进入到目录内:

cd
wget https://github.com/arvidn/libtorrent/releases/download/libtorrent_1_1_11/libtorrent-rasterbar-1.1.11.tar.gz
tar -zxf libtorrent-rasterbar-1.1.11.tar.gz
cd libtorrent-rasterbar-1.1.11

使用如下参数进行配置:

./configure CXXFLAGS=-std=c++11 --prefix=/usr --with-boost-libdir=/usr/lib --enable-python-binding --with-libiconv

之后编辑如下文件:

vi bindings/python/compile_flags

在这个文件的尾部加上如下参数:

-std=c++11

如图所示:

开始编译并完成安装:

make -j2
make install

创建4个软连接:

ln -s /usr/lib64/python3.6/site-packages/libtorrent.cpython-36m-x86_64-linux-gnu.so /opt/rh/rh-python36/root/usr/lib64/python3.6/site-packages/libtorrent.cpython-36m-x86_64-linux-gnu.so
ln -s /usr/lib64/python3.6/site-packages/python_libtorrent-1.1.11-py3.6.egg-info /opt/rh/rh-python36/root/usr/lib64/python3.6/site-packages/python_libtorrent-1.1.11-py3.6.egg-info
ln -s /usr/lib/pkgconfig/libtorrent-rasterbar.pc /opt/rh/rh-python36/root/usr/lib64/pkgconfig/libtorrent-rasterbar.pc
ln -s /usr/lib/libtorrent-rasterbar.so.9 /opt/rh/rh-python36/root/usr/lib64/libtorrent-rasterbar.so.9

现在执行如下命令检查我们的python3是否可用正常import:

python3 -c "import libtorrent; print (libtorrent.version)"

如果一切正常,那么将回显出libtorrent的版本号:

OJBK,最难最坑最蛋疼的部分你已经完成了,下面我们安装RabbitMQ:

yum -y install https://github.com/rabbitmq/erlang-rpm/releases/download/v21.1.4/erlang-21.1.4-1.el7.centos.x86_64.rpm
yum -y install https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el7.noarch.rpm
systemctl start rabbitmq-server
systemctl enable rabbitmq-server

现在拉取项目文件并进入到项目目录:

git clone https://github.com/L34p/TorrentBOX.git
cd TorrentBOX

安装项目所需依赖并初始化数据库:

pip3 install -r requirements.txt
python3 manage.py migrate

安装screen:

yum -y install screen

screen开第一个窗口运行:

screen -S one
python3 manage.py runserver 0.0.0.0:8000

如果正常会有类似如图回显:

screen开第二个窗口运行:

screen -S two
export C_FORCE_ROOT="true"
python3 manage.py celeryd --loglevel info --concurrency 5

如果正常会有类似如图回显:

现在打开你的VPS公网IP+端口8000应该可以访问到这个程序的登录界面了:

测试可以正常下载:

下载完成之后会出现一个拖回本地的按钮,点一下就可以把文件下载到本地了:

绑定域名什么的就不写了,用Nginx反代一下应该就可以了。。。值得一提的是,我们使用scl安装的Python3环境不会影响到系统本身的环境,这个就相当于一个虚拟环境,退出shell再登录Python就会还原成默认版本,如需启用就再scl一遍就行。

为了他妈下个种子也算是绞尽了脑汁,回头一想还好这个TorrentBOX有个多用户功能,还行不亏吧。。。

强行不亏吧。。。

赞(0)
未经允许不得转载:拆东墙 » CentOS7安装TorrentBOX

评论 抢沙发

登录

找回密码

注册