研究2张物理网卡 1台物理服务器 3个光猫 实现的离线下载服务器微架构 (3 光猫)
所需掌握技术:
1. Linux 相关基础
2. Docker容器 相关基础
3. 网络端口映射相关基础
拓扑图介绍:
测试环境介绍:
Step 1. .::.系统安装阶段需要注意事项::..
1. 需要注意分区和Raid的选择,尤其是下载存放的盘(考虑到频繁读写问题)
2. 系统和下载目录盘一定不要在一个物理硬盘
Step 2. .::容器安装阶段需要注意事项::.
0. 物理机(容器服务器): 192.168.3.66 # 容器环境自行搭建(本教程不做过多详解,可参考我整理的相关文案)
1. 注意使用yum 和 容器的加速
2. 容器镜像选择 sudo docker search aria2
这里略偷懒,直接就选择别人做好的镜像。详细介绍自行看: https://hub.docker.com/r/oldiy/aria2-ui-ng
3. 创建的容器的网络,注意网络选择的选择。
1)注意网卡给容器主机单独一张物理网卡,EM2物理网卡不要配置IP
EM网卡2配置参考:
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=em2 UUID=2131e480-fed5-4b12-9743-6a86d440c36d DEVICE=em2 ONBOOT=yes
2)容器创建的主机也不要使用默认的“桥接模式”,而是 --net=none
举例 :
sudo docker run -itd --name Loki_c7t1 --net=none c7t1:v0.1
-i, <交互式的方式> --interactive Keep STDIN open even if not attached
-t, <分配一个终端> --tty Allocate a pseudo-TTY
-d,<让容器在后台运行> --detach Run container in background and print container ID
--name <容器名>
4. 使用pipwork 进行网络配置
用法: pipework <网卡/桥> <容器名> x.x.x.x/24@网关IP
例如:pipework em2 b1_aria2 172.28.1.10/24@172.28.1.1
5. 创建容器主机
docker run -d --name b3_aria2 -e SECRET=xxx -v /etc/localtime:/etc/localtime -v /Downloads/Dokcers/b3/downloads:/data --net=none <镜像名>
PS:这里镜像注意,可能需要二次封装,因为默认的端口可能和你使用的端口实际不符,修改源镜像的端口后重新封装一次
使用:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
例如:将容器 d63ab31f9aba,保存为新的镜像
docker commit -a "提交的镜像作者" -m "提交的文字说明" 容器名 新镜像名:版本
docker commit -a "Loki" -m "aria2_diy_2" d63ab31f9aba loki_aria2:v1
# 我这里主要修改了下源镜像里面的启动端口。
# 容器目录介绍
::/etc/localtime 解决时间和本地物理机一致
::/data 你的容器下载目录
-e SECRET 你的容器aria2安全码,用于链接Aria2NG和Aria2Ui使用
Step 3. .::搭建Nginx环境搭建注意事项::.
1. 创建额外的虚拟主机,提供内网文件回取地址。
2. 这里做了限制ip访问和访问需要密码的操作,展示2个配置文件:
主界面的配置文件:
[loki@localhost ~]$ cat /etc/nginx/vhost/aria2_index.conf server { listen 8080; server_name down.cdbaidu.com; if ($host != 'xxx.test.com'){ # 限制域名以外的方式访问,根据情况更换为你自己域名 return 404; } location / { root /xx1/xx2/xx3/xx4/; # 这里就是你存放web 主页面的目录 index index.html index.htm; error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } # IP access allow 192.168.x.x/24; # 仅允许内网192.168.x.x/24访问这个界面 deny all; } }
# 虚拟主机单独的文件
[loki@localhost ~]$ cat /etc/nginx/vhost/b1.conf server { listen 1181; server_name xxx.test.com; location / { root /Downloads/Dokcers/b1/downloads; autoindex on; # Chinese code charset utf-8,gbk; # 这个不加会出现中文乱码 # auth auth_basic "Please input B1 password"; auth_basic_user_file /etc/nginx/vhost/.htpasswd; # 这里是需要设置账号密码文件 } # log access_log /Downloads/Dokcers/b1/web/access.log; error_log /Downloads/Dokcers/b1/web/error.log info; # 这个info开启用于排除,用完可以关闭 # IP access allow 192.168.x.x/24; deny all; }
# htpasswd 需要单独安装
sudo htpasswd -bc <数据文件,随便取>:创建一个加密文件;
sudo htpasswd -b <数据文件> loki <密码> 增加一个用户,如果用户存在就是修改密码
sudo htpasswd -D <数据文件> .htpasswd loki
chmod 400 <数据文件>
设置成功后,能正常启动Nginx,并能看到如下提示,表示成功。
PS:这里遇到一个403错误,坑了我好久(解决方法参考)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库