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 服务器信息:
接下来,使用以下命令更改 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: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
复制代码
最后,重新启动 Nginx 服务以应用更改:
您还可以使用以下命令检查 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 process
Dec 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 argument
Dec 11 08:00:04 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.
复制代码
从客户端连接到 Git 存储库
至此,Git HTTP 服务器与 Nginx 搭建完成。现在,是时候从客户端计算机连接它并进行测试了。
首先,使用以下命令在客户端计算机上安装 Git 包:
接下来,使用以下命令为您的项目创建一个目录:
接下来,导航到您的项目目录并使用以下命令初始化 Git:
接下来,使用您的电子邮件和用户名配置 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 dev01
echo "This is my first application" > dev01/file1
复制代码
接下来,将您创建的目录和文件添加到 Git 存储库:
接下来,使用以下命令提交更改:
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 服务器:
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 0
Unpacking objects: 100% (4/4), done.
复制代码
结论
在上面的指南中,您学习了如何在 Debian 11 上使用 Nginx 设置 HTTP Git 服务器,您现在可以在本地开发环境中实施此设置,并使用命令行管理和跟踪您的项目。
评论