本文服务器环境Ubuntu 16.04.3 LTS,因为一些特殊业务原因,有些服务器需不能上外网,服务器安装一些软件包特别麻烦,需要下载软件的deb和软件依赖的deb包,有时下载不全deb包,安装软件就会失败,所以需要在内网环境搭建一个apt源,这样就可以使用apt自动解决一些软件包的依赖。

安装apt-mirror

1
apt-get install apt-mirror

配置mirror.list文件

可根据服务器网络环境选择合适的下载线程数和apt镜像源,因为服务器在清华,所以选择清华镜像源(150G文件一个小时就同步完了)

1
2
3
4
5
6
7
8
9
10
11
# 镜像文件下载地址
set base_path /data/apt-mirror
# 下载线程数
set nthreads 20
set _tilde 0
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
clean http://mirrors.tuna.tsinghua.edu.cn/ubuntu

文件配置完成后,执行apt-mirror开始同步,因为同步时间比较长,笔者使用tmux,建立一个session,然后执行命令,或者使用nohup命令放到后台执行

配置nginx(配置HTTP访问)

更改/etc/nging/nginx.conf文件,加以下配置

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80;
# 显示目录
autoindex on;
location / {
index index.html index.htm;
# 这里填写镜像保存位置
root /data/apt-mirror;
}

access_log /var/log/nginx/localhost.log;
}

更改完配置,先测试配置,如果测试通过,则重新加载nginx配置文件

1
2
nginx -t
nginx -s reload

客户端配置

编辑/etc/apt/source.list文件(可以先备份一下),ip和端口级网站目录结构需要根据自己的配置修改

1
2
3
4
deb [arch=amd64] http://127.0.0.1:81/mirror/mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb [arch=amd64] http://127.0.0.1:81/mirror/mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb [arch=amd64] http://127.0.0.1:81/mirror/mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb [arch=amd64] http://127.0.0.1:81/mirror/mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

以上客户端配置也多添加了[arch=amd64],用于指定架构,否则会出现

1
2
3
Err http://127.0.0.1:81 trusty/main i386 Packages
404 Not Found
...

最后执行,更新成功就可以安装需要的软件了

1
apt-get update