FreeNAS9.3 Jail中打造Aria2下载机

2015-4-14 15:21 Herald 11118 FreeNASJails

对很多朋友来说,这是一份迟来的教程。还好,经过几番摸索和尝试,FreeNAS 9.3 Jails中安装aira2的方法终于找到了。

使用最新的PluginJail模板

FreeNAS 9.3 系列的pluginjail模板有了更新,你发现了吗?模板的名称没有变化,但这可是2015年4月2日新鲜出炉的,赶快按照《FreeNAS:虚拟机(Jails)入门篇》提供的方法创建最新的pluginjail模板吧,注意,下方提供的都是64位模板。同时建议大家顺便把standardjail的模板也下载下来,添加到FreeNAS里面。

官方Jails模板下载地址:http://download.freenas.org/jails/9.3/x64/

百度网盘分流下载地址:http://pan.baidu.com/s/1gd7oAqB#path=%252FFreeNAS%252Fjails%252F9.3%252Fx64

 

20150414112844

如果你的FreeNAS 9.3更新到了FreeNAS-9.3-STABLE-201504100216或更新的版本,你会发现添加Jail模板的时候多出了一个名为Mtree的项,你在上面提供的下载项中能看到.mtree后缀的文件,这是与MD5类似的另外一种文件校验方式,一方面是检查Jail模板的完整性,另一方面也是防止模板文件被恶意篡改导致一些安全隐患。存在就有价值,建议大家同时下载.tgz和.mtree这两个后缀的文件。

20150414113645

创建Aria2 Jail

Jail的创建过程在《FreeNAS:虚拟机(Jails)入门篇》中已经有所介绍,这里不再赘述,需要提示的是如果你不指定Jail的模板类型,那么FreeNAS默认会使用standardjail模板创建Jail,这也是为什么前面会提到建议大家同时把standard模板也填进去的原因。如下图所示,这里我们创建了一个名为aria2的Jail,IP地址为192.168.1.50,模板类型为standard。

20150414114936

通过SSH访问Aria2 Jail

教程《如何通过SSH访问Jail虚拟机》中介绍了如何通过SSH访问指定的Jail,此处不再赘述。

更新Aria2 Jail的pkg和port

特别提示:接下来的操作均在Jail中进行。

更新pkg包管理器命令:pkg update

通过pkg升级旧版程序:pkg upgrade

下载最新的port树:portsnap fetch

解压port树:portsnap extract

更新pkg和port需要一些时间,这里建议大家在全部更新完毕以后给aira2 jail的数据集创建一个快照,这样一来,不论接下来的操作出现了何种错误,我们都可以通过回滚快照,将Jail恢复到创建快照时的状态,这样可以省去许多重复操作,节省时间。不过FreeNAS的ZFS仅支持回滚最新的快照,所以每操作一步创建一个快照的做法没有实际意义。

20150414120552

aria2的安装概述

在FreeNAS Jail中安装aria2,我们采用的是编译安装方式,因为pkg search压根找不到aria2的软件包。上面一步之所以既要更新pkg包管理,又要更新port树,正是因为我们需要用pkg的方式快速安装编译时依赖的工具和库(如果这些库和工具也用port编译方式安装的话人是会疯的),同时又要用port来编译安装aria2。接下来让我们开始安装吧。

安装aria2编译时需要的程序

既然要编译安装aria2,就需要编译工具以及aria2依赖的一些库文件,前面这句话不懂没有关系,照着做就是了。这里给你提供两种方法,一种方法是直接使用pkg命令,从freebsd服务器下载相关的程序进行安装。另一种方法是让pkg命令安装我们手动下载程序。两种方法要做的是同一件事,第一种最简单,但碰到服务器连接不稳定的时候比较抓狂,第二种稍微有点麻烦,但是速度非常快。

方法一:直接使用pkg命令安装

把下面的命令复制粘贴到SSH终端里面执行就可以了,里面加了 -y 参数,全自动下载安装。这一步会自动从pkg.freebsd.org下载程序的txz包,GCC的包很大,下载的过程很漫长。

pkg install -y lang/gcc security/openssl devel/pkgconf devel/gettext databases/sqlite3 textproc/libxml2

20150413195531

方法二:让pkg安装我们手动下载的程序

先去下载我们为你准备好的程序包,点此下载 aria2c-pkg.zip,下载到本地把他解压,通过Filezilla等支持SFTP的工具将文件夹里的.txz文件全部上传到Jail的/var/cache/pkg 目录。

20150414123312

把下面的命令复制粘贴到SSH终端里面执行就可以了:

cd /var/cache/pkg/ && pkg install -y gcc-4.8.4_1.txz openssl-1.0.2.txz pkgconf-0.9.8.txz gettext-0.19.4.txz libxml2-2.9.2_2-b106850595.txz mpfr-3.1.2_2.txz gmp-5.1.3_2.txz mpc-1.0.3.txz gcc-ecj-4.5.txz binutils-2.25.txz gettext-tools-0.19.4.txz gettext-runtime-0.19.4

20150414123650

(可选)创建openssl的配置文件,执行下面命令:

cp /usr/local/openssl/openssl.cnf.sample /usr/local/openssl/openssl.cnf

安装Aria2

终于到这一步了,执行下面的命令开始吧:

cd /usr/ports/www/aria2/ && make install clean

编译过程中会显示下图所示的设置界面,按回车保持默认即可,如果你想要使用CA_BUNDLE这项功能,可以用空格键选中。

20150413232003

编译安装需要一点时间,耐心等待吧,如下图所示,屏幕就这样不停的滚动着各种信息。

20150414124625

FreeNAS主机CPU的性能越好,相应编译的过程就越快,反之亦然。当你看到下图所示的内容,代表aria2已经安装完成。

20150414124746

试着使用aria2c 命令下载一些东西吧,它已经可以开始为你工作了。

20150414125113

配置Aria2 WebGUI

只是安装好了aria2在Jail里面还不足以称之为“下载机”,我们需要给aria2配上一个WebGUI,这样玩起来才愉快。话说aria2的webgui还真是不少,目前维护比较好的是webui-aria2yaaw。你可以分别试试看哪一个看着顺眼用着顺手,这里以Yaaw为例来介绍如何为Aria2配置WebGUI。

WebGUI顾名思义就是基于浏览器的用户管理界面,webui-aria2和yaaw都号称是无需www服务器也无需任何动态语言,用户只需要用浏览器直接访问即可使用。但是,它前提是aria2必须安装在本地主机,我们的aria2安装在FreeNAS的Jail里面,如果想访问,没有www服务器必然行不通的。

对我们FreeNAS用户而言,现在是时候让Nginx登场了,你还记得它吗?参照教程《FreeNAS Jail中安装Nginx服务器》,在aria2 jail里面安装好Nginx。

进入nginx的默认网站根目录:

cd /usr/local/www/nginx

使用下面的命令下载最新的yaaw:

aria2c –ca-certificate=/usr/local/share/certs/ca-root-nss.crt https://github.com/binux/yaaw/archive/master.zip

解压yaaw:

unzip yaaw-master.zip

修改nginx配置文件:

vi /usr/local/etc/nginx/nginx.conf

如下图所示,找到 location / {} 部分找到 root 一行,添加yaaw-master,不要漏掉末尾的半角”;”分号。

20150414132053

修改完成以后重启nginx服务器:

service nginx restart

用浏览器访问Aria2 Jail的IP地址,应该可以看到下图所示的页面,代表yaaw已经安装完成。但页面上会有错误提示,这是因为我们还没启动aria2的守护进程。

20150414132356

在配置aria2的守护进程之前,建议先在FreeNAS里面给Jail创建一个专门用来存储下载文件的数据集映射到Jail上面,这样就可以通过给这个数据集创建CIFS共享,随时用Windows主机查看下载好的文件了。

这里我们创建了一个名为 aria2 的 windows 类型数据集,所有者和所有者组均设置为nobody。原因是CIFS共享的默认匿名访客身份就是nobody,这样创建匿名的CIFS共享可以对这个数据集有完全的控制权限。

20150414132839

我们将aria2数据集添加给jail,并映射到jail的 /mnt 目录。如果你不了解如何给插件(Jail)添加存储,请查阅《FreeNAS中为插件添加映射存储空间》。

20150414133114

添加好存储后,我们在/mnt目录里面创建两个文件夹,conf文件夹用来存储aria2守护进程的配置文件,download文件夹用来存储下载的文件。

执行下面的命令,一次性完成两个文件夹的创建:

cd /mnt && mkdir conf download

接下来要创建aria2的配置文件,建议给aria2数据集创建CIFS匿名共享后直接在Windows上面操作,这样会比较方便。你可能会问为什么要给aria2创建配置文件,不创建就不能运行aria2吗?当然,不创建也可以以守护进程的方式运行aria2,不过在系统重启以后,你对aria2所做的配置就都会丢失。关于创建CIFS匿名共享的相关内容请参考《FreeNAS:创建 CIFSF 匿名共享》。

在conf文件夹中创建rpc.conf文件,贴上以下内容:

###########RPC相关选项###########
enable-rpc
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许非外部访问
rpc-listen-all=true
##RCP认证
#rpc-user=
#rpc-passwd=
#RPC端口, 仅当默认端口6800被占用时修改
#rpc-listen-port=6900

###############速度相关#############
#最大服务器设置 -x
max-connection-per-server=10
#分割选项 -s 几线程
split=10
#最大并行下载
max-concurrent-downloads=3
#分片的最小大小
min-split-size=20M

# 启用断点续传
#Continue downloading a partially downloaded file if a corresponding control file exists.
continue 

#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0

#####文件和缓存相关的配置节##########
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
#这里不预先申请磁盘空间,如果是ETX4之类的 可以改成 falloc
file-allocation=none
#下载目录
dir=/mnt/download

#Session 文件相关
input-file=/mnt/conf/rpc.aria2.session
save-session=/mnt/conf/rpc.aria2.session
#定时保存会话,需要1.16.1之后的release版
save-session-interval=60

#######P2P相关#######
#启用本地节点查找
bt-enable-lpd=true
#添加额外的tracker
#bt-tracker=<URI>,…
#单种子最大连接数
#bt-max-peers=55
#强制加密, 防迅雷必备
#bt-require-crypto=true
#当下载的文件是一个种子(以.torrent结尾)时, 自动下载BT
follow-torrent=true
#BT监听端口, 当端口屏蔽时使用
#listen-port=6881-6999
#开启用户交换
enable-peer-exchange=true
#修改做种设置, 允许做种
seed-ratio=1
#保存会话
force-save=true
bt-hash-check-seed=true
bt-seed-unverified=true
bt-save-metadata=true

在conf目录中创建名为rpc.aria2.session的空白文件。

20150414135228

因为aria2数据集已经映射到了Jail的/mnt目录,相应的,我们在Jail里面查看/mnt目录,可以看到新创建好的文件。

20150414135313

用创建好的配置文件启动aria2测试一下:

aria2c –conf-path=/mnt/conf/rpc.conf –ca-certificate=/usr/local/share/certs/ca-root-nss.crt

20150414135723

这时候在用浏览器刷新一下WebGUI,可以看到错误提示已经没有了,在设置中可以看到WebGUI已经检测到我们创建的配置文件信息,一切工作正常。

20150414135806

使用 ctrl + c 组合键停掉aria2进程,前面只是测试aria2是否工作正常,如果每次都要手动启动aria2实在麻烦,接下来我们要让aria2开机自启动。

让Aria2开机自启动

FreeBSD下面的Aria2很贴心,为我们准备了管理脚本,我们只需要简单配置一下就可以使用了。

使用下面命令备份aria2管理脚本:

cp /usr/local/etc/rc.d/aria2 /usr/local/etc/rc.d/aria2-bak

编辑aria2管理脚本:

vi /usr/local/etc/rc.d/aria2

修改aria2_config路径,粗体字部分,请根据你的实际配置文件路径和名称进行设置。

aria2_config=${aria2_config:-“/mnt/conf/rpc.conf“}

添加aria2_flags路径,粗体字部分。

aria2_flags=${aria2_flags:-“–ca-certificate=/usr/local/share/certs/ca-root-nss.crt“}

20150414150932

将aria2项添加到/etc/rc.conf

sysrc ‘aria2_enable=YES’

或直接编辑 /etc/rc.conf 文件,另起一行添加 aria2_enable=”YES”,如下图。

20150414151528

接下来可以使用service命令启动、重启、停止aria2了:

  • service aria2 start    // 启动aria2
  • service aria2 restart    // 重启aria2
  • service aria2 stop    // 停止aria2

一切就绪,FreeNAS Jail Aria2 下载机打造成功!

一些aria2相关的插件资源:

{{ headers["x-wp-total"] }} 条评论

{{ post_id = '1410' }}

回复 {{ reply_to }}