今天某个为某个项目建了个仓库,ssh 访问没问题,但是处于阿里云,只有内网ip,需要走代理,使得外网访问,所以需要配置 http,没考虑安全、性能等,本文使用 httpd,配置就为方便,有兴趣或有机会再试试 nginx 直接代理。
安装 git 和 httpd
[root@yg ~]# yum -y install git git-core httpd
初始化目标仓库
[git-test@yg ~]# git init --bare yg-git-repo
新建 git 密码认证文件,后面在 httpd 配置文件中会指定
[root@yg ~]# htpasswd -m -c /etc/httpd/conf.d/git-team.htpasswd yg1
再建一个用户,不带 -c,-c 是新建文件,前面已经建过了
[root@yg ~]# htpasswd -m /etc/httpd/conf.d/git-team.htpasswd yg2
查看 httpd 状态,端口使用默认 80,如被占用启动会报错,自己修改
[root@yg ~]# netstat -tlunp|grep httpd
[root@yg ~]# netstat -tlunp|grep 80
将密码文件和仓库属主改为 apache,注意额,不然后面不会成功额
[root@yg git-test]# chown apache:apache /etc/httpd/conf.d/git-team.htpasswd
[root@yg git-test]# chown apache:apache -R /home/git-test/
修改 httpd 配置文件,并启动 httpd 服务
[root@yg git-test]# vim /etc/httpd/conf/httpd.conf # 到最后添加下面一段,注意 /home/git-test 和 /yg-git/
<VirtualHost *:80>
ServerName git.cnblogs.com
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv GIT_PROJECT_ROOT /home/git-test
ScriptAlias /yg-git/ /usr/libexec/git-core/git-http-backend/
<Location />
AuthType Basic
AuthName "Git"
AuthUserFile /etc/httpd/conf.d/git-team.htpasswd
Require valid-user
</Location>
</VirtualHost>
启动 httpd 服务,这个报了信息,不算错,百度了一下,解决了好看

在 /etc/httpd/conf/httpd.conf 中的 Listen 80 下面添加下面一行即可解决:ServerName localhost:80

大功告成:测试一波,这里要注意标红的地方,在访问项目 url 的时候,使用脚本别名代理git项目根路劲,所以你可以自定义。

由于自己不是专职于运维,不太熟悉 git 和 Apache 服务器配合,对于安全等等其他都不了解,只是达到了想要的效果,为此做个小笔记,如果能帮到你就更好了。

