Git 是一个开源版本控制系统,被全球成千上万的开发人员使用,它用于在源代码级别跟踪您的软件更改,它允许您跟踪更改,将其恢复到之前的阶段并创建文件和目录的备用版本。
HTTP Git Server 是一个开源项目,它使用 Nginx 网络服务器通过局域网 (LAN) 为 Git 存储库提供服务,它非常简单且易于设置,任何人都可以从命令行界面管理它。
在本教程中,我将解释如何在 Debian 11 上使用 Nginx 设置 HTTP Git 存储库服务器。
先决条件 ??运行 Debian 11 的服务器。 ?指向您的服务器 IP 的有效域名。 ?在您的服务器上配置了 root 密码。 ?安装 Nginx 和其他依赖首先,您需要安装 Nginx Web 服务器和其他必需的软件包来设置 HTTP Git 服务器。您可以使用以下命令安装所有这些:
apt-get install nginx git fcgiwrap apache2-utils unzip -y
安装完所有软件包后,您可以继续下一步。
创建 Git 存储库接下来,您需要创建一个目录来存储 Git 存储库。让我们在 Nginx Web 根目录中创建一个名为myrepo的目录:
mkdir /var/www/html/myrepo
接下来,将目录更改为myrepo并为用户创建另一个目录:
cd /var/www/html/myrepo mkdir user1.git
接下来,导航到用户目录并使用以下命令初始化 Git 存储库:
cd user1.git git --bare init
您将获得以下输出:
Initialized empty Git repository in /var/www/html/myrepo/user1.git/
接下来,使用以下命令更新 Git 服务器信息:
git update-server-info
接下来,使用以下命令更改 myrepo 的所有权并设置适当的权限:
chown -R www-data:www-data /var/www/html/myrepo chmod -R 755 /var/www/html/myrepo
接下来,创建一个名为 user1 的用户并设置密码:
htpasswd -c /var/www/html/myrepo/htpasswd user1
您可以设置密码,如下所示:
New password: Re-type new password: Adding password for user user1
您可以使用以下命令检查您的密码:
cat /var/www/html/myrepo/htpasswd
示例输出:
user1:$apr1$LoyCEkzA$Fjq5nBbLhBRdaxCQBBUQd1
配置 Nginx 以提供 Git 存储库 接下来,您需要创建一个 Nginx 虚拟主机配置文件来为 Git 存储库提供服务。
nano /etc/nginx/conf.d/git.conf
添加以下几行:
server { ???????listen 80; ???????root /var/www/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.yourdomain.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_max_body_size 0; ????auth_basic "Git Login"; ????auth_basic_user_file "/var/www/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/www/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 performance 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: man:nginx(8) ???Process: 144985 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) ???Process: 144986 ExecStart=/usr/sbin/nginx -g daemon on; master_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: master process /usr/sbin/nginx -g daemon on; master_process on; ??????????????144988 nginx: worker processDec 11 08:00:04 debian11 systemd[1]: Starting A high performance 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 performance 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.email " user1@yourdomain.com " git config --global user.name "user1"
接下来,使用以下命令添加您的 Git HTTP 服务器:
git remote add origin http: //user1@git.yourdomain.com /user1.git
接下来,创建一个名为 dev01 的目录并在其中添加一个文件:
mkdir dev01echo "This is my first application" > dev01/file1
接下来,将您创建的目录和文件添加到 Git 存储库:
git add .
接下来,使用以下命令提交更改:
git commit -a -m "Add files and directories"
您将获得以下输出:
[master (root-commit) 0299d83] Add files and directories 1 file changed, 1 insertion(+) create mode 100644 dev01/file1
接下来,使用以下命令将您的文件和目录上传到 HTTP Git 服务器:
git push origin master
系统会要求您提供密码以访问 Git 服务器:
Password for \\\'http://user1@git.yourdomain.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.yourdomain.com/user1.git * [new branch] ?????master -> master
您还可以使用以下命令直接从 Git 服务器下载您的存储库:
git clone http: //user1@git.yourdomain.com /user1.git
您将获得以下输出:
Cloning into \\\'user1\\\'...Password for \\\'http://user1@git.yourdomain.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 服务器,您现在可以在本地开发环境中实施此设置,并使用命令行管理和跟踪您的项目。