Как установить HTTP Git-сервер с Nginx на Ubuntu 16.04
Это руководство существует для этих версий ОС
- Ubuntu 18.04 (Bionic Beaver)
- Ubuntu 16.04 (Xenial Xerus)
На этой странице
- 1 Начало работы
- 2. Установите необходимые пакеты
- 3. Настройка Nginx
- 4 Создать репозиторий Git
- 5 Протестируйте Git на клиентском компьютере
- Заключение
Git — это бесплатная система контроля версий с открытым исходным кодом, которую можно использовать для отслеживания изменений кода. Git позволяет создавать множество репозиториев для одного и того же приложения и координировать работу с этими файлами между несколькими людьми. Он в основном используется для управления исходным кодом при разработке программного обеспечения.
В этой статье мы узнаем, как установить HTTP-сервер Git с Nginx в Ubuntu 16.04.
Требования
- В вашей системе установлен свежий сервер Ubuntu 16.04.
- Пользователь Sudo с привилегиями root.
- Статический IP-адрес 192.168.15.189, настроенный на вашем сервере
1 Начало работы
Перед запуском вам необходимо обновить вашу систему до последней стабильной версии.
Вы можете сделать это, выполнив следующую команду:
sudo apt-get update -y
sudo apt-get upgrade -y
Как только ваша система будет обновлена, перезапустите ее и войдите в систему с помощью пользователя sudo.
2 Установите необходимые пакеты
Во-первых, вам нужно будет установить в вашу систему некоторые необходимые пакеты, включая nginx, git, nano и fcgiwrap. Вы можете установить их все, выполнив следующую команду:
sudo apt-get install nginx git nano fcgiwrap apache2-utils -y
После установки всех необходимых пакетов вам нужно будет создать каталог для репозитория Git. Вы можете сделать это, выполнив следующую команду:
sudo mkdir /var/www/html/git
Затем дайте правильное разрешение каталогу Git:
sudo chown -R www-data:www-data /var/www/html/git
Когда вы закончите, вы можете приступить к настройке веб-сервера Nginx.
3 Настройте Nginx
Во-первых, вам нужно настроить Nginx для передачи трафика Git в Git. Вы можете сделать это, отредактировав файл конфигурации Nginx по умолчанию:
sudo nano /etc/nginx/sites-available/default
Измените файл, как показано ниже:
# Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; 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 _; 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; # Git pushes can be massive, just to make sure nginx doesn't suddenly cut the connection add this. auth_basic "Git Login"; # Whatever text will do. auth_basic_user_file "/var/www/html/git/htpasswd"; include /etc/nginx/fastcgi_params; # Include the default fastcgi configs fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; # Tells fastcgi to pass the request to the git http backend executable fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /var/www/html/git; # /var/www/git is the location of all of your git repositories. fastcgi_param REMOTE_USER $remote_user; fastcgi_param PATH_INFO $1; # Takes the capture group from our location directive and gives git that. fastcgi_pass unix:/var/run/fcgiwrap.socket; # Pass the request to fastcgi } }
Сохраните и закройте файл, когда закончите. Затем проверьте Nginx на наличие ошибок конфигурации с помощью следующей команды:
sudo nginx -t
Если все в порядке, вы должны увидеть следующий вывод:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Далее вам нужно будет создать учетную запись пользователя, которую вам нужно будет использовать для просмотра или фиксации в репозитории. Вы можете создать пользователя с именем hitesh с помощью утилиты htpasswd:
sudo htpasswd -c /var/www/html/git/htpasswd hitesh
Наконец, перезапустите Nginx, чтобы применить все изменения, с помощью следующей команды:
sudo systemctl restart nginx
Вы можете проверить состояние сервера Nginx с помощью следующей команды:
sudo 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 2017-06-20 23:00:11 IST; 51min ago Process: 12415 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS) Process: 7616 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS) Process: 12423 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 12419 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 12427 (nginx) CGroup: /system.slice/nginx.service ??????12427 nginx: master process /usr/sbin/nginx -g daemon on; master_process on ??????12431 nginx: worker process Jun 20 23:00:11 localhost systemd[1]: Stopped A high performance web server and a reverse proxy server. Jun 20 23:00:11 localhost systemd[1]: Starting A high performance web server and a reverse proxy server... Jun 20 23:00:11 localhost systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument Jun 20 23:00:11 localhost systemd[1]: Started A high performance web server and a reverse proxy server.
4 Создать репозиторий Git
Как только все настроено правильно, пришло время создать репозиторий Git.
Вы можете создать репозиторий с именем repo.git с помощью следующей команды:
cd /var/www/html/git
sudo mkdir hitesh.git
sudo cd hitesh.git
sudo git --bare init
sudo git update-server-info
sudo chown -R www-data.www-data .
sudo chmod -R 777 .
Затем вам нужно будет разрешить службу http через брандмауэр UFW. По умолчанию UFW отключен в вашей системе, поэтому вам нужно сначала включить его. Вы можете включить его с помощью следующей команды:
sudo ufw enable
После включения брандмауэра UFW вы можете разрешить службу HTTP, выполнив следующую команду:
sudo ufw allow http
Теперь вы можете проверить состояние брандмауэра UFW, выполнив следующую команду:
sudo ufw status
Хорошо, вот и все для конфигурации на стороне сервера. Теперь вы можете перейти на клиентскую сторону, чтобы протестировать Git.
5 Протестируйте Git на клиентской машине
Прежде чем начать, вам нужно будет установить git в клиентской системе. Вы можете установить его с помощью следующей команды:
sudo apt-get install git -y
Сначала создайте локальный репозиторий с помощью следующей команды:
sudo mkdir ~/testproject
Затем измените каталог на testproject и запустите новый удаленный репозиторий с помощью следующей команды:
cd ~/testproject
git init
git remote add origin http:///hitesh.git
Затем создайте несколько файлов и каталогов с помощью следующей команды:
mkdir test1 test2 test3
echo "This is my first repository" > test1/repo1
echo "This is my second repository" > test2/repo2
echo "This is my third repository" > test3/repo3
Затем выполните следующую команду, чтобы добавить все файлы и каталоги в репозиторий:
git add .
git commit -a -m "Add files and directoires"
Вы должны увидеть следующий вывод:
[master 002fac9] Add files and directoires 3 files changed, 3 insertions(+) create mode 100644 repo1 create mode 100644 repo2 create mode 100644 repo3
Затем отправьте все файлы и каталоги на сервер Git с помощью следующей команды:
git push origin master
Вы должны увидеть следующий вывод:
Password for 'http://': Counting objects: 6, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (5/5), 422 bytes | 0 bytes/s, done. Total 5 (delta 0), reused 0 (delta 0) To http:///hitesh.git 68f1270..002fac9 master -> master
Теперь все ваши файлы и каталоги зафиксированы на вашем сервере Git.
Процесс создания репозитория Git завершен. Теперь вы можете легко клонировать свой репозиторий в будущем. Вы можете клонировать свой репозиторий, используя следующую команду в удаленной системе:
git clone :/var/www/html/git/hitesh.git
Вы должны увидеть следующий вывод:
Cloning into 'hitesh'... 's password: remote: Counting objects: 8, done. remote: Compressing objects: 100% (3/3), done. Receiving objects: 100% (8/8), 598 bytes | 0 bytes/s, done. remote: Total 8 (delta 0), reused 0 (delta 0) Checking connectivity... done.
Теперь измените каталог на клонированный репозиторий с помощью следующей команды:
cd hitesh
tree
Вы должны увидеть следующий вывод:
. |-- test1 | `-- repo1 |-- test2 | `-- repo2 `-- test3 `-- repo3 3 directories, 3 files
Заключение
Я надеюсь, что теперь вы можете легко отправлять, извлекать, клонировать и фиксировать исходный код с помощью сервера Git. Не стесняйтесь комментировать меня, если у вас есть какие-либо сомнения.