在VMware+centOS 8上基于http协议搭建Git服务器并实现外网访问
本文最终目的是实现Android终端访问虚拟机中git服务,所以需要搭建http协议的git服务器,而如何搭建http协议的git服务器,前人之述备矣,遂部分借鉴前人之作这里
一.设备信息
- windows10个人专业版(1909)
- VMware 15Pro(15.5.0 build-14665864)
- centOS 8(1905已关闭GUI,VMware采用NAT模式)
二.准备工作
windows防火墙开放80端口
控制面板 -> 系统和安全 -> Windows Defender 防火墙
点击高级设置 -> 点击入站规则 -> 新建规则
更改要创建的规则类型为端口
按照图示方式设置
选择允许连接并下一步
按照图示方式设置
名称设置随便
点击出站规则 -> 新建规则
后续步骤与上述入站规则设置保持一致
关闭SELinux
打开SELinux配置文件
1
vi /etc/selinux/config
修改SELINUX=disabled
重启centOS即可永久关闭SELinux
注:
- SELinux一共有3种状态,分别是Enforcing,Permissive和Disabled
- 查看当前状态命令:getenforcing
- 临时关闭命令: setenforce 0
- 临时开启:setenforce 1(不可用于永久关闭后的开启)
下载花生壳并配置
访问花生壳官网进入个人体验版
打开花生壳软件并点击右下角“+”
进行如下配置:
应用类型选择HTTP,内网主机为你的windows电脑ip地址,内网端口为80
虽然使用HTTP要向花生壳支付6元,但是6元买一年可获赠98年,四舍五入等于不要钱!(后文还会介绍一个比花生壳良心的内网穿透工具)
三.安装apache
安装httpd
1
yum install httpd
启动httpd服务
1
systemctl start httpd.service
修改firewalld配置文件和重启firewalld
1
2firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart firewalld.service如果嫌麻烦可直接关闭防火墙(风险自理)
注:
- 看防火墙状态:systemctl status firewalld
- 暂时关闭防火墙:systemctl stop firewalld
- 永久关闭防火墙: systemctl disable firewalld
- 重启防火墙:systemctl enable firewalld(该命令可永久开启防火墙)
四.配置git
新建仓库
1
2
3
4mkdir -p /home/gitrepo/share.git //空仓库可设置于任意目录下
cd /home/gitrepo/share.git
git init --bare
chown -R apache:apache /home/gitrepo创建账号并设置权限
1
2
3htpasswd -m -c /etc/httpd/conf.d/git-team.htpasswd XXX //XXX为账户名可任意设定
chown apache:apache /etc/httpd/conf.d/git-team.htpasswd
chmod 640 /etc/httpd/conf.d/git-team.htpasswd
五.配置apache
编辑配置文件
1
vi /etc/httpd/conf/httpd.conf
在最后一行IncludeOptional conf.d/*.conf的上面添加如下内容
1
2
3
4
5
6
7
8
9
10
11
12<VirtualHost *:80>
ServerName X.X.X.X #centOS的IP地址
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv GIT_PROJECT_ROOT /home/gitrepo #此处应与创建空仓库的位置一致
ScriptAlias /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
1
systemctl restart httpd.service
注:
- 查询httpd服务状态 :systemctl status httpd.service
- 查询httpd服务是否为开机启动: systemctl is-enabled httpd.service
- 设置httpd服务为开机启动状态:systemctl enable httpd.service
- 设置httpd服务为开机不启动状态:systemctl disable httpd.service
完成上述这些操作后,即可在外网进行git操作,例如clone
1 | git clone http://花生壳提供的域名/git/share.git |
六.Android终端访问上述Git服务
推荐使用Pocket Git,该app可在Googleplay中下载
下载地址:百度云(提取码:hv59)
七.后记
其实花生壳十分坑爹,每月的流量甚少,且速度的限制也很严格,只是胜在稳定,得到了合法的认可,如果你也对花生壳不感冒,那么我推荐Sakura Frp,我们可以用它替代花生壳做内网穿透。
在VMware+centOS 8上基于http协议搭建Git服务器并实现外网访问