当前位置: 首页 > news >正文

[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 发布:

  1. 安装 Nginx:

bash

sudo apt-get install nginx

  1. 创建 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;}
}

  1. 启用配置并重启 Nginx:

bash

sudo ln -s /etc/nginx/sites-available/apt-mirror /etc/nginx/sites-enabled/
sudo systemctl restart nginx

  1. 客户端配置:在客户端的/etc/apt/sources.list中添加:

conf

deb http://服务器IP/ubuntu/ jammy main restricted universe multiverse

二、NFS 共享服务部署

NFS(Network File System)是基于 TCP/IP 的网络文件系统协议,允许客户端像访问本地文件一样访问远程服务器的共享资源,常用于集群环境的数据共享。

1️⃣NFS 工作原理

  1. 客户端通过网络连接 NFS 服务器
  2. 客户端发起文件访问请求(读 / 写)
  3. 服务器执行相应操作并返回结果
  4. 依赖 RPC(远程过程调用)机制实现远程到本地的映射

2️⃣部署步骤

<1> 环境准备
  • 两台服务器:服务端(192.168.204.133)和客户端(192.168.204.137)
  • 确保局域网互通(可通过 ping 测试)
  • 操作系统:Ubuntu(本文以 Ubuntu 为例)
<2> 服务端配置
  1. 安装 NFS 服务端软件:

bash

sudo apt update
sudo apt upgrade
sudo apt install nfs-kernel-server

  1. 设置自启动:

bash

sudo systemctl enable rpcbind
sudo systemctl enable nfs-kernel-server

  1. 创建共享目录并配置权限:

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)

  1. 启动 NFS 服务:

bash

sudo systemctl start nfs-kernel-server
# 查看服务状态
sudo systemctl status nfs-kernel-server

  1. 关闭防火墙(测试环境,生产环境需配置规则):

bash

sudo systemctl stop firewalld
sudo systemctl disable firewalld
<3> 客户端配置
  1. 安装 NFS 客户端软件:

bash

sudo apt install nfs-common

  1. 查看服务端共享目录:

bash

showmount -e 192.168.204.133

输出应显示:/root/testnfs *

  1. 手动挂载共享目录:

bash

# 创建本地挂载目录
mkdir /root/testnfs
# 挂载NFS共享
sudo mount 192.168.204.133:/root/testnfs /root/testnfs

  1. 验证挂载结果:

bash

tail -1 /etc/mtab  # 查看挂载信息

  1. 设置开机自动挂载:编辑/etc/fstab添加:

conf

192.168.204.133:/root/testnfs /root/testnfs nfs defaults,_netdev 0 0

  • _netdev:表示需要网络的设备,避免开机时网络未就绪导致挂载失败
<4> 测试共享功能
  1. 在客户端创建测试文件:

bash

touch /root/testnfs/testfile.txt

  1. 在服务端查看:

bash

ls /root/testnfs/

若能看到testfile.txt,说明共享成功。

注意事项

  • 卸载 NFS 挂载:sudo umount /root/testnfs
  • 强制卸载(当客户端卡死时):sudo umount -lf /root/testnfs
  • 权限问题:确保共享目录的本地权限与 NFS 配置权限一致
  • 网络问题:NFS 依赖稳定的网络连接,网络中断可能导致客户端操作卡死
http://www.dtcms.com/a/303783.html

相关文章:

  • Java -- String类-StringBuffer类-StringBuilder类
  • uniapp开发微信小程序(新旧版本对比:授权手机号登录、授权头像和昵称)
  • K-近邻算法(KNN算法)的K值的选取--交叉验证+网格搜索
  • 搭建专属AI聊天网站:NextChat + 蓝耘MaaS平台完整部署指南
  • 2025年7月技术问答第4期
  • 树形结构递归查询与嵌套结构转换:Flask + PostgreSQL 完整实现
  • 力扣面试150题--位1的个数
  • 【第四章自定义编辑器窗口_扩展默认的编辑器窗口_扩展Hierarchy窗口(7/11)】
  • QT项目 -仿QQ音乐的音乐播放器(第三节)
  • 深入理解 Qt 元对象系统 (Meta-Object System)
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析六
  • [明道云]-基础教学2-工作表字段 vs 控件:选哪种?
  • HTTP 与 HTTPS 的区别
  • mapbox进阶,mapbox-gl-draw绘图插件扩展,编辑模式支持点、线、面的捕捉
  • Objective-c 初阶——异常处理(try-catch)
  • 盛最多水的容器-双指针
  • 注册发送手机短信
  • bash变量名不能有连字符
  • Spark初探:揭秘速度优势与生态融合实践
  • RabbitMQ面试精讲 Day 7:消息持久化与过期策略
  • H.264视频的RTP有效载荷格式(翻译自:RFC6184 第5节 RTP有效载荷格式)
  • 网络协议——MPLS(多协议标签转发)
  • 力扣30 天 Pandas 挑战(3)---数据操作
  • LeetCode 283 - 移动零
  • CTF-Web学习笔记:服务端请求伪造(SSRF)篇
  • 单片机学习笔记.PWM
  • 第4章唯一ID生成器——4.5 美团点评开源方案Leaf
  • 医疗AI新基建:MCP与A2A协议的破局与前瞻
  • JVM 崩溃(Fatal Error)解决方法
  • 影刀RPA_初级课程_玩转影刀自动化_EXCEL操作自动化