Установка и настройка Git сервера: различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к навигации Перейти к поиску
Новая страница: «= Установка и настройка Git сервера = == 1. Подготовка системы == * Войдите в систему под учет…»
 
Нет описания правки
Строка 11: Строка 11:


1. Обновите список пакетов:
1. Обновите список пакетов:
<code>
<code>sudo apt update</code>
sudo apt update
</code>


2. Установите Git:
2. Установите Git:
<code>
<code>sudo apt install git</code>
sudo apt install git
</code>


3. Установите дополнительные компоненты:
3. Установите дополнительные компоненты:
<code>
<code>sudo apt install git-core gitweb git-daemon-run</code>
sudo apt install git-core gitweb git-daemon-run
</code>


=== Проверка установки ===
=== Проверка установки ===


1. Проверьте версию Git:
1. Проверьте версию Git:
<code>
<code>git --version</code>
git --version
</code>


2. Проверьте конфигурацию:
2. Проверьте конфигурацию:
<code>
<code>git config --list</code>
git config --list
</code>


== 3. Настройка Git сервера ===
== 3. Настройка Git сервера ===
Строка 42: Строка 32:


1. Создайте пользователя для Git:
1. Создайте пользователя для Git:
<code>
<code>sudo useradd -m -s /bin/bash git</code>
sudo useradd -m -s /bin/bash git
</code>


2. Установите пароль:
2. Установите пароль:
<code>
<code>sudo passwd git</code>
sudo passwd git
</code>


3. Создайте директорию для репозиториев:
3. Создайте директорию для репозиториев:
<code>
<code>sudo mkdir -p /home/git/repositories
sudo mkdir -p /home/git/repositories
sudo chown git:git /home/git/repositories
sudo chown git:git /home/git/repositories
sudo chmod 755 /home/git/repositories
sudo chmod 755 /home/git/repositories</code>
</code>


=== Настройка SSH ключей ===
=== Настройка SSH ключей ===


1. Переключитесь на пользователя git:
1. Переключитесь на пользователя git:
<code>
<code>sudo su - git</code>
sudo su - git
</code>


2. Создайте директорию для SSH ключей:
2. Создайте директорию для SSH ключей:
<code>
<code>mkdir -p ~/.ssh
mkdir -p ~/.ssh
chmod 700 ~/.ssh</code>
chmod 700 ~/.ssh
</code>


3. Создайте файл authorized_keys:
3. Создайте файл authorized_keys:
<code>
<code>touch ~/.ssh/authorized_keys
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys</code>
chmod 600 ~/.ssh/authorized_keys
</code>


== 4. Создание репозиториев ===
== 4. Создание репозиториев ===
Строка 82: Строка 60:


1. Создайте голый репозиторий:
1. Создайте голый репозиторий:
<code>
<code>cd /home/git/repositories
cd /home/git/repositories
git init --bare my-project.git</code>
git init --bare my-project.git
</code>


2. Установите права доступа:
2. Установите права доступа:
<code>
<code>sudo chown -R git:git my-project.git
sudo chown -R git:git my-project.git
sudo chmod -R 755 my-project.git</code>
sudo chmod -R 755 my-project.git
</code>


=== Создание репозитория с GitWeb ===
=== Создание репозитория с GitWeb ===


1. Создайте репозиторий для GitWeb:
1. Создайте репозиторий для GitWeb:
<code>
<code>cd /home/git/repositories
cd /home/git/repositories
git init --bare --shared=group my-project-web.git</code>
git init --bare --shared=group my-project-web.git
</code>


2. Настройте описание репозитория:
2. Настройте описание репозитория:
<code>
<code>echo "My Project Repository" > my-project-web.git/description</code>
echo "My Project Repository" > my-project-web.git/description
</code>


3. Включите GitWeb:
3. Включите GitWeb:
<code>
<code>echo "gitweb" > my-project-web.git/gitweb</code>
echo "gitweb" > my-project-web.git/gitweb
</code>


== 5. Настройка GitWeb ===
== 5. Настройка GitWeb ===
Строка 116: Строка 84:


1. Установите GitWeb:
1. Установите GitWeb:
<code>
<code>sudo apt install gitweb</code>
sudo apt install gitweb
</code>


2. Отредактируйте конфигурацию GitWeb:
2. Отредактируйте конфигурацию GitWeb:
<code>
<code>sudo nano /etc/gitweb.conf</code>
sudo nano /etc/gitweb.conf
</code>


3. Настройте основные параметры:
3. Настройте основные параметры:
<code>
<code># Основные настройки
# Основные настройки
$projectroot = "/home/git/repositories";
$projectroot = "/home/git/repositories";
$git_temp = "/tmp";
$git_temp = "/tmp";
Строка 140: Строка 103:
# Настройки безопасности
# Настройки безопасности
$export_ok = "git-daemon-export-ok";
$export_ok = "git-daemon-export-ok";
$strict_export = 1;
$strict_export = 1;</code>
</code>


=== Настройка веб-сервера для GitWeb ===
=== Настройка веб-сервера для GitWeb ===


1. Создайте конфигурацию для Apache:
1. Создайте конфигурацию для Apache:
<code>
<code>sudo nano /etc/apache2/sites-available/gitweb.conf</code>
sudo nano /etc/apache2/sites-available/gitweb.conf
</code>


2. Добавьте конфигурацию:
2. Добавьте конфигурацию:
<code>
<code><VirtualHost *:80>
<VirtualHost *:80>
     ServerName git.example.com
     ServerName git.example.com
     DocumentRoot /usr/share/gitweb
     DocumentRoot /usr/share/gitweb
Строка 170: Строка 129:
         Require all granted
         Require all granted
     </Directory>
     </Directory>
</VirtualHost>
</VirtualHost></code>
</code>


3. Включите сайт:
3. Включите сайт:
<code>
<code>sudo a2ensite gitweb
sudo a2ensite gitweb
sudo systemctl restart apache2</code>
sudo systemctl restart apache2
</code>


== 6. Настройка Git Daemon ===
== 6. Настройка Git Daemon ===
Строка 184: Строка 140:


1. Отредактируйте конфигурацию Git Daemon:
1. Отредактируйте конфигурацию Git Daemon:
<code>
<code>sudo nano /etc/default/git-daemon</code>
sudo nano /etc/default/git-daemon
</code>


2. Настройте параметры:
2. Настройте параметры:
<code>
<code>GIT_DAEMON_ENABLE=1
GIT_DAEMON_ENABLE=1
GIT_DAEMON_USER=git
GIT_DAEMON_USER=git
GIT_DAEMON_BASE_PATH=/home/git/repositories
GIT_DAEMON_BASE_PATH=/home/git/repositories
GIT_DAEMON_OPTIONS="--export-all --reuseaddr --verbose --base-path=/home/git/repositories"
GIT_DAEMON_OPTIONS="--export-all --reuseaddr --verbose --base-path=/home/git/repositories"</code>
</code>


3. Запустите Git Daemon:
3. Запустите Git Daemon:
<code>
<code>sudo systemctl start git-daemon
sudo systemctl start git-daemon
sudo systemctl enable git-daemon</code>
sudo systemctl enable git-daemon
</code>


=== Настройка репозиториев для Git Daemon ===
=== Настройка репозиториев для Git Daemon ===


1. Создайте файл для экспорта репозитория:
1. Создайте файл для экспорта репозитория:
<code>
<code>touch /home/git/repositories/my-project.git/git-daemon-export-ok</code>
touch /home/git/repositories/my-project.git/git-daemon-export-ok
</code>


2. Установите права доступа:
2. Установите права доступа:
<code>
<code>sudo chown git:git /home/git/repositories/my-project.git/git-daemon-export-ok</code>
sudo chown git:git /home/git/repositories/my-project.git/git-daemon-export-ok
</code>


== 7. Настройка SSH доступа ===
== 7. Настройка SSH доступа ===
Строка 219: Строка 165:


1. Отредактируйте SSH конфигурацию:
1. Отредактируйте SSH конфигурацию:
<code>
<code>sudo nano /etc/ssh/sshd_config</code>
sudo nano /etc/ssh/sshd_config
</code>


2. Добавьте настройки для Git:
2. Добавьте настройки для Git:
<code>
<code># Настройки для Git
# Настройки для Git
Match User git
Match User git
     AllowUsers git
     AllowUsers git
     ForceCommand git-shell
     ForceCommand git-shell
     X11Forwarding no
     X11Forwarding no
     AllowTcpForwarding no
     AllowTcpForwarding no</code>
</code>


3. Перезапустите SSH:
3. Перезапустите SSH:
<code>
<code>sudo systemctl restart ssh</code>
sudo systemctl restart ssh
</code>


=== Настройка Git Shell ===
=== Настройка Git Shell ===


1. Создайте директорию для Git Shell:
1. Создайте директорию для Git Shell:
<code>
<code>sudo mkdir -p /home/git/git-shell-commands
sudo mkdir -p /home/git/git-shell-commands
sudo chown git:git /home/git/git-shell-commands</code>
sudo chown git:git /home/git/git-shell-commands
</code>


2. Создайте скрипт для отображения репозиториев:
2. Создайте скрипт для отображения репозиториев:
<code>
<code>sudo nano /home/git/git-shell-commands/list-repos</code>
sudo nano /home/git/git-shell-commands/list-repos
</code>


3. Добавьте содержимое:
3. Добавьте содержимое:
<code>
<code>#!/bin/bash
#!/bin/bash
echo "Available repositories:"
echo "Available repositories:"
ls -la /home/git/repositories/
ls -la /home/git/repositories/</code>
</code>


4. Сделайте скрипт исполняемым:
4. Сделайте скрипт исполняемым:
<code>
<code>sudo chmod +x /home/git/git-shell-commands/list-repos
sudo chmod +x /home/git/git-shell-commands/list-repos
sudo chown git:git /home/git/git-shell-commands/list-repos</code>
sudo chown git:git /home/git/git-shell-commands/list-repos
</code>


== 8. Настройка файрвола ===
== 8. Настройка файрвола ===
Строка 269: Строка 201:


1. Разрешите SSH трафик:
1. Разрешите SSH трафик:
<code>
<code>sudo ufw allow ssh</code>
sudo ufw allow ssh
</code>


2. Разрешите HTTP трафик для GitWeb:
2. Разрешите HTTP трафик для GitWeb:
<code>
<code>sudo ufw allow 80/tcp</code>
sudo ufw allow 80/tcp
</code>


3. Разрешите Git Daemon порт:
3. Разрешите Git Daemon порт:
<code>
<code>sudo ufw allow 9418/tcp</code>
sudo ufw allow 9418/tcp
</code>


4. Проверьте статус:
4. Проверьте статус:
<code>
<code>sudo ufw status</code>
sudo ufw status
</code>


=== Настройка iptables ===
=== Настройка iptables ===


1. Разрешите необходимые порты:
1. Разрешите необходимые порты:
<code>
<code>sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9418 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9418 -j ACCEPT</code>
</code>


2. Сохраните правила:
2. Сохраните правила:
<code>
<code>sudo iptables-save > /etc/iptables/rules.v4</code>
sudo iptables-save > /etc/iptables/rules.v4
</code>


== 9. Управление репозиториями ===
== 9. Управление репозиториями ===
Строка 307: Строка 227:


1. Создайте новый репозиторий:
1. Создайте новый репозиторий:
<code>
<code>cd /home/git/repositories
cd /home/git/repositories
sudo -u git git init --bare new-project.git</code>
sudo -u git git init --bare new-project.git
</code>


2. Установите права доступа:
2. Установите права доступа:
<code>
<code>sudo chown -R git:git new-project.git
sudo chown -R git:git new-project.git
sudo chmod -R 755 new-project.git</code>
sudo chmod -R 755 new-project.git
</code>


3. Настройте описание:
3. Настройте описание:
<code>
<code>echo "New Project Repository" | sudo tee new-project.git/description</code>
echo "New Project Repository" | sudo tee new-project.git/description
</code>


=== Управление доступом ===
=== Управление доступом ===


1. Добавьте SSH ключ пользователя:
1. Добавьте SSH ключ пользователя:
<code>
<code>sudo -u git bash -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC...' >> /home/git/.ssh/authorized_keys"</code>
sudo -u git bash -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC...' >> /home/git/.ssh/authorized_keys"
</code>


2. Удалите SSH ключ:
2. Удалите SSH ключ:
<code>
<code>sudo -u git bash -c "sed -i '/ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC.../d' /home/git/.ssh/authorized_keys"</code>
sudo -u git bash -c "sed -i '/ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC.../d' /home/git/.ssh/authorized_keys"
</code>


=== Управление репозиториями ===
=== Управление репозиториями ===


1. Просмотрите список репозиториев:
1. Просмотрите список репозиториев:
<code>
<code>ls -la /home/git/repositories/</code>
ls -la /home/git/repositories/
</code>


2. Удалите репозиторий:
2. Удалите репозиторий:
<code>
<code>sudo rm -rf /home/git/repositories/old-project.git</code>
sudo rm -rf /home/git/repositories/old-project.git
</code>


3. Переименуйте репозиторий:
3. Переименуйте репозиторий:
<code>
<code>sudo mv /home/git/repositories/old-name.git /home/git/repositories/new-name.git</code>
sudo mv /home/git/repositories/old-name.git /home/git/repositories/new-name.git
</code>


== 10. Мониторинг и логирование ===
== 10. Мониторинг и логирование ===
Строка 357: Строка 261:


1. Создайте скрипт логирования Git операций:
1. Создайте скрипт логирования Git операций:
<code>
<code>sudo nano /home/git/git-shell-commands/log-activity</code>
sudo nano /home/git/git-shell-commands/log-activity
</code>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>
<code>#!/bin/bash
#!/bin/bash
echo "$(date): $SSH_ORIGINAL_COMMAND" >> /home/git/git-activity.log</code>
echo "$(date): $SSH_ORIGINAL_COMMAND" >> /home/git/git-activity.log
</code>


3. Сделайте скрипт исполняемым:
3. Сделайте скрипт исполняемым:
<code>
<code>sudo chmod +x /home/git/git-shell-commands/log-activity
sudo chmod +x /home/git/git-shell-commands/log-activity
sudo chown git:git /home/git/git-shell-commands/log-activity</code>
sudo chown git:git /home/git/git-shell-commands/log-activity
</code>


=== Просмотр логов ===
=== Просмотр логов ===


1. Просмотрите логи SSH:
1. Просмотрите логи SSH:
<code>
<code>sudo tail -f /var/log/auth.log | grep git</code>
sudo tail -f /var/log/auth.log | grep git
</code>


2. Просмотрите логи Git активности:
2. Просмотрите логи Git активности:
<code>
<code>sudo tail -f /home/git/git-activity.log</code>
sudo tail -f /home/git/git-activity.log
</code>


3. Просмотрите логи Apache для GitWeb:
3. Просмотрите логи Apache для GitWeb:
<code>
<code>sudo tail -f /var/log/apache2/access.log | grep gitweb</code>
sudo tail -f /var/log/apache2/access.log | grep gitweb
</code>


=== Создание скрипта мониторинга ===
=== Создание скрипта мониторинга ===


1. Создайте скрипт мониторинга:
1. Создайте скрипт мониторинга:
<code>
<code>sudo nano /usr/local/bin/git-monitor.sh</code>
sudo nano /usr/local/bin/git-monitor.sh
</code>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>
<code>#!/bin/bash
#!/bin/bash


# Проверка статуса Git сервисов
# Проверка статуса Git сервисов
Строка 426: Строка 315:
# Проверка использования диска
# Проверка использования диска
DISK_USAGE=$(du -sh /home/git/repositories/ | cut -f1)
DISK_USAGE=$(du -sh /home/git/repositories/ | cut -f1)
echo "Repository disk usage: $DISK_USAGE"
echo "Repository disk usage: $DISK_USAGE"</code>
</code>


3. Сделайте скрипт исполняемым:
3. Сделайте скрипт исполняемым:
<code>
<code>sudo chmod +x /usr/local/bin/git-monitor.sh</code>
sudo chmod +x /usr/local/bin/git-monitor.sh
</code>


== 11. Устранение неполадок ===
== 11. Устранение неполадок ===
Строка 456: Строка 342:


1. Проверьте статус служб:
1. Проверьте статус служб:
<code>
<code>sudo systemctl status ssh
sudo systemctl status ssh
sudo systemctl status git-daemon
sudo systemctl status git-daemon
sudo systemctl status apache2
sudo systemctl status apache2</code>
</code>


2. Проверьте подключения:
2. Проверьте подключения:
<code>
<code>sudo netstat -tlnp | grep -E ':(22|80|9418)'</code>
sudo netstat -tlnp | grep -E ':(22|80|9418)'
</code>


3. Проверьте SSH подключение:
3. Проверьте SSH подключение:
<code>
<code>ssh -T git@localhost</code>
ssh -T git@localhost
</code>


4. Проверьте права доступа:
4. Проверьте права доступа:
<code>
<code>ls -la /home/git/
ls -la /home/git/
ls -la /home/git/repositories/</code>
ls -la /home/git/repositories/
</code>


== 12. Дополнительные настройки ===
== 12. Дополнительные настройки ===
Строка 483: Строка 361:


1. Создайте хук для уведомлений:
1. Создайте хук для уведомлений:
<code>
<code>sudo nano /home/git/repositories/my-project.git/hooks/post-receive</code>
sudo nano /home/git/repositories/my-project.git/hooks/post-receive
</code>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>
<code>#!/bin/bash
#!/bin/bash
echo "Repository updated: $(date)" | mail -s "Git Update" admin@example.com</code>
echo "Repository updated: $(date)" | mail -s "Git Update" admin@example.com
</code>


3. Сделайте хук исполняемым:
3. Сделайте хук исполняемым:
<code>
<code>sudo chmod +x /home/git/repositories/my-project.git/hooks/post-receive
sudo chmod +x /home/git/repositories/my-project.git/hooks/post-receive
sudo chown git:git /home/git/repositories/my-project.git/hooks/post-receive</code>
sudo chown git:git /home/git/repositories/my-project.git/hooks/post-receive
</code>


=== Настройка резервного копирования ===
=== Настройка резервного копирования ===


1. Создайте скрипт резервного копирования:
1. Создайте скрипт резервного копирования:
<code>
<code>sudo nano /usr/local/bin/git-backup.sh</code>
sudo nano /usr/local/bin/git-backup.sh
</code>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>
<code>#!/bin/bash
#!/bin/bash


BACKUP_DIR="/backup/git"
BACKUP_DIR="/backup/git"
Строка 523: Строка 392:
find $BACKUP_DIR -name "git_repos_*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "git_repos_*.tar.gz" -mtime +7 -delete


echo "Git backup completed: git_repos_$DATE.tar.gz"
echo "Git backup completed: git_repos_$DATE.tar.gz"</code>
</code>


3. Сделайте скрипт исполняемым:
3. Сделайте скрипт исполняемым:
<code>
<code>sudo chmod +x /usr/local/bin/git-backup.sh</code>
sudo chmod +x /usr/local/bin/git-backup.sh
</code>


4. Добавьте в crontab:
4. Добавьте в crontab:
<code>
<code># Ежедневный бэкап в 2:00
# Ежедневный бэкап в 2:00
0 2 * * * /usr/local/bin/git-backup.sh</code>
0 2 * * * /usr/local/bin/git-backup.sh
</code>


== Заключение ==
== Заключение ==

Версия от 19:55, 14 октября 2025

Установка и настройка Git сервера

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.

2. Установка Git =

Установка пакета

1. Обновите список пакетов: sudo apt update

2. Установите Git: sudo apt install git

3. Установите дополнительные компоненты: sudo apt install git-core gitweb git-daemon-run

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

1. Проверьте версию Git: git --version

2. Проверьте конфигурацию: git config --list

3. Настройка Git сервера =

Создание пользователя для Git

1. Создайте пользователя для Git: sudo useradd -m -s /bin/bash git

2. Установите пароль: sudo passwd git

3. Создайте директорию для репозиториев: sudo mkdir -p /home/git/repositories sudo chown git:git /home/git/repositories sudo chmod 755 /home/git/repositories

Настройка SSH ключей

1. Переключитесь на пользователя git: sudo su - git

2. Создайте директорию для SSH ключей: mkdir -p ~/.ssh chmod 700 ~/.ssh

3. Создайте файл authorized_keys: touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys

4. Создание репозиториев =

Создание голого репозитория

1. Создайте голый репозиторий: cd /home/git/repositories git init --bare my-project.git

2. Установите права доступа: sudo chown -R git:git my-project.git sudo chmod -R 755 my-project.git

Создание репозитория с GitWeb

1. Создайте репозиторий для GitWeb: cd /home/git/repositories git init --bare --shared=group my-project-web.git

2. Настройте описание репозитория: echo "My Project Repository" > my-project-web.git/description

3. Включите GitWeb: echo "gitweb" > my-project-web.git/gitweb

5. Настройка GitWeb =

Установка и настройка GitWeb

1. Установите GitWeb: sudo apt install gitweb

2. Отредактируйте конфигурацию GitWeb: sudo nano /etc/gitweb.conf

3. Настройте основные параметры: # Основные настройки $projectroot = "/home/git/repositories"; $git_temp = "/tmp"; $projects_list = $projectroot;

  1. Настройки отображения

$site_name = "Git Server"; $site_html_head_string = "<link rel='stylesheet' type='text/css' href='/gitweb.css'/>"; $site_header = "/gitweb-header.html"; $site_footer = "/gitweb-footer.html";

  1. Настройки безопасности

$export_ok = "git-daemon-export-ok"; $strict_export = 1;

Настройка веб-сервера для GitWeb

1. Создайте конфигурацию для Apache: sudo nano /etc/apache2/sites-available/gitweb.conf

2. Добавьте конфигурацию: <VirtualHost *:80>

   ServerName git.example.com
   DocumentRoot /usr/share/gitweb
   
   Alias /gitweb /usr/share/gitweb
   <Directory /usr/share/gitweb>
       Options +ExecCGI
       AddHandler cgi-script .cgi
       DirectoryIndex gitweb.cgi
       Require all granted
   </Directory>
   
   ScriptAlias /gitweb.cgi /usr/share/gitweb/gitweb.cgi
   <Directory /usr/share/gitweb>
       Options +ExecCGI
       AddHandler cgi-script .cgi
       Require all granted
   </Directory>

</VirtualHost>

3. Включите сайт: sudo a2ensite gitweb sudo systemctl restart apache2

6. Настройка Git Daemon =

Настройка Git Daemon

1. Отредактируйте конфигурацию Git Daemon: sudo nano /etc/default/git-daemon

2. Настройте параметры: GIT_DAEMON_ENABLE=1 GIT_DAEMON_USER=git GIT_DAEMON_BASE_PATH=/home/git/repositories GIT_DAEMON_OPTIONS="--export-all --reuseaddr --verbose --base-path=/home/git/repositories"

3. Запустите Git Daemon: sudo systemctl start git-daemon sudo systemctl enable git-daemon

Настройка репозиториев для Git Daemon

1. Создайте файл для экспорта репозитория: touch /home/git/repositories/my-project.git/git-daemon-export-ok

2. Установите права доступа: sudo chown git:git /home/git/repositories/my-project.git/git-daemon-export-ok

7. Настройка SSH доступа =

Настройка SSH для Git

1. Отредактируйте SSH конфигурацию: sudo nano /etc/ssh/sshd_config

2. Добавьте настройки для Git: # Настройки для Git Match User git

   AllowUsers git
   ForceCommand git-shell
   X11Forwarding no
   AllowTcpForwarding no

3. Перезапустите SSH: sudo systemctl restart ssh

Настройка Git Shell

1. Создайте директорию для Git Shell: sudo mkdir -p /home/git/git-shell-commands sudo chown git:git /home/git/git-shell-commands

2. Создайте скрипт для отображения репозиториев: sudo nano /home/git/git-shell-commands/list-repos

3. Добавьте содержимое: #!/bin/bash echo "Available repositories:" ls -la /home/git/repositories/

4. Сделайте скрипт исполняемым: sudo chmod +x /home/git/git-shell-commands/list-repos sudo chown git:git /home/git/git-shell-commands/list-repos

8. Настройка файрвола =

Настройка UFW

1. Разрешите SSH трафик: sudo ufw allow ssh

2. Разрешите HTTP трафик для GitWeb: sudo ufw allow 80/tcp

3. Разрешите Git Daemon порт: sudo ufw allow 9418/tcp

4. Проверьте статус: sudo ufw status

Настройка iptables

1. Разрешите необходимые порты: sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 9418 -j ACCEPT

2. Сохраните правила: sudo iptables-save > /etc/iptables/rules.v4

9. Управление репозиториями =

Создание репозитория

1. Создайте новый репозиторий: cd /home/git/repositories sudo -u git git init --bare new-project.git

2. Установите права доступа: sudo chown -R git:git new-project.git sudo chmod -R 755 new-project.git

3. Настройте описание: echo "New Project Repository" | sudo tee new-project.git/description

Управление доступом

1. Добавьте SSH ключ пользователя: sudo -u git bash -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC...' >> /home/git/.ssh/authorized_keys"

2. Удалите SSH ключ: sudo -u git bash -c "sed -i '/ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC.../d' /home/git/.ssh/authorized_keys"

Управление репозиториями

1. Просмотрите список репозиториев: ls -la /home/git/repositories/

2. Удалите репозиторий: sudo rm -rf /home/git/repositories/old-project.git

3. Переименуйте репозиторий: sudo mv /home/git/repositories/old-name.git /home/git/repositories/new-name.git

10. Мониторинг и логирование =

Настройка логирования

1. Создайте скрипт логирования Git операций: sudo nano /home/git/git-shell-commands/log-activity

2. Добавьте содержимое: #!/bin/bash echo "$(date): $SSH_ORIGINAL_COMMAND" >> /home/git/git-activity.log

3. Сделайте скрипт исполняемым: sudo chmod +x /home/git/git-shell-commands/log-activity sudo chown git:git /home/git/git-shell-commands/log-activity

Просмотр логов

1. Просмотрите логи SSH: sudo tail -f /var/log/auth.log | grep git

2. Просмотрите логи Git активности: sudo tail -f /home/git/git-activity.log

3. Просмотрите логи Apache для GitWeb: sudo tail -f /var/log/apache2/access.log | grep gitweb

Создание скрипта мониторинга

1. Создайте скрипт мониторинга: sudo nano /usr/local/bin/git-monitor.sh

2. Добавьте содержимое: #!/bin/bash

  1. Проверка статуса Git сервисов

if systemctl is-active --quiet ssh; then

   echo "SSH is running"

else

   echo "SSH is not running"

fi

if systemctl is-active --quiet git-daemon; then

   echo "Git Daemon is running"

else

   echo "Git Daemon is not running"

fi

if systemctl is-active --quiet apache2; then

   echo "Apache is running"

else

   echo "Apache is not running"

fi

  1. Проверка репозиториев

REPO_COUNT=$(ls -1 /home/git/repositories/ | wc -l) echo "Number of repositories: $REPO_COUNT"

  1. Проверка использования диска

DISK_USAGE=$(du -sh /home/git/repositories/ | cut -f1) echo "Repository disk usage: $DISK_USAGE"

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/git-monitor.sh

11. Устранение неполадок =

Частые проблемы

1. Не могу клонировать репозиторий:

  • Проверьте SSH ключи: ssh -T git@server
  • Проверьте права доступа: ls -la /home/git/repositories/
  • Проверьте SSH конфигурацию

2. GitWeb не работает:

  • Проверьте Apache: sudo systemctl status apache2
  • Проверьте конфигурацию GitWeb: sudo nano /etc/gitweb.conf
  • Проверьте права доступа к репозиториям

3. Git Daemon не работает:

  • Проверьте статус: sudo systemctl status git-daemon
  • Проверьте конфигурацию: sudo nano /etc/default/git-daemon
  • Проверьте файрвол: sudo ufw status

Диагностика

1. Проверьте статус служб: sudo systemctl status ssh sudo systemctl status git-daemon sudo systemctl status apache2

2. Проверьте подключения: sudo netstat -tlnp | grep -E ':(22|80|9418)'

3. Проверьте SSH подключение: ssh -T git@localhost

4. Проверьте права доступа: ls -la /home/git/ ls -la /home/git/repositories/

12. Дополнительные настройки =

Настройка хуков

1. Создайте хук для уведомлений: sudo nano /home/git/repositories/my-project.git/hooks/post-receive

2. Добавьте содержимое: #!/bin/bash echo "Repository updated: $(date)" | mail -s "Git Update" admin@example.com

3. Сделайте хук исполняемым: sudo chmod +x /home/git/repositories/my-project.git/hooks/post-receive sudo chown git:git /home/git/repositories/my-project.git/hooks/post-receive

Настройка резервного копирования

1. Создайте скрипт резервного копирования: sudo nano /usr/local/bin/git-backup.sh

2. Добавьте содержимое: #!/bin/bash

BACKUP_DIR="/backup/git" REPO_DIR="/home/git/repositories" DATE=$(date +%Y%m%d_%H%M%S)

  1. Создание директории для бэкапа

mkdir -p $BACKUP_DIR

  1. Резервное копирование репозиториев

tar -czf $BACKUP_DIR/git_repos_$DATE.tar.gz -C $REPO_DIR .

  1. Удаление старых бэкапов (старше 7 дней)

find $BACKUP_DIR -name "git_repos_*.tar.gz" -mtime +7 -delete

echo "Git backup completed: git_repos_$DATE.tar.gz"

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/git-backup.sh

4. Добавьте в crontab: # Ежедневный бэкап в 2:00 0 2 * * * /usr/local/bin/git-backup.sh

Заключение

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

Для размещения ваших Git серверов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой Git сервера и обеспечением безопасности ваших репозиториев!