在VMware+centOS 8上基于http协议搭建Git服务器并实现外网访问

在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端口
  1. 控制面板 -> 系统和安全 -> Windows Defender 防火墙

  2. 点击高级设置 -> 点击入站规则 -> 新建规则

  3. 更改要创建的规则类型为端口

  4. 按照图示方式设置

  5. 选择允许连接并下一步

  6. 按照图示方式设置

  7. 名称设置随便

  8. 点击出站规则 -> 新建规则

  9. 后续步骤与上述入站规则设置保持一致

关闭SELinux
  1. 打开SELinux配置文件

    1
    vi /etc/selinux/config
  2. 修改SELINUX=disabled

  3. 重启centOS即可永久关闭SELinux

注:

  • SELinux一共有3种状态,分别是EnforcingPermissiveDisabled
  • 查看当前状态命令:getenforcing
  • 临时关闭命令: setenforce 0
  • 临时开启:setenforce 1(不可用于永久关闭后的开启
下载花生壳并配置
  1. 访问花生壳官网进入个人体验版

  2. 打开花生壳软件并点击右下角“+”

  3. 进行如下配置:

    应用类型选择HTTP,内网主机为你的windows电脑ip地址,内网端口为80

    虽然使用HTTP要向花生壳支付6元,但是6元买一年可获赠98年,四舍五入等于不要钱!(后文还会介绍一个比花生壳良心的内网穿透工具)

三.安装apache

  1. 安装httpd

    1
    yum install httpd
  2. 启动httpd服务

    1
    systemctl start httpd.service
  3. 修改firewalld配置文件和重启firewalld

    1
    2
    firewall-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. 新建仓库

    1
    2
    3
    4
    mkdir -p /home/gitrepo/share.git   //空仓库可设置于任意目录下
    cd /home/gitrepo/share.git
    git init --bare
    chown -R apache:apache /home/gitrepo
  2. 创建账号并设置权限

    1
    2
    3
    htpasswd -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. 编辑配置文件

    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>
  2. 重启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,我们可以用它替代花生壳做内网穿透。

作者

Fly

发布于

2021-01-11

更新于

2021-01-20

许可协议


评论