Как установить HTTP Git Server с Nginx в Debian 11

12 set 2022 5 min di lettura
Как установить HTTP Git Server с Nginx в Debian 11
Indice dei contenuti

Введение

Git — это система управления версиями с открытым исходным кодом, используемая тысячами разработчиков по всему миру. Он используется для отслеживания изменений программного обеспечения на уровне исходного кода. Он позволяет отслеживать изменения, возвращаться к предыдущим этапам и создавать альтернативные версии файлов и каталогов.

HTTP Git Server — это проект с открытым исходным кодом, который использует веб-сервер Nginx для обслуживания репозиториев Git в вашей локальной сети (LAN). Это очень просто и легко настроить. Любой может справиться с этим из интерфейса командной строки.

В этом руководстве я объясню, как настроить сервер репозитория Git HTTP с Nginx в Debian 11.

Если вы хотите установить HTTP Git Server на удаленном сервере, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и прочитайте следующий.

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

ssh root@IP_DEL_SERVER

Далее вам нужно будет ввести пароль пользователя root.

Если вы не используете пользователя root, вы можете войти в систему с другим именем пользователя, используя ту же команду, а затем изменить root на свое имя пользователя:

ssh nome_utente@IP_DEL_SERVER

Затем вам будет предложено ввести пароль пользователя.

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Предпосылки

  • Сервер под управлением Debian 11.
  • Действительное доменное имя указывало на IP-адрес вашего сервера.
  • Пароль root настроен на вашем сервере.

Установите Nginx и другие зависимости

Во-первых, вам нужно будет установить веб-сервер Nginx и другие пакеты, необходимые для настройки HTTP-сервера Git. Вы можете установить их все, используя следующую команду:

apt-get install nginx git fcgiwrap apache2-utils unzip -y

После установки всех пакетов можно переходить к следующему шагу.

Создайте репозиторий Git

Далее вам нужно создать каталог для хранения репозитория Git. Давайте создадим каталог с именем myrepo внутри корневого веб-каталога Nginx:

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 с клиента

На данный момент HTTP-сервер Git настроен с помощью Nginx. Теперь пришло время подключить его с клиентской машины и протестировать.

Сначала установите пакет Git на клиентский компьютер с помощью следующей команды:

apt-get install git -y

Затем создайте каталог для вашего проекта с помощью следующей команды:

mkdir project

Затем перейдите в каталог вашего проекта и инициализируйте Git с помощью следующей команды:

cd project
git init

Затем настройте Git, используя свой адрес электронной почты и имя пользователя:

git config --global user.email "[email protected]"
git config --global user.name "user1"

Затем добавьте свой сервер HTTP Git с помощью следующей команды:

git remote add origin http://[email protected]/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:

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 clone http://[email protected]/user1.git

Вы также можете загрузить свой репозиторий напрямую с сервера Git, используя следующую команду:

Cloning into 'user1'...
 Password for 'http://[email protected]':
 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.

Вы получите следующий вывод:

git clone http://[email protected]/user1.git

Вывод

В этом руководстве вы узнали, как настроить HTTP-сервер Git с Nginx в Debian 11. Теперь вы можете реализовать эту конфигурацию в своей локальной среде разработки, а также управлять своим проектом и отслеживать его с помощью командной строки.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.