Поиск по сайту:

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


На этой странице

  1. Предпосылки
  2. Начало работы
  3. Установите Nginx и Git
  4. Создание репозитория Git
  5. Настройка Nginx для Git
  6. Тест HTTP-сервера Git
  7. Заключение

Git — это бесплатная система управления версиями с открытым исходным кодом, разработанная Линусом Торвальдсом. Его используют миллионы разработчиков по всему миру. GitHub также предлагает бесплатный хостинг кода. Однако бесплатный сервис не позволяет размещать код в частном порядке. В этом случае вы можете разместить свой собственный сервер для размещения кода на Git HTTP-сервере. Это даст вам полный контроль над сервером.

В этом руководстве мы покажем вам, как установить и настроить HTTP-сервер Git с Nginx в Ubuntu 20.04.

Предпосылки

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

Начиная

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

apt-get update -y

Как только все пакеты будут обновлены, вы можете перейти к следующему шагу.

Установите Nginx и Git

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

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

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

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

Затем вам нужно будет создать репозиторий Git в корневом веб-каталоге Nginx. Сначала создайте каталог с именем git с помощью следующей команды:

mkdir /var/www/html/git

Затем измените каталог на git и создайте новый каталог для репозитория Git:

cd /var/www/html/git
mkdir gituser.git

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

git --bare init

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

git update-server-info

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

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

Затем создайте нового пользователя gituser для аутентификации с помощью следующей команды;

htpasswd -c /var/www/html/git/htpasswd gituser

Вам будет предложено установить пароль, как показано ниже:

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

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

cat /var/www/html/git/htpasswd

Вы должны получить следующий результат:

gituser:$apr1$iPKZDbFB$ziRRbGXzVMMHaPYOtL05m/

Настроить Nginx для Git

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

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

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

server {
        listen 80;

        root /var/www/html/git;

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

        server_name git.example.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/git/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/git;
    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 Tue 2020-11-17 07:43:46 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 3240 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 3256 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 3257 (nginx)
      Tasks: 3 (limit: 4691)
     Memory: 3.5M
     CGroup: /system.slice/nginx.service
             ??3257 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??3258 nginx: worker process
             ??3259 nginx: worker process

Nov 17 07:43:46 ubunt4 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 17 07:43:46 ubunt4 systemd[1]: Started A high performance web server and a reverse proxy server.

Как только вы закончите, вы можете перейти к следующему шагу.

Тестовый HTTP-сервер Git

На данный момент сервер Git установлен и настроен. Теперь пришло время протестировать его.

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

apt-get install git -y

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

mkdir myapp

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

cd myapp
git init

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

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

Затем создайте каталоги app1 и app2, а также создайте файлы app1 и app2 с некоторым содержимым внутри этих каталогов:

mkdir app1 app2
echo "This is my first application" > app1/app1
echo "This is my first application" > app2/app2

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

git add .

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

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

Вы должны получить следующий результат:

[master (root-commit) 4e90372] Add files and directories
 2 files changed, 2 insertions(+)
 create mode 100644 app1/app1
 create mode 100644 app2/app2

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

git push origin master

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

Password for 'http://': 

Введите свой пароль и нажмите Enter. Вы должны получить следующий результат:

Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (5/5), 354 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To http:///gituser.git
 * [new branch]      master -> master

Приведенный выше вывод указывает на то, что ваши файлы и каталоги добавлены в удаленный репозиторий Git. Если вы хотите клонировать этот репозиторий в свою локальную систему, выполните следующую команду:

git clone http:///gituser.git

Вы должны получить следующий результат:

Cloning into 'gituser'...
Password for 'http://': 
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
Checking connectivity... done.

Заключение

Поздравляем! вы успешно установили и настроили HTTP-сервер Git на сервере Ubuntu 20.04. Теперь вы можете внедрить сервер Git в свою среду разработки, доступную из вашей локальной сети.