离线环境中使用ISO文件构建Yum源

发布于:2025-08-17 ⋅ 阅读:(16) ⋅ 点赞:(0)

背景说明

项目中客户现场都是离线的环境,需要自己构建Yum源。算是记录一下这个步骤,网上的文档也很多。大家随便看看

准备材料

  1. 操作系统的ISO(完整版)文件: https://mirrors.nwafu.edu.cn/openeuler/openEuler-24.03-LTS-SP2/ISO/aarch64/openEuler-24.03-LTS-SP2-everything-aarch64-dvd.iso
  2. Linux服务器

配置步骤

  1. 将ISO文件挂载
mkdir -p /mnt/iso

vi /etc/fstab

/data/openEuler-24.03-LTS-SP2-everything-aarch64-dvd.iso  /mnt/iso  iso9660  loop  0  0
mount -a 
  1. 配置本地Yum源并按照Nginx服务
#vi /etc/yum.repos.d/local.repo
[local-iso]
name=Local ISO Repo
baseurl=file:///mnt/iso
enabled=1
gpgcheck=0
yum makecache
yum install -y nginx
  1. 配置Nginx
#vi /etc/nginx/nginx.conf
# 全局配置
user  nginx;
worker_processes  2;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

# 事件配置
events {
    worker_connections  1024;
}

# HTTP 配置
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    keepalive_timeout  65;

    # YUM 仓库服务
    server {
        listen       18080;
        server_name  _;

        access_log  /var/log/nginx/yum_repo_access.log;
        error_log   /var/log/nginx/yum_repo_error.log;

        location /openeuler {
            alias /mnt/iso/;             # 指向挂载的 ISO 目录
            autoindex on;                # 开启目录索引
            autoindex_exact_size off;    # 友好显示文件大小
            autoindex_localtime on;      # 使用本地时间

            sendfile        on;
            tcp_nopush      on;
            tcp_nodelay     on;
        }
    }

    # 载入额外的虚拟主机配置
    include /etc/nginx/conf.d/*.conf;
}

systemctl enable nginx && systemctl start nginx
  1. 在其它服务器上配置并使用本地的Yum源
#vi /etc/yum.repos.d/local.repo
[remote-iso]
name=Remote ISO Repo
baseurl=http://<服务器IP>:18080/openeuler 
enabled=1
gpgcheck=0
  1. 可以通过Ansible的方式分发到其它服务器上
---
- name: Distribute local.repo to remote servers
  hosts: all
  become: yes
  gather_facts: no
  tasks:
    - name: Copy local.repo to remote servers
      copy:
        src: /etc/yum.repos.d/local.repo   # 控制节点上的文件
        dest: /etc/yum.repos.d/local.repo  # 被控节点的目标路径
        owner: root
        group: root
        mode: '0644'

    - name: Clean and make yum cache
      command: "{{ item }}"
      with_items:
        - yum clean all
        - yum makecache

网站公告

今日签到

点亮在社区的每一天
去签到