Как установить HTTP Git Server на Ubuntu 20.04 LTS | Ubuntu 18.08

Как установить HTTP Git Server на Ubuntu 20.04 LTS | Ubuntu 18.08

 

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

В этой статье предполагается, что у вас есть хотя бы базовые знания о Linux, вы знаете, как использовать оболочку, и, самое главное, вы размещаете свой сайт на собственном VPS. Установка довольно проста и предполагает, что вы работаете с учетной записью root, в противном случае вам может потребоваться добавить ‘ sudo‘ к командам, чтобы получить привилегии root. Я покажу вам пошаговую установку HTTP Git Server на Ubuntu 20.04 (Focal Fossa). Вы можете следовать тем же инструкциям для Ubuntu 18.04, 16.04 и любого другого дистрибутива на основе Debian, такого как Linux Mint.

Установите HTTP Git Server на Ubuntu 20.04 LTS Focal Fossa

Шаг 1. Сначала убедитесь, что все ваши системные пакеты обновлены, выполнив следующие aptкоманды в терминале.

sudo apt update
sudo apt upgrade
sudo apt install fcgiwrap apache2-utils unzip

Шаг 2. Установка Nginx на Ubuntu 20.04.

Nginx доступен в стандартных репозиториях Ubuntu. Чтобы установить его, выполните следующую команду:

sudo apt install nginx

После завершения установки запустите команды, чтобы Nginx автоматически запускался при запуске вашего сервера:

sudo systemctl stop nginx
sudo systemctl start nginx
sudo systemctl enable nginx

Настройка брандмауэра.

Между тем, вам необходимо убедиться, что ваш брандмауэр настроен на разрешение трафика через порты HTTP (80) и HTTPS (443). Nginx регистрирует себя как службу с помощью ufw:

sudo ufw allow in "Nginx Full"

Шаг 3. Установка Git на Ubuntu 20.04.

Выполните следующую команду ниже, чтобы установить Git в вашей системе Ubuntu:

sudo apt install git

Подтвердите установку Git:

git --version

Шаг 4. Создайте репозиторий Git.

Теперь мы создаем каталог для хранения репозитория Git:

mkdir /var/www/html/infoit-repo

Затем измените каталог на и создайте другой каталог для пользователей:infoit-repo

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

Теперь инициализируем репозиторий командой:

cd user.git
git --bare init

Затем обновите Git Server с помощью команды:

git update-server-info

Дайте репозиторию правильное право собственности с помощью команды:

chown -R www-data:www-data /var/www/html/infoit-repo
chmod -R 755 /var/www/html/infoit-repo

После этого создайте пользователя с именем user и установите пароль для ограничения доступа к репозиторию git с использованием базовой HTTP-аутентификации:

htpasswd -c /var/www/html/infoit-repo/htpasswd user

Шаг 5. Настройте Nginx для обслуживания репозитория Git.

Теперь мы создаем файл конфигурации виртуального хоста Nginx для обслуживания репозитория Git:

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

Добавьте следующие строки:

server {
        listen 80;

        root /var/www/html/infoit-repo;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name git.your-domain.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/infoit-repo/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/infoit-repo;
    fastcgi_param REMOTE_USER $remote_user;
    fastcgi_param PATH_INFO $1; 
    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
}

}

Сохраните и закройте файл, затем перезапустите службу Nginx, чтобы применить изменения:

nginx -t
sudo systemctl restart nginx

Шаг 6. Подключитесь к репозиторию Git с клиента.

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

mkdir my-project

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

cd my-project
git init

Мы рекомендуем настроить ваш Git для фиксации электронной почты и имени пользователя. Для этого выполните следующие команды:

git config --global user.email "user@your-domain.com"
git config --global user.name "user"

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

git remote add origin http://user@git.your-domain.com/user.git

Затем создайте каталог с именем dev и добавьте в него файл:

mkdir dev
echo "This is my first my application" > dev/file

Теперь мы можем добавить эти файлы в git с помощью команды:

git add .

Зафиксируйте изменения командой:

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

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

git push origin master

После подключения вы получите следующий вывод:

Counting objects: 8, done.
Writing objects: 100% (4/4), 512 bytes | 346.00 KiB/s, done.
Total 8 (delta 0), reused 0 (delta 0)
To http://git.your-domain.com/user.git
 * [new branch]      master -> master

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

git clone http://user@git.your-domain.com/user.git

Поздравляем! Вы успешно установили HTTP Git Server. Спасибо за использование этого руководства по установке HTTP Git Server в вашей системе Ubuntu 20.04 LTS Focal Fossa. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт Git .