Введение
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. Теперь вы можете реализовать эту конфигурацию в своей локальной среде разработки, а также управлять своим проектом и отслеживать его с помощью командной строки.