2025-09-12
Git
00
请注意,本文编写于 173 天前,最后修改于 172 天前,其中某些信息可能已经过时。

目录

离线安装 Gitea 与 MySQL 8.0 解决方案
第一部分:在有网环境上准备离线安装包 (download_mysql8.sh)
第二部分:在 无网络环境机器上安装指南
1. 复制离线包到 Red Hat 系统
2. 在 Red Hat 上执行安装
关键更改说明
安装注意事项
验证安装

离线安装 Gitea 与 MySQL 8.0 解决方案

以下是针对在有网络的环境下准备 Gitea 和 MySQL 8.0 离线安装包,并在 另一台无网络环境上安装的完整方案:

第一部分:在有网环境上准备离线安装包 (download_mysql8.sh)

bash
#!/bin/bash set -e # 创建工作目录 WORK_DIR="gitea-offline-install" mkdir -p ${WORK_DIR}/{gitea,mysql8,scripts} cd ${WORK_DIR} # 下载 Gitea 二进制文件 GITEA_VERSION="1.21.1" wget https://dl.gitea.io/gitea/${GITEA_VERSION}/gitea-${GITEA_VERSION}-linux-amd64 -O gitea/gitea chmod +x gitea/gitea # 添加 MySQL 8.0 官方仓库 cat > /etc/yum.repos.d/mysql-community.repo <<EOF [mysql80-community] name=MySQL 8.0 Community Server baseurl=https://repo.mysql.com/yum/mysql-8.0-community/el/9/x86_64/ enabled=1 gpgcheck=0 # 简化离线安装,跳过gpg检查 EOF # 下载 MySQL 8.0 RPM 包及依赖 echo "正在下载 MySQL 8.0 安装包及依赖..." yum install yum-utils -y yumdownloader --resolve --destdir=mysql8/ \ mysql-community-server \ mysql-community-client \ mysql-community-common \ mysql-community-libs # 下载系统依赖 yumdownloader --destdir=mysql8/ \ libaio \ numactl-libs \ net-tools \ perl \ perl-Data-Dumper \ perl-JSON \ perl-Time-HiRes # 创建安装脚本 cat > scripts/install_gitea.sh << 'EOF' #!/bin/bash set -e # 设置数据库密码 read -p "请输入MySQL root密码: " MYSQL_ROOT_PWD read -p "请输入Gitea数据库密码: " GITEA_DB_PWD # 安装MySQL 8.0 echo "安装MySQL 8.0..." cd mysql8 rpm -ivh *.rpm --nodeps --force cd .. # 启动MySQL服务 systemctl start mysqld # 获取临时root密码 TEMP_PWD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}') echo "临时密码: $TEMP_PWD" # 更改root密码并创建gitea用户 mysql -uroot -p"$TEMP_PWD" --connect-expired-password <<MYSQL_SCRIPT ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PWD}'; CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'; CREATE USER 'gitea'@'localhost' IDENTIFIED BY '${GITEA_DB_PWD}'; GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea'@'localhost'; FLUSH PRIVILEGES; MYSQL_SCRIPT # 安装Gitea echo "安装Gitea..." install -m 0755 -o root -g root gitea/gitea /usr/local/bin/gitea # 创建系统用户 useradd -r -s /bin/false -d /var/lib/gitea -m -c "Gitea" gitea # 创建目录结构 mkdir -p /etc/gitea /var/log/gitea chown gitea:gitea /etc/gitea /var/log/gitea chmod 750 /etc/gitea /var/log/gitea # 配置文件 cat > /etc/gitea/app.ini << INI [server] PROTOCOL = http HTTP_PORT = 3000 DOMAIN = localhost ROOT_URL = http://localhost:3000/ [database] DB_TYPE = mysql HOST = localhost:3306 NAME = giteadb USER = gitea PASSWD = ${GITEA_DB_PWD} [repository] ROOT = /var/lib/gitea/gitea-repositories [log] ROOT_PATH = /var/log/gitea MODE = file LEVEL = Info INI # 创建systemd服务 cat > /etc/systemd/system/gitea.service << SVC [Unit] Description=Gitea After=network.target mysqld.service [Service] User=gitea Group=gitea WorkingDirectory=/var/lib/gitea ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini Restart=always Environment=USER=gitea HOME=/var/lib/gitea [Install] WantedBy=multi-user.target SVC # 启动服务 systemctl daemon-reload systemctl enable --now mysqld gitea echo "安装完成!" echo "Gitea访问地址: http://$(hostname -I | awk '{print $1}'):3000" echo "数据库信息:" echo " Root用户: root, 密码: ${MYSQL_ROOT_PWD}" echo " Gitea用户: gitea, 密码: ${GITEA_DB_PWD}" EOF chmod +x scripts/install_gitea.sh # 创建打包脚本 cat > package.sh << 'EOF' #!/bin/bash tar czf gitea-offline-install-rh10.tar.gz * echo "离线包已创建: gitea-offline-install-rh10.tar.gz" echo "请将此文件复制到RedHat 10系统并运行:" echo "1. tar xzf gitea-offline-install-rh10.tar.gz" echo "2. cd gitea-offline-install" echo "3. ./scripts/install_gitea.sh" EOF chmod +x package.sh # 打包所有内容 cd .. tar czf gitea-offline-install-rh10.tar.gz ${WORK_DIR} echo "========================================================" echo "离线安装包准备完成!" echo "生成文件: gitea-offline-install-rh10.tar.gz" echo "请将此文件复制到RedHat 10系统进行安装" echo "========================================================"

第二部分:在 无网络环境机器上安装指南

1. 复制离线包到 Red Hat 系统

bash
scp gitea-offline-install-rh10.tar.gz root@redhat10-host:/root/

2. 在 Red Hat 上执行安装

bash
cd /root tar xzf gitea-offline-install-rh10.tar.gz cd gitea-offline-install ./scripts/install_gitea.sh

关键更改说明

  1. 使用 MySQL 8.0 替代 MariaDB:

    • 添加 MySQL 8.0 官方仓库
    • 下载 MySQL 社区版服务器、客户端等 RPM 包
    • 调整安装脚本中的服务名为 mysqld
  2. MySQL 8.0 初始密码处理:

    bash
    # 获取临时root密码 TEMP_PWD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}') # 更改root密码并创建gitea用户 mysql -uroot -p"$TEMP_PWD" --connect-expired-password <<MYSQL_SCRIPT ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PWD}'; CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'; CREATE USER 'gitea'@'localhost' IDENTIFIED BY '${GITEA_DB_PWD}'; GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea'@'localhost'; FLUSH PRIVILEGES; MYSQL_SCRIPT
  3. 依赖包调整:

    • 添加 MySQL 8.0 特定依赖(numactl-libs, perl模块等)
    • 移除 MariaDB 特定包

安装注意事项

  1. MySQL 密码策略:

    • MySQL 8.0 默认要求强密码(大小写字母+数字+特殊字符)
    • 如果提示密码强度不足,请设置更复杂的密码
  2. 服务启动顺序:

    • 确保 Gitea 服务在 MySQL 服务之后启动
    • 安装脚本中已配置依赖关系:After=network.target mysqld.service
  3. SELinux 配置: 如果系统启用了 SELinux,可能需要调整策略:

    bash
    # 临时禁用(仅用于测试) setenforce 0 # 永久禁用(编辑配置文件) sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
  4. 防火墙配置:

    bash
    # 开放 Gitea 端口 firewall-cmd --permanent --add-port=3000/tcp # 开放 MySQL 端口(如果需要远程访问) firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload
  5. 首次访问配置:

    • 访问 http://服务器IP:3000
    • 完成管理员账户设置
    • 配置仓库路径和其他选项

验证安装

  1. 检查服务状态:

    bash
    systemctl status mysqld systemctl status gitea
  2. 检查数据库连接:

    bash
    mysql -u gitea -p -D giteadb
  3. 查看 Gitea 日志:

    bash
    journalctl -u gitea -f

备份建议

  1. 数据库备份:

    bash
    mysqldump -u root -p giteadb > gitea-db-backup.sql
  2. 配置文件备份:

    bash
    cp /etc/gitea/app.ini /backup/gitea-app.ini
  3. 数据目录备份:

    bash
    tar czf gitea-data-backup.tar.gz /var/lib/gitea

以上就是完全支持在无网络环境的 Red Hat 上安装 Gitea 和 MySQL 8.0,所有必要组件都包含在离线包中。

本文作者:sea-whales

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!