如何在 Debian 11 上使用 Nginx 安装 HTTP Git 服务器如何在 Debian 11 上使用 Nginx 安装 HTTP Git 服务器如何在 Debian 11 上使用 Nginx 安装 HTTP Git 服务器如何在 Debian 11 上使用 Nginx 安装 HTTP Git 服务器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Debian 11 上使用 Nginx 安装 HTTP Git 服务器

在此页

  1. 先决条件
  2. 安装 Nginx 和其他依赖项
  3. 创建 Git 存储库
  4. 配置 Nginx 以服务 Git 存储库
  5. 从客户端连接到 Git 存储库
  6. 结论

Git 是一种开源版本控制系统,全世界有成千上万的开发人员在使用它。它用于在源代码级别跟踪您的软件更改。它允许您跟踪更改、将其恢复到之前的阶段并创建文件和目录的替代版本。

HTTP Git Server 是一个开源项目,它使用 Nginx 网络服务器通过局域网 (LAN) 为 Git 存储库提供服务。它非常简单且易于设置。任何人都可以从命令行界面管理它。

在本教程中,我将解释如何在 Debian 11 上使用 Nginx 设置 HTTP Git 存储库服务器。

先决条件

  • 运行 Debian 11 的服务器。
  • 用您的服务器 IP 指向的有效域名。
  • 在您的服务器上配置了根密码。

安装 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 ok
nginx: 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 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 包:

apt-get install git -y

接下来,使用以下命令为您的项目创建一个目录:

mkdir project

接下来,导航到您的项目目录并使用以下命令初始化 Git:

cd project
git init

接下来,使用您的电子邮件和用户名配置 Git:

git config --global user.email ""
git config --global user.name "user1"

接下来,使用以下命令添加 Git HTTP 服务器:

git remote add origin http:///user1.git

接下来,创建一个名为 dev01 的目录并在其中添加一个文件:

mkdir dev01
echo "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://': 

连接后,您将获得以下输出:

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

您将获得以下输出:

Cloning into 'user1'...
Password for 'http://': 
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 服务器。您现在可以将此设置实施到您的本地开发环境,并使用命令行管理和跟踪您的项目。

©2015-2025 艾丽卡 support@alaica.com