以下是针对在有网络的环境下准备 Gitea 和 MySQL 8.0 离线安装包,并在 另一台无网络环境上安装的完整方案:
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 "========================================================"
bashscp gitea-offline-install-rh10.tar.gz root@redhat10-host:/root/
bashcd /root
tar xzf gitea-offline-install-rh10.tar.gz
cd gitea-offline-install
./scripts/install_gitea.sh
使用 MySQL 8.0 替代 MariaDB:
mysqldMySQL 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
依赖包调整:
MySQL 密码策略:
服务启动顺序:
After=network.target mysqld.serviceSELinux 配置: 如果系统启用了 SELinux,可能需要调整策略:
bash# 临时禁用(仅用于测试)
setenforce 0
# 永久禁用(编辑配置文件)
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
防火墙配置:
bash# 开放 Gitea 端口
firewall-cmd --permanent --add-port=3000/tcp
# 开放 MySQL 端口(如果需要远程访问)
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
首次访问配置:
http://服务器IP:3000检查服务状态:
bashsystemctl status mysqld systemctl status gitea
检查数据库连接:
bashmysql -u gitea -p -D giteadb
查看 Gitea 日志:
bashjournalctl -u gitea -f
数据库备份:
bashmysqldump -u root -p giteadb > gitea-db-backup.sql
配置文件备份:
bashcp /etc/gitea/app.ini /backup/gitea-app.ini
数据目录备份:
bashtar czf gitea-data-backup.tar.gz /var/lib/gitea
以上就是完全支持在无网络环境的 Red Hat 上安装 Gitea 和 MySQL 8.0,所有必要组件都包含在离线包中。
本文作者:sea-whales
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!