Как установить HTTP Git Server с Nginx на Ubuntu 20.04
На этой странице
- Предпосылки
- Начало работы
- Установите Nginx и Git
- Создание репозитория Git
- Настройка Nginx для Git
- Тест HTTP-сервера Git
- Заключение
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 в свою среду разработки, доступную из вашей локальной сети.