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

举报
wljslmz 发表于 2022/07/28 00:04:21 2022/07/28
【摘要】 Git 是一个开源版本控制系统,被全球成千上万的开发人员使用,它用于在源代码级别跟踪您的软件更改,它允许您跟踪更改,将其恢复到之前的阶段并创建文件和目录的备用版本。 HTTP Git Server 是一...

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

  
 
  • 1

安装完所有软件包后,您可以继续下一步。

创建 Git 存储库

接下来,您需要创建一个目录来存储 Git 存储库。让我们在 Nginx Web 根目录中创建一个名为myrepo的目录:

mkdir /var/www/html/myrepo

  
 
  • 1

接下来,将目录更改为myrepo并为用户创建另一个目录:

cd /var/www/html/myrepo 
mkdir user1.git

  
 
  • 1
  • 2

接下来,导航到用户目录并使用以下命令初始化 Git 存储库:

cd user1.git 
git --bare init

  
 
  • 1
  • 2

您将获得以下输出:

Initialized empty Git repository in /var/www/html/myrepo/user1.git/

  
 
  • 1

接下来,使用以下命令更新 Git 服务器信息:

git update-server-info

  
 
  • 1

接下来,使用以下命令更改 myrepo 的所有权并设置适当的权限:

chown -R www-data:www-data /var/www/html/myrepo 
chmod -R 755 /var/www/html/myrepo

  
 
  • 1
  • 2

接下来,创建一个名为 user1 的用户并设置密码:

htpasswd -c /var/www/html/myrepo/htpasswd user1

  
 
  • 1

您可以设置密码,如下所示:

New password: 
Re-type new password: 
Adding password for user user1

  
 
  • 1
  • 2
  • 3

您可以使用以下命令检查您的密码:

cat /var/www/html/myrepo/htpasswd

  
 
  • 1

示例输出:

user1:$apr1$LoyCEkzA$Fjq5nBbLhBRdaxCQBBUQd1

  
 
  • 1

配置 Nginx 以提供 Git 存储库

接下来,您需要创建一个 Nginx 虚拟主机配置文件来为 Git 存储库提供服务。

nano /etc/nginx/conf.d/git.conf

  
 
  • 1

添加以下几行:

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;
}

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

完成后保存并关闭文件,然后验证 Nginx 是否存在任何语法错误:

nginx -t

  
 
  • 1

您将获得以下输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

  
 
  • 1
  • 2

最后,重新启动 Nginx 服务以应用更改:

systemctl restart nginx

  
 
  • 1

您还可以使用以下命令检查 Nginx 状态:

systemctl status nginx

  
 
  • 1

您将获得以下输出:

? 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.

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

从客户端连接到 Git 存储库

至此,Git HTTP服务器与Nginx搭建完成。现在,是时候从客户端计算机连接它并进行测试了。

首先,使用以下命令在客户端计算机上安装 Git 包:

apt-get install git -y

  
 
  • 1

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

mkdir project

  
 
  • 1

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

cd project
git init

  
 
  • 1
  • 2

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

git config --global user.email " user1@yourdomain.com " 
git config --global user.name "user1"

  
 
  • 1
  • 2

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

git remote add origin http: //user1@git.yourdomain.com /user1.git

  
 
  • 1

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

mkdir dev01
echo "This is my first application" > dev01/file1

  
 
  • 1
  • 2

接下来,将您创建的目录和文件添加到 Git 存储库:

git add .

  
 
  • 1

接下来,使用以下命令提交更改:

git commit -a -m "Add files and directories"

  
 
  • 1

您将获得以下输出:

[master (root-commit) 0299d83] Add files and directories
 1 file changed, 1 insertion(+)
 create mode 100644 dev01/file1

  
 
  • 1
  • 2
  • 3

接下来,使用以下命令将您的文件和目录上传到 HTTP Git 服务器:

git push origin master

  
 
  • 1

系统会要求您提供密码以访问 Git 服务器:

Password for 'http://user1@git.yourdomain.com': 

  
 
  • 1

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

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

您还可以使用以下命令直接从 Git 服务器下载您的存储库:

git clone http: //user1@git.yourdomain.com /user1.git

  
 
  • 1

您将获得以下输出:

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.

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结论

在上面的指南中,您学习了如何在 Debian 11 上使用 Nginx 设置 HTTP Git 服务器,您现在可以在本地开发环境中实施此设置,并使用命令行管理和跟踪您的项目。

文章来源: blog.csdn.net,作者:wljslmz,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_43025343/article/details/122006716

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。