首页 > 系统相关 >服务器与本地资源同步,在ubuntu自建git库,使用nginx远程http访问

服务器与本地资源同步,在ubuntu自建git库,使用nginx远程http访问

时间:2023-06-25 23:44:24浏览次数:39  
标签:git http nginx test 服务器 fastcgi

xshell在linux与windows之间传文件虽然方便,但使用git才能真正实现资源同步。

为实现服务器与本地资源同步,在ubuntu服务器端自建git库。

使用 git-http-backend 搭建 git 服务的原理都是类似的, 主要是利用 web 服务器 (apache/nginx) 进行用户认证, 并将用户信息传递给 CGI 程序 git-http-backend , 从而实现通过 http 完成 git 操作。nginx自带的FastCGI。

1、版本

本地:windows

服务器:腾讯云轻量服务器 ubuntu20.04

2、参考

git 官方使用手册 https://git-scm.com/book/en/v2

网友分享 https://beginor.github.io/2016/03/12/http-git-server-on-nginx.html

3、接下来开始傻瓜式操作

4、安装git

(1)ubuntu中安装稳定版本中的最新版 sudo apt-get install git

(2)windows 10 中安装git https://git-scm.com/download/win  运行下载下来的*.exe,我是一直直接 ”下一步“ 的

(3)git 和 git for windows 分别是两个项目

5、创建自己的git库

(1)cd 到要创建版本控制的文件所在的目录,假设该目录在 /home/test

(2)执行 git init ,立马就会在当前目录下创建一个空的 git 库

(3)将当前目录下所有文件和目录加入该库,提交第一个版本

git add *
git commit -m 'Initial project version'

6、重点来了,如何使本地 windows 10 可以访问到 ubuntu 上的 git库呢?

我将使用 git 版本 1.6.6 之后支持的 Smart HTTP 协议来建立服务器 git 库的对外服务。

(1)cd /home

(2)git clone --bare test test.git

(3)将 test.git 放到单独的目录中,作为服务仓库的存在,不携带 test 目录中的工作目录

mkdir /home/mygit

mv test.git /home/mygit

chmod 777 /home/mygit/test.git  我偷懒直接开放全部权限,省得麻烦~

(4)安装 fcgiwrap

apt install fcgiwrap

(5)修改nginx.conf

nginx.conf 可能在 /usr/local/nginx/conf, /etc/nginx, /usr/local/etc/nginx

我的在 /etc/nginx。

添加以下内容到 server 模块中(可以到该篇看如何安装和简易安装 nginx:https://www.cnblogs.com/fanyann/p/17500960.html)

# 配置以 /git 开始的虚拟目录
location ~ /git(/.*) {
# 使用 Basic 认证
auth_basic "Restricted";
# 认证的用户文件
auth_basic_user_file /etc/nginx/passwd; # /etc/nginx/passwd 稍后创建,别急!
# FastCGI 参数
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
fastcgi_param GIT_HTTP_EXPORT_ALL "";
# git 库在服务器上的根目录
fastcgi_param GIT_PROJECT_ROOT /home/mygit; #目录 /home/mygit 要根据你的实际仓库地址修改哦!
fastcgi_param PATH_INFO $1;
# 将认证用户信息传递给 fastcgi 程序
fastcgi_param REMOTE_USER $remote_user;
# 包涵默认的 fastcgi 参数;
include fastcgi_params;
# 将允许客户端 post 的最大值调整为 100 兆
client_max_body_size 100M;
}

(6)检查命令 htpasswd 是否存在,没有的话,执行 apt-get install apache2-utils 安装

(7)使用 htpasswd 创建远程http访问时需要输入的用户名及密码

htpasswd /etc/nginx/passwd userName

userName替换为你想要的名称,接着根据提示设定密码

(8)重启 nginx 执行 nginx -s reload

(9)使用 http 而不是 https;git clone 执行后输入(7)中设置的用户名及密码就能远程获取 test.git 库了

git clone http://服务器域名/git/test.git

git clone http://服务器IP地址:80/git/test.git  因为我使用的是 nginx 的默认端口80,所以这里必须指定端口为80,否则这条命令默认会访问 443 端口

 

标签:git,http,nginx,test,服务器,fastcgi
From: https://www.cnblogs.com/fanyann/p/17503751.html

相关文章

  • Nginx反向代理&记录用户IP地址企业案例
    反向代理机器节点:lb0110.0.0.30#lb01是反向代理服务器(包括负载均衡的功能)www0110.0.0.40www0210.0.0.50【演示反向代理功能】 图片解读:使用客户端机器www01,访问负载均衡lb01(反向代理),看到了www01,www02页面信息在www01服务器上检测客户端信息,发现请求是10.0.0.3......
  • git提交由于粗心大意漏掉了apk
    出现这样低级的错误,真的是愧疚万分,莫名起名的缺少了最重要的apk,并且是两笔提交都犯了同样的错误,不再去想原因了,肯定是人为失误。补充一下后续的措施,避免出现这样的错误。提交之后目视检查gitpush之后需要去gerrit查看提交的产物是否完整......
  • 07前后端项目上传gitee,后端多方式登录接口,发送短信功能,发送短信封装,短信验证码接口,短
    1前后端项目上传到gitee#公司里: -前端一个仓库---》一个团队-后端一个仓库---》一个团队-微服务:两三个人一个服务---》一个项目一个仓库-网上开源软件,前后端都在一起#在远端建立前端仓库#本地代码提交到远成仓库2后端多方式......
  • HTTP之HEAD method
       在node中用了一下request.head,发现很少关注过method为HEAD的:   TheHEADmethodisidenticaltotheGETmethodexceptthattheservermustnotreturnamessage-bodyintheresponse.ThemetainformationcontainedintheHTTPheadersinresponsetoaHEAD......
  • Nginx 优化
    目录一、Nginx隐藏版本号1.访问网站查看版本号2.隐藏方法3.刷新网页二、Nginx更改版本号1.修改Nginx源码文件2.重新编译安装3.将隐藏版本号设置打开4.刷新网页三、Nginx日志分割1.编写shell脚本2.运行脚本3.创建定时任务四、Nginx压缩页面1.更改配置文件2.清空......
  • Ingress-Nginx 灰度(金丝雀)发布
    使用Ingress-Nginx进行灰度(金丝雀)发布Ingress-NginxCanary介绍NginxIngressController作为项目对外的流量入口和项目中各个服务的反向代理。官方文档概述:Annotations-Ingress-NginxController(kubernetes.github.io)NginxAnnotations的几种Canary规则:Annota......
  • http跨域时的options请求
    来源:https://blog.csdn.net/qq_36025814/article/details/108023035 _____________________________________________________________________________________________________________________________________________________________________________________________......
  • 【git】基于JGit通过ssh-url拉取指定commit-id的代码
    实现1️⃣pom依赖:<dependency><groupId>org.eclipse.jgit</groupId><artifactId>org.eclipse.jgit</artifactId><version>6.6.0.202305301015-r</version></dependency><dependency><group......
  • 部署PHP+Swoole实现自动更新项目的GitHub Webhooks
    前言在项目开发过程中,每次需要手动登录服务器并执行gitpull命令来更新代码,这样非常繁琐和耗时。为了简化这个过程,我们可以利用GitHub的Webhooks功能,结合PHP和Swoole来编写一个自动更新项目的接口脚本。实现步骤以下是实现自动更新项目的GitHubWebhooks的步骤:首先,你得有一个......
  • git提交规范 fix,feat等字段含义
    以下是commit提交规范,主要是在提交代码时标识本次提交的属性 feat:新功能(feature)fix:修补bugdocs:文档(documentation)style:格式(不影响代码运行的变动)refactor:重构(即不是新增功能,也不是修改bug的代码变动)chore:构建过程或辅助工具的变动revert:撤销,版本回退perf:......