openEuler欧拉系统部署后第一件事:配置内网yum源(附Nginx配置与GPG密钥验证避坑指南)
openEuler欧拉系统部署后第一件事配置内网yum源附Nginx配置与GPG密钥验证避坑指南刚完成openEuler系统的安装许多工程师会迫不及待地想要安装各类软件包或更新系统。然而在缺乏稳定内网软件源的情况下频繁从外网下载不仅效率低下还可能因网络波动导致安装失败。本文将手把手教你如何通过三个关键步骤快速搭建一个高效可靠的内网yum源并分享实际部署中容易踩坑的细节。1. 准备工作获取系统镜像与基础环境配置在开始配置之前我们需要准备好系统镜像文件并确保基础环境满足要求。对于openEuler 22.03 LTS版本可以从官方镜像站获取完整的everything镜像这个版本包含了所有基础软件包和依赖关系数据。首先确认系统架构和所需镜像类型uname -m # 查看系统架构对于x86_64架构的系统推荐下载以下镜像openEuler-22.03-LTS-everything-x86_64-dvd.iso下载完成后建议通过校验SHA256值确保镜像完整性sha256sum openEuler-22.03-LTS-everything-x86_64-dvd.iso接下来需要安装一些必要的工具包dnf install -y createrepo_c nginxcreaterepo_c是创建yum仓库元数据的必备工具而nginx则用于搭建内网web服务。如果系统中尚未安装这些软件包可以从安装介质中临时挂载ISO进行安装。2. 构建本地yum仓库从ISO到可用软件源2.1 挂载ISO镜像并复制文件将下载好的ISO镜像挂载到系统目录mkdir -p /mnt/iso mount -o loop openEuler-22.03-LTS-everything-x86_64-dvd.iso /mnt/iso挂载后ISO中的关键目录包括Packages存放所有RPM软件包repodata包含仓库元数据RPM-GPG-KEY-openEuler系统签名公钥创建一个本地仓库目录并将ISO内容复制过去mkdir -p /data/repo cp -a /mnt/iso/* /data/repo/2.2 生成仓库元数据即使ISO中已包含repodata重新生成可以确保元数据与本地路径匹配createrepo_c --update --workers$(nproc) /data/repo参数说明--update增量更新模式--workers指定工作线程数通常设置为CPU核心数2.3 配置本地yum源创建repo配置文件cat /etc/yum.repos.d/local.repo EOF [local] nameLocal openEuler Repository baseurlfile:///data/repo enabled1 gpgcheck1 gpgkeyfile:///data/repo/RPM-GPG-KEY-openEuler EOF验证仓库是否可用dnf clean all dnf makecache dnf repolist3. 搭建内网yum源服务Nginx配置与优化3.1 基础Nginx配置为了让内网其他主机也能使用这个yum源我们需要通过web服务器共享仓库目录。以下是推荐的Nginx配置server { listen 80; server_name repo.internal; root /data/repo; location / { autoindex on; autoindex_exact_size off; autoindex_localtime on; charset utf-8; # 允许大文件下载 client_max_body_size 0; # 禁用缓存确保客户端总能获取最新元数据 add_header Cache-Control no-cache, no-store, must-revalidate; add_header Pragma no-cache; add_header Expires 0; } # 防止访问隐藏文件 location ~ /\. { deny all; } }关键配置说明autoindex on启用目录列表autoindex_exact_size off以易读格式显示文件大小autoindex_localtime on使用本地时区显示文件时间3.2 安全加固措施对于生产环境建议添加以下安全配置# 在server块中添加 location / { # 限制访问IP范围 allow 192.168.1.0/24; deny all; # 禁用不安全的HTTP方法 if ($request_method !~ ^(GET|HEAD)$ ) { return 405; } }3.3 性能优化建议针对yum源的特殊性可以添加以下优化配置# 在http块中添加 proxy_cache_path /var/cache/nginx levels1:2 keys_zoneyum_cache:10m inactive7d use_temp_pathoff; # 在server块中添加 location / { # 启用gzip压缩 gzip on; gzip_types application/x-rpm; # 启用缓存 proxy_cache yum_cache; proxy_cache_valid 200 302 12h; proxy_cache_valid 404 1m; }4. 客户端配置与常见问题排查4.1 客户端repo文件配置内网其他主机需要创建如下repo文件cat /etc/yum.repos.d/internal.repo EOF [internal] nameInternal openEuler Repository baseurlhttp://repo.internal enabled1 gpgcheck1 gpgkeyhttp://repo.internal/RPM-GPG-KEY-openEuler EOF4.2 GPG密钥验证问题解决方案在实际部署中GPG密钥验证是最容易出问题的环节。以下是常见问题及解决方法问题1GPG密钥验证失败错误信息GPG key retrieval failed: [Errno 14] curl#37 - Couldnt open file /RPM-GPG-KEY-openEuler解决方案确保Nginx配置正确可以通过浏览器直接访问密钥文件检查repo文件中gpgkey的URL路径是否正确如果仍不生效可以临时禁用GPG检查dnf install --nogpgcheck package_name问题2密钥签名无效错误信息Public key for package.rpm is not installed解决方案手动导入GPG密钥rpm --import http://repo.internal/RPM-GPG-KEY-openEuler验证密钥是否已导入rpm -q gpg-pubkey --qf %{name}-%{version}-%{release} -- %{summary}\n4.3 仓库元数据更新策略当仓库中添加或删除RPM包时需要重新生成元数据createrepo_c --update /data/repo可以设置定时任务自动更新# 每天凌晨3点更新 0 3 * * * /usr/bin/createrepo_c --update /data/repo /dev/null 215. 高级技巧与扩展应用5.1 多版本仓库管理如果需要维护多个版本的软件仓库可以采用如下目录结构/data/repo/ ├── 22.03 ├── 20.03 └── rolling对应的repo文件配置[openEuler-22.03] nameopenEuler 22.03 LTS baseurlhttp://repo.internal/22.035.2 增量同步外部源可以使用reposync工具同步外部源到本地dnf install -y dnf-utils reposync --repoepel --download-metadata -p /data/repo/external/5.3 仓库健康检查定期检查仓库完整性# 检查损坏的RPM包 find /data/repo -name *.rpm | xargs rpm -K | grep -v OK # 验证repodata完整性 verifytree /data/repo5.4 容器化部署方案对于需要快速部署的场景可以考虑使用Docker容器FROM nginx:alpine COPY repo/ /usr/share/nginx/html/repo/ RUN apk add createrepo_c \ createrepo_c /usr/share/nginx/html/repo