Git是一个开源的版本控制系统,被全世界成千上万的开发者使用。它用于在源代码级别跟踪您的软件变更。它允许您跟踪更改,将它们恢复到前一阶段,并创建文件和目录的备用版本。
HTTP Git Server是一个开源项目,使用Nginx web server通过局域网(LAN)为Git资源库提供服务。它非常简单,易于设置,任何人都可以从命令行界面管理它。
在本教程中,我将解释如何在Debian 11上用Nginx设置HTTP Git存储库服务器。
先决条件
运行 Debian 11 的服务器。指向您的服务器 IP 的有效域名。在您的服务器上配置了 root 密码。
安装Nginx和其他依赖项
首先,你需要安装Nginx Web server和其他必要的软件包来设置HTTP Git服务器。您可以使用以下命令安装所有这些组件:
apt-get install nginx git fcgiwrap apache2-utils unzip -y
安装完所有软件包后,您可以继续下一步。
创建Git存储库
接下来,您需要创建一个目录来存储Git存储库。让我们在Nginx Web根目录下创建一个名为myrepo的目录:
mkdir /var/***/html/myrepo
接下来,将目录更改为myrepo,并为用户创建另一个目录:
cd /var/***/html/myrepo mkdir user1.git
接下来,导航到用户目录,使用以下命令初始化Git存储库:
cd user1.git git --bare init
您将获得以下输出:
Initialized empty Git repository in /var/***/html/myrepo/user1.git/
接下来,使用以下命令更新Git服务器信息:
git update-server-info
接下来,使用以下命令更改myrepo的所有权并设置适当的权限:
chown -R ***-data:***-data /var/***/html/myrepo chmod -R 755 /var/***/html/myrepo
接下来,创建一个名为user1的用户并设置密码:
htpasswd -c /var/***/html/myrepo/htpasswd user1
您可以按如下方式设置密码:
New password: Re-type new password: Adding password for user user1
您可以使用以下命令检查您的密码:
cat /var/***/html/myrepo/htpasswd
示例输出:
user1:$apr1$LoyCEkzA$Fjq5nBbLhBRdaxCQBBUQd1
配置Nginx以提供Git存储库
接下来,您需要创建一个Nginx虚拟主机配置文件来服务Git存储库。
nano /etc/nginx/conf.d/git.conf
添加以下几行:
server { listen 80; root /var/***/html/myrepo; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name git.yourdo***in.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; }location ~ (/.*) { client_***x_body_size 0; auth_basic "Git Login"; auth_basic_user_file "/var/***/html/myrepo/htpasswd"; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /var/***/html/myrepo; fastcgi_param REMOTE_USER $remote_user; fastcgi_param PATH_INFO $1; fastcgi_pass unix:/var/run/fcgiwrap.socket;}}
完成后保存并关闭文件,然后验证Nginx中是否有语法错误:
nginx -t
您将获得以下输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
最后,重启Nginx服务以应用更改:
systemctl restart nginx
您还可以使用以下命令检查Nginx状态:
systemctl status nginx
您将获得以下输出:
? nginx.service - A high perfor***nce web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-12-11 08:00:04 UTC; 2s ago Docs: ***n:nginx(8) Process: 144985 ExecStartPre=/usr/***in/nginx -t -q -g daemon on; ***ster_process on; (code=exited, status=0/SUCCESS) Process: 144986 ExecStart=/usr/***in/nginx -g daemon on; ***ster_process on; (code=exited, status=0/SUCCESS) Main PID: 144987 (nginx) Tasks: 2 (limit: 2341) Memory: 2.5M CPU: 42ms CGroup: /system.slice/nginx.service ??144987 nginx: ***ster process /usr/***in/nginx -g daemon on; ***ster_process on; ??144988 nginx: worker processDec 11 08:00:04 debian11 systemd[1]: Starting A high perfor***nce web server and a reverse proxy server...Dec 11 08:00:04 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argumentDec 11 08:00:04 debian11 systemd[1]: Started A high perfor***nce web server and a reverse proxy server.
从客户端连接到Git存储库
至此,Git HTTP服务器和Nginx构建完成。现在,是时候从客户端计算机连接并测试它了。
首先,使用以下命令在客户端计算机上安装Git包:
apt-get install git -y
接下来,使用以下命令为您的项目创建一个目录:
mkdir project
接下来,导航到您的项目目录,并使用以下命令初始化Git:
cd projectgit init
接下来,用您的电子邮件和用户名配置Git:
git config --global user.e***il " user1@yourdo***in.com " git config --global user.name "user1"
接下来,使用以下命令添加Git HTTP服务器:
git remote add origin http: //user1@git.yourdo***in.com /user1.git
接下来,创建一个名为dev01的目录,并向其中添加一个文件:
mkdir dev01echo "This is my first application" > dev01/file1
接下来,将您创建的目录和文件添加到Git存储库中:
git add .
接下来,使用以下命令提交更改:
git commit -a -m "Add files and directories"
您将获得以下输出:
[***ster (root-commit) 0299d83] Add files and directories 1 file changed, 1 insertion(+) create mode 100***4 dev01/file1
接下来,使用以下命令将文件和目录上传到HTTP Git服务器:
git push origin ***ster
您将被要求提供访问Git服务器的密码:
Password for 'http://user1@git.yourdo***in.com':
连接后,您将获得以下输出:
Counting objects: 4, done.Writing objects: 100% (4/4), 281 bytes | 281.00 KiB/s, done.Total 4 (delta 0), reused 0 (delta 0)To http://git.yourdo***in.com/user1.git * [new branch] ***ster -> ***ster
您也可以使用以下命令直接从Git服务器下载您的存储库:
git clone http: //user1@git.yourdo***in.com /user1.git
您将获得以下输出:
Cloning into 'user1'...Password for 'http://user1@git.yourdo***in.com': remote: Enumerating objects: 4, done.remote: Counting objects: 100% (4/4), done.remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0Unpacking objects: 100% (4/4), done.
结论
在上面的指南中,您学习了如何在Debian 11上用Nginx设置HTTP Git服务器。现在,您可以在本地开发环境中实现此设置,并使用命令行管理和跟踪您的项目。
本文来自夜遇投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/482617.html