搭建供内部使用的特定版本AOSP本地Git服务器步骤咨询
本地Git服务器搭建特定版本AOSP镜像及客户端使用指南
一、服务器端准备工作
1. 基础环境配置
- 安装必备工具:
# Debian/Ubuntu 系统 apt update && apt install git repo openssh-server -y # CentOS/RHEL 系统 yum install git repo openssh-server -y - 创建镜像存储目录并设置权限:
mkdir -p /opt/aosp-mirror chmod 755 /opt/aosp-mirror - 确认磁盘空间:确保至少有250GB以上可用空间(AOSP android-12.1.0_r12镜像约200GB)。
2. 同步官方特定版本AOSP镜像
- 进入镜像目录,初始化repo镜像模式:
cd /opt/aosp-mirror repo init -u https://android.googlesource.com/platform/manifest -b android-12.1.0_r12 --mirror - 开始同步所有仓库:
repo sync -j$(nproc)提示:
-j$(nproc)表示使用服务器全部CPU核心加速同步,若网络不稳定可适当降低线程数(如-j4)。
二、搭建Git访问服务(两种协议二选一)
选项1:SSH协议(推荐,安全且速度快)
- 创建专用git用户:
useradd -m git passwd git # 设置用户密码 - 调整镜像目录权限:
chown -R git:git /opt/aosp-mirror - 配置SSH密钥认证(可选,免密码访问):
- 让客户端用户生成SSH密钥对(
ssh-keygen -t ed25519),并将公钥内容发送给服务器管理员。 - 在服务器上创建git用户的SSH目录并添加公钥:
将客户端公钥逐行写入mkdir -p /home/git/.ssh touch /home/git/.ssh/authorized_keys chmod 700 /home/git/.ssh chmod 600 /home/git/.ssh/authorized_keys chown -R git:git /home/git/.ssh/home/git/.ssh/authorized_keys。
- 让客户端用户生成SSH密钥对(
- 开放防火墙22端口:
# Debian/Ubuntu ufw allow 22 # CentOS/RHEL firewall-cmd --add-port=22/tcp --permanent firewall-cmd --reload
选项2:HTTP协议(无需SSH密钥,适合大规模访问)
- 安装Apache服务:
# Debian/Ubuntu apt install apache2 gitweb -y # CentOS/RHEL yum install httpd gitweb -y - 启用必要模块:
# Debian/Ubuntu a2enmod cgi alias # CentOS/RHEL sed -i 's/#LoadModule cgi_module/LoadModule cgi_module/' /etc/httpd/conf.modules.d/00-base.conf - 配置gitweb指向镜像目录:
- 编辑
/etc/gitweb.conf,修改项目根目录:$projectroot = "/opt/aosp-mirror"; $git_temp = "/tmp"; $home_link = $my_uri || "/";
- 编辑
- 配置Apache虚拟主机:
- 创建配置文件
/etc/apache2/sites-available/aosp-mirror.conf(Debian/Ubuntu)或/etc/httpd/conf.d/aosp-mirror.conf(CentOS/RHEL):<VirtualHost *:80> ServerName aosp.your-domain.com # 替换为你的服务器域名/IP DocumentRoot /usr/share/gitweb Alias /git /usr/share/gitweb <Directory /usr/share/gitweb> Options +ExecCGI AddHandler cgi-script .cgi Require all granted </Directory> <Directory /opt/aosp-mirror> Require all granted </Directory> </VirtualHost>
- 创建配置文件
- 调整镜像目录权限并重启服务:
# Debian/Ubuntu chown -R www-data:www-data /opt/aosp-mirror a2ensite aosp-mirror.conf systemctl restart apache2 # CentOS/RHEL chown -R apache:apache /opt/aosp-mirror systemctl restart httpd - 开放防火墙80端口:
# Debian/Ubuntu ufw allow 80 # CentOS/RHEL firewall-cmd --add-port=80/tcp --permanent firewall-cmd --reload
三、修改Manifest仓库指向本地镜像
客户端repo init需要读取本地的manifest文件,因此需修改镜像中的manifest仓库,将所有项目的远程地址替换为本地服务器地址:
- 克隆manifest裸仓库到临时目录:
git clone /opt/aosp-mirror/platform/manifest.git /tmp/manifest-tmp cd /tmp/manifest-tmp - 编辑
default.xml文件:- 修改
<remote>标签的fetch属性:- SSH协议:
<remote name="aosp" fetch="ssh://git@your-server-ip/opt/aosp-mirror/" /> - HTTP协议:
<remote name="aosp" fetch="http://aosp.your-domain.com/git/" />
- SSH协议:
- 确保所有
<project>标签使用remote="aosp"(默认已配置,无需额外修改)。
- 修改
- 提交并推送修改:
git add default.xml git commit -m "Update remote URLs to local AOSP mirror" git push origin android-12.1.0_r12 - 清理临时目录:
rm -rf /tmp/manifest-tmp
四、客户端使用本地镜像
- 安装repo工具:
mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo export PATH=~/bin:$PATH - 初始化repo(根据服务器协议选择):
- SSH协议:
repo init -u ssh://git@your-server-ip/opt/aosp-mirror/platform/manifest.git -b android-12.1.0_r12 - HTTP协议:
repo init -u http://aosp.your-domain.com/git/platform/manifest.git -b android-12.1.0_r12
- SSH协议:
- 同步源码:
repo sync -j$(nproc)
五、镜像维护(可选)
若需要同步官方该分支的后续更新,定期执行以下操作:
- 进入服务器镜像目录:
cd /opt/aosp-mirror - 同步官方更新:
repo sync -j$(nproc) - 重复三、修改Manifest仓库指向本地镜像的步骤,更新manifest文件中的项目地址(若官方有manifest变更)。
内容的提问来源于stack exchange,提问作者vijay panwar
相关产品推荐
相关产品推荐

