[Linux入门] Linux 部署本地 APT 仓库及 NFS 共享服务全攻略
目录
一、本地 APT 仓库搭建
为什么需要本地 APT 仓库?
搭建步骤
1️⃣安装 apt-mirror 工具
2️⃣配置 mirror.list 文件
3️⃣同步远程仓库
4️⃣配置本地 APT 源
5️⃣更新本地 APT 源
6️⃣对外提供 APT 源服务(可选)
二、NFS 共享服务部署
1️⃣NFS 工作原理
2️⃣部署步骤
<1> 环境准备
<2> 服务端配置
<3> 客户端配置
<4> 测试共享功能
注意事项
在企业内网环境或网络受限场景中,本地 APT 仓库和 NFS 共享服务是提升效率的重要工具。本文将详细介绍如何在 Linux 系统中搭建这两项服务,适合初学者跟随操作。
一、本地 APT 仓库搭建
APT(Advanced Package Tool)是 Ubuntu 系统中强大的软件包管理工具,当无法直接访问外部源时,搭建本地 APT 仓库能显著提升软件安装效率。
为什么需要本地 APT 仓库?
- 内网环境需求:企业内网或离线环境下,无法直接使用官方 APT 源,本地仓库可实现内网软件快速分发
- 突破访问限制:部分外部源在国内访问不稳定,本地仓库可缓存资源,确保软件安装不受网络影响
搭建步骤
1️⃣安装 apt-mirror 工具
apt-mirror 是同步远程 APT 仓库到本地的专用工具,执行以下命令安装:
bash
sudo apt-get update
sudo apt-get install apt-mirror
2️⃣配置 mirror.list 文件
apt-mirror 的配置文件位于/etc/apt/mirror.list
,使用文本编辑器(如 vim)打开修改:
bash
sudo vim /etc/apt/mirror.list
以下是一个示例配置文件:
conf
# 设置缓存数据的基础存储路径
set base_path /var/spool/apt-mirror/
# 软件包和元数据的存储路径
set mirror_path $base_path/mirror
# 模板文件路径
set skel_path $base_path/skel
# 日志和状态文件路径
set var_path $base_path/var
# 架构设置(64位系统用amd64)
set defaultarch amd64# 同步的远程仓库地址(以阿里云为例)
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse# 设置本地存储路径
clean_path $base_path/clean
注意:
jammy
对应 Ubuntu 22.04 版本,其他版本需替换:20.20 用focal
,20.23 用lunar
,可通过lsb_release -a
查看系统版本后对应修改。
3️⃣同步远程仓库
配置完成后,执行以下命令开始同步远程仓库到本地:
bash
apt-mirror
同步过程耗时根据网络速度和仓库大小而定,建议在空闲时间执行。
4️⃣配置本地 APT 源
编辑系统源配置文件,将本地仓库设置为软件源:
bash
sudo vim /etc/apt/sources.list
添加本地源地址(与配置文件路径对应):
conf
deb file:/var/spool/apt-mirror/mirror/ubuntu/ jammy main restricted universe multiverse
deb-src file:/var/spool/apt-mirror/mirror/ubuntu/ jammy main restricted universe multiverse
5️⃣更新本地 APT 源
使配置生效:
bash
sudo apt-get update
6️⃣对外提供 APT 源服务(可选)
如需让内网其他机器使用该仓库,可通过 Nginx 发布:
- 安装 Nginx:
bash
sudo apt-get install nginx
- 创建 Nginx 配置文件:
bash
sudo vim /etc/nginx/sites-available/apt-mirror
配置内容:
nginx
server {listen 80;server_name 你的服务器IP;root /var/spool/apt-mirror/mirror/mirrors.aliyun.com;autoindex on;location / {allow all;}
}
- 启用配置并重启 Nginx:
bash
sudo ln -s /etc/nginx/sites-available/apt-mirror /etc/nginx/sites-enabled/
sudo systemctl restart nginx
- 客户端配置:在客户端的
/etc/apt/sources.list
中添加:
conf
deb http://服务器IP/ubuntu/ jammy main restricted universe multiverse
二、NFS 共享服务部署
NFS(Network File System)是基于 TCP/IP 的网络文件系统协议,允许客户端像访问本地文件一样访问远程服务器的共享资源,常用于集群环境的数据共享。
1️⃣NFS 工作原理
- 客户端通过网络连接 NFS 服务器
- 客户端发起文件访问请求(读 / 写)
- 服务器执行相应操作并返回结果
- 依赖 RPC(远程过程调用)机制实现远程到本地的映射
2️⃣部署步骤
<1> 环境准备
- 两台服务器:服务端(192.168.204.133)和客户端(192.168.204.137)
- 确保局域网互通(可通过 ping 测试)
- 操作系统:Ubuntu(本文以 Ubuntu 为例)
<2> 服务端配置
- 安装 NFS 服务端软件:
bash
sudo apt update
sudo apt upgrade
sudo apt install nfs-kernel-server
- 设置自启动:
bash
sudo systemctl enable rpcbind
sudo systemctl enable nfs-kernel-server
- 创建共享目录并配置权限:
bash
mkdir /root/testnfs # 创建共享目录
sudo vim /etc/exports # 编辑NFS配置文件
在配置文件中添加:
conf
/root/testnfs *(rw,sync,no_root_squash,no_subtree_check,insecure)
- 配置格式:
共享目录 客户机地址(权限选项)
- 权限说明:
rw
:读写权限(ro
为只读)sync
:同步写入磁盘no_root_squash
:客户端 root 用户保留权限(默认会降权)*
:允许所有客户机访问(也可指定 IP 或网段,如 192.168.7.0/24)
- 启动 NFS 服务:
bash
sudo systemctl start nfs-kernel-server
# 查看服务状态
sudo systemctl status nfs-kernel-server
- 关闭防火墙(测试环境,生产环境需配置规则):
bash
sudo systemctl stop firewalld
sudo systemctl disable firewalld
<3> 客户端配置
- 安装 NFS 客户端软件:
bash
sudo apt install nfs-common
- 查看服务端共享目录:
bash
showmount -e 192.168.204.133
输出应显示:/root/testnfs *
- 手动挂载共享目录:
bash
# 创建本地挂载目录
mkdir /root/testnfs
# 挂载NFS共享
sudo mount 192.168.204.133:/root/testnfs /root/testnfs
- 验证挂载结果:
bash
tail -1 /etc/mtab # 查看挂载信息
- 设置开机自动挂载:编辑
/etc/fstab
添加:
conf
192.168.204.133:/root/testnfs /root/testnfs nfs defaults,_netdev 0 0
_netdev
:表示需要网络的设备,避免开机时网络未就绪导致挂载失败
<4> 测试共享功能
- 在客户端创建测试文件:
bash
touch /root/testnfs/testfile.txt
- 在服务端查看:
bash
ls /root/testnfs/
若能看到testfile.txt
,说明共享成功。
注意事项
- 卸载 NFS 挂载:
sudo umount /root/testnfs
- 强制卸载(当客户端卡死时):
sudo umount -lf /root/testnfs
- 权限问题:确保共享目录的本地权限与 NFS 配置权限一致
- 网络问题:NFS 依赖稳定的网络连接,网络中断可能导致客户端操作卡死