Ubuntu搭建BT服务器&FTP服务器发布种子

最近被要求搭个简单的BT服务器用来实现文件上传下载,发布种子因为考虑是内部使用所以想搭成FTP,但是路上踩了好几脚的坑,所以写个Blog自己记录下具体的过程。

  • BT服务器搭建工具-BitTorrent
  • 在Ubuntu搭建FTP服务器

实现版本:Ubuntu 17.04/18.04均已测试过


BT服务器搭建工具-BitTorrent

使用BitTorrent工具可以很方便地搭起一个自用的BT Tracker服务器,但是现在网上很难找到工具的源码资源了,到BitTorrent官网只能下载到一个下载用工具。这里自己上传了一个以供取用。链接:https://pan.baidu.com/s/1GKjGawhvZeSlEvJ5fTVgkg 密码:cef5
不管用什么方式总之先放在你的Linux系统下,位置不限,这里以放在/home下为准(实际上放在别的地方我没试过,不过在/usr/local/src文件夹下存放经过实践证明是可行的)。在继续下一步之前,先来确保一下系统里有Python2存在,直接安装一个就好:

apt install python。

如果没有权限就自行sudo一下,不赘述了。
在装好python之后,解压上传到Linux的tar文件:

tar -xzvf BitTorrent-4.0.3.tar.gz

指令结束后会在同一个目录下得到文件夹BitTorrent-4.0.3。进入目录后输入ls就会看到一大堆.py文件,这就是为什么需要Python2了,BitTorrent4.0.3版本的源码是用Python2写成的,所以只有Python3还真就不行。
bt开头的.py文件有很多,不过这里需要用到的只有几个,等会儿再说。这里先运行一下setup.py,向Python2添加运行其他BT源码需要的库文件:

python setup.py install

这条指令完成后就可以开始运行目录下的.py文件了。首先是搭建BT服务器最重要的Tracker服务器:

python bttracker.py –port 6969 –dfile /home/log

port:指定Tracker服务器使用的端口号。
dfile:指定服务器运行log的输出文件。
通过这条指令就可以搭建起一个Tracker服务器,输入http://服务器ip:端口号 就可以访问了。

目前因为服务器才开起来,所以暂时没有可以追踪的种子,我们需要自己手动创建种子。当然,用BitTorrent之类的工具制作种子是可行的,不过个人没有尝试过,这里还是介绍一下如何用BitTorrent源码工具制作种子,直接拿刚刚解压完还没删除的tar压缩包练手好了。
先建立一个新的文件夹用于存放和管理源文件、一个新的文件夹用于存放种子文件。这里分别命名为data和torrent了。将压缩包丢进data文件夹下,然后执行:

python btmaketorrent.py http://服务器ip:端口号/announce /home/data/BitTorrent-4.0.3.tar.gz

这个指令能够在目标文件的同目录下制作一个种子文件,并交由指定的Tracker服务器进行追踪。现在,在data文件夹下,应该是会多出来一个.torrent文件,我们把它移动到torrent文件夹下。
现在种子也有了,F5一下服务器的页面,但是Tracker还是没有开始追踪。这是因为实际上种子做出来之后还没有人开始做种,所以服务器根本不知道你制作了这样的一个种子。接下来我们就要让服务器知道我们制作了种子,并且让我们的服务器自己开始做第一个种源以供他人下载。实现这个功能可以通过执行btlaunchmany.py完成:

python btlaunchmany.py –data_dir /home/data –torrent_dir /home/torrent

这样一来我们的种子文件就已经让服务器知道了。

??但是服务器上显示的是downloading,表示是正在下载,并没有开始做种…
这是因为种子目录下没有目标文件,btlaunchmany认为它是没有下载好的文件所以在申请下载。这时只需要把data文件夹下的原文件硬连接到torrent目录下就好了:

ln /home/data/BitTorrent-4.0.3.tar.gz /home/torrent

然后再执行btlaunchmany,就可以让其他机器开始下载了。


在Ubuntu搭建FTP服务器

FTP服务器的搭建才是真正的一步一坑…基本上除了最开始的sudo apt install vsftpd以外剩下的就是不停地踩坑了。先冷静下一步来吧。

  • 安装vsftpd
    据说是在Linux上最好用的FTP服务器搭建工具,不过实际上用的时候反而是走一步踩一个坑,网上的教程实在是太杂乱了,所以还是自己总结了一份以便以后万一会用到。

    apt install vsftpd

    注:vsftpd需要的环境一般在默认的Ubuntu系统中都已经配置好了,所以一般都可以直接上手使用。

  • 配置vsftpd
    在安装结束之后,与网上某些版本的介绍不同,3.0.3版本的vsftpd的配置文件是直接放在/etc文件夹下的,可以用vim编辑器直接编辑。以下贴出个人的vsftpd.conf设置,仅供参考对照修改:

listen=NO                                   #默认配置为NO,表示vsftpd是直接在systemctl启动的
listen_ipv6=YES                             #默认配置为YES,表示vsftpd监听ipv6端口
anonymous_enable=NO                         #默认配置为NO,禁止匿名用户访问,这样能够一定程度上提高FTP的安全性。
local_enable=YES                            #配置为YES,表示允许本地用户访问。这是本教程访问FTP服务器的主要方式。
write_enable=YES                            #配置为YES,表示允许用户写入数据。
local_umask=022                             #默认配置是注释,这里取消表示默认的umask是022(具体介绍可以移步http://blog.sina.com.cn/s/blog_49fd52cf0100nekk.html)
dirmessage_enable=YES                       #配置为YES表示用户进入新目录时返回目录信息。
use_localtime=YES                           #使用服务器时间。
xferlog_enable=YES                          #记录上传/下载日志。
connect_from_port_20=YES                    #从端口20连接,保持默认设置就好。
ftpd_banner=Welcome to blah FTP service.    #用户登录时返回的问候语。
chroot_local_user=YES                       #设置本地用户登录是否将其限制在其主目录下。
chroot_list_enable=YES                      #设置是否要使预设的限制用户名单生效。
chroot_list_file=/etc/vsftpd.chroot_list    #使用的限制用户名单路径。以上三条建议启用并配置。
secure_chroot_dir=/var/run/vsftpd/empty     #建议保持默认配置,是在vsftpd不需要文件系统权限时访问到的空目录。
pam_service_name=vsftpd                     #保持默认配置,表示使用的pam服务名。
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO                               #不使用SSL所以不要更改
#启用允许登录的用户名单,这样的配置表示只允许userlist_file名单里的用户登录。
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/user_list
#开始ftp服务器的被动模式
pasv_enable=YES
pasv_min_port=12800
pasv_max_port=12900

配置结束后,使用vim创建两个新的文件,一个命名为user_list,一个命名为vsftpd.chroot_list,在两个文件里都写上准备使用的用户名。个人准备的是两个用户,uploader和test,分别专门用于上传和下载。一个用户名起一行。

  • 配置pam
    配置好vsftpd之后下一步就是配置pam使得登录认证能够正确地生效。这里贴出一个参考链接:vsftpd架设(配置pam模块)
    本部分的内容主要取自于这个教程。
    首先安装db:

    apt install db-util

    然后去/etc/pam.d文件夹下,新建一个文件logins.txt,写入用户名和密码。注意是一行用户名一行密码。

    保存后执行以下命令:

    sudo db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
    sudo chmod 600 /etc/vsftpd_login.db

    以保证该数据库的权限无误。
    然后编辑pam.d下的vsftpd文件,注释/删除掉所有原有的内容,添加以下几行:

    
    # /etc/pam.d/vsftpdauth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
    account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login

    然后输入以下命令重启:

    invoke-rc.d vsftpd restart

    就配置好pam了。

  • 用户设置
    配置好pam之后进行用户的设置。首先,在Ubuntu的系统中vsftpd的useradd指令不会再自己添加新的用户默认主文件夹了,所以我们需要手动创建,我将它们创建在home文件夹下,并命名为upload与download。
    创建好文件夹之后,我们使用useradd来添加用户:

    useradd -s /sbin/nologin -d /home/upload uploader #光使用这一条命令只能创建一个用户而已
    passwd uploader #用这条指令来设置密码,个人没有尝试过不过不建议设置为跟pam设置中不同的密码

    这样就创建了一个用户。不过只是这样的话还不行,刚刚创建好的uploader实际上还没有获得/home/upload的权限,因此我们需要手动修改它:

    chown uploader /home/upload
    chmod u+rwx /home/upload

    这样就把upload文件夹的权限交给uploader了。用同样的方法设置好test的权限,注意只给予下载用户可读的权限。
    准备完成之后就可以重启我们的vsftpd服务:

    systemctl restart vsftpd.service

    然后去看看我们的服务器了!


附:自动执行种子制作脚本

#!/bin/bash
for file in /home/test/*
doif [ -d "$file" ]thenecho "$file is a directory."elif [ -f "$file" ]thenecho $filea=`basename "$file"`echo $acp /home/test/$a /home/filespython /home/BitTorrent-4.0.3/btmaketorrent.py http://你的服务器IP地址:你设置的tracker端口/announce /home/files/$ab=$a".torrent"echo $bmv /home/files/$b /home/torrentln /home/files/$a /home/torrentcp /home/torrent/$b /home/downloadelseecho $filefi
done

Ubuntu搭建BT服务器FTP服务器发布种子相关推荐

  1. linux系统怎么建ftp服务器地址,Ubuntu Linux系统建立FTP服务器方法步骤

    实现了Apache多用户的虚拟主机设置,那么一般这些用户都会选择用ftp上传的方式来管理自己的web内容,这就需要我们再为他们开设FTP服务. Ubuntu自带的FTP服务器是vsftpd. 1.安装 ...

  2. 利用Filezilla在局域网内搭建自己的FTP服务器

    利用Filezilla在局域网内搭建自己的FTP服务器 一.软件 Filezilla server Filezilla client 二. Filezilla client安装 三. Filezill ...

  3. win10中搭建并配置ftp服务器的方法(实现多用户登录整合版

    源地址 win10中搭建并配置ftp服务器的方法(实现多用户登录整合版) 一.ftp的搭建 二.ftp的配置 三.用户配置(实现多用户登录) 一.ftp的搭建 1.首先我们需要启动IIS服务 第一步: ...

  4. Ubuntu 搭建简单的Web服务器

    Ubuntu 搭建简单的Web服务器 一.搭建工具 二.搭建步骤 2.1Apche工具安装 2.2打开火狐浏览器 三.实现文件浏览功能 一.搭建工具   在这个实验上我用的是apche搭建的web服务 ...

  5. PC上搭建简单的FTP服务器(仅用于局域网)

    PC上搭建简单的FTP服务器(仅用于局域网) 转载请附原文链接:http://blog.fandong.me/2017/07/16/PC-FTP/ 第一步:打开控制面板选择卸载程序(查看方式为类别) ...

  6. Linux使用ftp传输10g的文件,Ubuntu 16.04 安装ftp服务器传输文件

    最近在搞深度学习,老师比较宝贝他的服务器,要求我以后负责管理服务器.往后所有要使用服务器的人都必须向我申请账号,然后只允许客户端访问,使用文件传输软件传输文件.像我这样一个Linux菜逼,这种要求不是 ...

  7. Ubuntu 配置vsftpd实现FTP服务器

    0.vsftpd是啥玩意 都不知道安装了个啥东西,那就没意思了,所以先去了解下什么是vsftpd.vsftpd意思为"very secure FTP daemon(非常安全的FTP进程)&q ...

  8. win10中搭建并配置ftp服务器的方法(实现多用户登录整合版)

    目录 一.ftp的搭建 二.ftp的配置 三.用户配置(实现多用户登录) 一.ftp的搭建 1.首先我们需要启动IIS服务 第一步:打开控制面板 第二步:点击"程序" 第三步:点击 ...

  9. win7系统ftp服务器搭建,win7系统 ftp服务器搭建

    win7系统 ftp服务器搭建 内容精选 换一换 为了保证使用私有镜像创建的新云服务器可以通过"用户数据注入"功能注入初始化自定义信息(例如为云服务器设置登录密码),请在创建私有镜 ...

  10. suse ftp文件服务器搭建,SUSE下FTP服务器搭建

    FTP(File Transfer Protocol),是TCP/IP网络上两台计算机传送文件的协议,是在TCP/IP网络和Internet上最早使用的协议之一,属于网络协议组的应 用层.FTP客户机 ...

最新文章

  1. 简述Linux 文件系统的目录结构
  2. [Oracle] oracle统计信息
  3. SQL查询 的一些原则
  4. 《漫画算法2》源码整理-6 两数之和 三数之和
  5. 山海演武传·黄道·第一卷 雏龙惊蛰 第二十二 ~ 二十四章 真龙之剑·星墟列将...
  6. 数字人民币明确不采用区块链技术,对数字货币投资须保持警惕
  7. 无障碍开发(一)之初认识
  8. 线段树-简单线段树模板
  9. 计算机和互联网基础知识作业,计算机作业1基础知识含答案.doc
  10. JavaScript如何来实现面向对象的核心封装,继承,多态
  11. chrome应用程序无法启动因为并行配置不正确_Win8打不开软件提示并行配置不正确的解决方法...
  12. paip.设置自定义404不起作用解决.txt
  13. 蓝桥杯.奇妙的数字(暴力)
  14. 大数据学习之大数据概述
  15. Python分组百分比排名
  16. Queues.drain 一边读数据一边写数据
  17. 程序猿生存指南-63 贪心姑娘
  18. WPF入门教程系列(5)
  19. 一对一直播源码,实现一个简单的登录界面
  20. nest.dll_每日新闻摘要:再见Nest.com,您好Google Store

热门文章

  1. 计算机帮教助教活动总结,家长助教活动总结范文(精选5篇)
  2. C语言实现小猫钓鱼游戏项目,堪称最强垂钓系统!
  3. Linux配置Samba在局域网共享文件
  4. 《互联网周刊》:中国互联网10年大事记
  5. 《分布式服务架构》读后感
  6. oled显示GIF动图
  7. 苹果系统版本依次顺序_苹果手机排列顺序
  8. 台式机linux系统无线上网,CentOS 6.5 安装无线网卡驱动实现无线上网
  9. 3ds Max学习指南,基本知识与基本操作,常用快捷键汇总
  10. Android 12 已来,你的 App 崩溃了吗?