Гид по технологиям

Как запустить собственный Git-сервер с GitLab на Debian 7 (Wheezy)

• 5 min read • DevOps • Обновлено 23 Nov 2025
GitLab на Debian 7 — собственный Git-сервер
GitLab на Debian 7 — собственный Git-сервер

Краткий план

  • Подготовка сервера и системные требования
  • Установка Ruby 2.x, Python 2.7 и Bundler
  • Установка GitLab Shell и GitLab
  • Настройка базы данных (MySQL/MariaDB)
  • Финальная конфигурация, проверка и запуск

Введение

Этот документ описывает, как установить Git и GitLab (ранее GitHub-подобный интерфейс) на собственном сервере Debian 7. Self-hosted GitLab предоставляет веб-интерфейс к репозиториям, контроль доступа и гибкость, необходимую при работе с закрытым кодом.

Важно: это руководство ориентировано на Debian 7 (Wheezy). На других дистрибутивах или более новых версиях пакеты и шаги могут отличаться. Автор не гарантирует успешность в вашей среде; используйте это как практическое руководство и адаптируйте под свои требования.

Требования перед началом

  • Debian 7 установлен и обновлён.
  • Статический IP адрес и корректное DNS-имя (в примерах: 192.168.0.100 и server1.example.com).
  • Наличие прав root или sudo для установки пакетов.
  • Установленные Ruby 2.x и Python 2.7 (Ruby 2.0+ обязательно).
  • Рекомендуется резервная копия любого существующего сервера перед изменениями.

Важно: на серверах с уже установленными системными Ruby/Python версии могут конфликтовать. При необходимости используйте rbenv/rvm или контейнеры для изоляции.

1 Предварительная информация

Перед выполнением шагов убедитесь, что система обновлена и имеет статический IP. Если у вас VPS с нестандартной конфигурацией, проверьте совместимость версий Python и Ruby.

2 Установка Ruby 2.x, Python 2.7 и Bundler

Обновите индекс пакетов и установите необходимые библиотеки:

apt-get update
apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git-core openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev

Проверьте версию Python:

python --version

Пример вывода:

root@server1:~# python --version
Python 2.7.3
root@server1:~#

Скачайте и соберите Ruby (пример для Ruby 2.1.2):

mkdir /tmp/ruby && cd /tmp/ruby
wget http://ftp.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz
tar zxvf ruby-2.1.2.tar.gz
cd ruby-2.1.2
./configure
make
make install

Проверьте версию Ruby:

ruby -v

Примерный вывод:

ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]

Установите Bundler:

gem install bundler --no-ri --no-rdoc

Создайте пользователя git, от имени которого будет работать GitLab:

adduser --disabled-login --gecos 'GitLab' git

3 Установка GitLab Shell

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

cd /home/git
apt-get install sudo
sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
cd gitlab-shell
sudo -u git -H git checkout v1.7.0
sudo -u git -H cp config.yml.example config.yml

Отредактируйте конфигурацию и укажите URL вашей инстанции GitLab, например server1.example.com:

vi config.yml

Внутри файла измените значение gitlab_url:

user: git

# Url to gitlab instance. Used for api calls. Should end with a slash.
#gitlab_url: "http://localhost/"
gitlab_url:     "http://server1.example.com"

Установите GitLab Shell:

sudo -u git -H ./bin/install

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

mkdir -p /home/git/repositories: true
mkdir -p /home/git/.ssh: true
chmod 700 /home/git/.ssh: true
touch /home/git/.ssh/authorized_keys: true
chmod 600 /home/git/.ssh/authorized_keys: true
chmod -R ug+rwX,o-rwx /home/git/repositories: true
find /home/git/repositories -type d -print0 | xargs -0 chmod g+s: true

4 Установка MySQL/MariaDB для GitLab

Установите сервер базы данных и клиентские библиотеки:

apt-get install mysql-server mysql-client libmysqlclient-dev

Во время установки укажите пароль для пользователя root MariaDB/MySQL. Затем войдите в консоль MySQL:

mysql -u root -p

Создайте базу данных и пользователя для GitLab (замените пароли на собственные):

CREATE DATABASE gitlabdb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON gitlabdb.* TO 'gitlabuser'@'localhost' IDENTIFIED BY 'gitlabuserpassword';
flush privileges;
quit

5 Установка GitLab (gitlabhq)

Клонируйте репозиторий GitLab и подготовьте конфигурацию:

cd /home/git
sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
cd /home/git/gitlab
sudo -u git -H git checkout 6-0-stable
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

Отредактируйте config/gitlab.yml, установив host на свой домен или IP:

sudo -u git -H vi config/gitlab.yml

Пример секции:

gitlab:
  ## Web server settings
  host: server1.example.com
  port: 80
  https: false

Установите права и создайте необходимые директории:

cd /home/git/gitlab
chown -R git log/
chown -R git tmp/
chmod -R u+rwX  log/
chmod -R u+rwX tmp/
sudo -u git -H mkdir /home/git/gitlab-satellites
sudo -u git -H mkdir tmp/pids/
sudo -u git -H mkdir tmp/sockets/
chmod -R u+rwX tmp/pids/
chmod -R u+rwX tmp/sockets/
sudo -u git -H mkdir public/uploads
chmod -R u+rwX  public/uploads
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
sudo -u git -H git config --global core.autocrlf input
sudo -u git cp config/database.yml.mysql config/database.yml

Отредактируйте config/database.yml и укажите ранее созданные параметры подключения:

sudo -u git -H vi config/database.yml

Пример секции production:

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: gitlabdb
  pool: 10
  username: gitlabuser
  password: "gitlabuserpassword"

Сделайте файл конфигурации недоступным для остальных:

sudo -u git -H chmod o-rwx config/database.yml

Установите требуемые Ruby-гемы (пример charlock_holmes):

cd /home/git/gitlab
gem install charlock_holmes --version '0.6.9.4'

Далее в примере скачивается готовый пакет Omnibus и устанавливается почтовая подсистема:

wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.1.1-omnibus-1_amd64.deb
apt-get install openssh-server
apt-get install postfix

Во время установки postfix выберите “Internet Site” и укажите system mail как server1.example.com. Можно использовать sendmail; exim в примере не рекомендуется.

Установите пакет Omnibus (пример):

dpkg -i gitlab_7.1.1-omnibus-1_amd64.deb

Отредактируйте основной конфиг Omnibus и укажите внешний URL:

vi /etc/gitlab/gitlab.rb

Пример изменения:

external_url 'http://server1.example.com'

Пересоберите конфигурацию и запустите сервисы GitLab:

gitlab-ctl reconfigure

После этого откройте в браузере страницу входа по IP или DNS, например http://192.168.0.100/users/sign_in. По умолчанию в примерах логин root и пароль 5iveL!fe — обязательно смените пароль при первом входе.

Страница входа GitLab с примером логина

Смена пароля в веб-интерфейсе GitLab

Приветственная страница проекта в GitLab

Быстрая проверка работоспособности

  • Откройте веб-интерфейс и выполните вход под root.
  • Создайте первый проект и выполните git clone/ push с рабочего ноутбука.
  • Проверьте журнал ошибок GitLab: /var/log/gitlab/.

Критерии приёмки

  • Веб-интерфейс доступен по заданному адресу.
  • Успешный логин под root и смена пароля.
  • Создание репозитория и успешный push.
  • Отсутствие ошибок в логах при старте сервисов.

Чек-листы по ролям

Администратор:

  • Установить и обновить систему.
  • Настроить DNS и статический IP.
  • Установить зависимости и создать пользователя git.
  • Настроить бэкапы базы и каталога репозиториев.

Разработчик:

  • Убедиться, что SSH-ключ добавлен в профиль.
  • Проверить клонирование и push.
  • Настроить локальные git-имя и email.

Операции/DevOps:

  • Настроить мониторинг процессов GitLab.
  • Настроить ежедневные резервные копии базы данных и папки репозиториев.
  • Обновлять GitLab после тестирования на стенде.

Руководство по откату (rollback)

  1. Остановите сервисы: gitlab-ctl stop.
  2. Восстановите базу данных из последней резервной копии.
  3. Восстановите каталог /home/git/repositories из бэкапа.
  4. Запустите сервисы: gitlab-ctl start.
  5. Проверьте логи и функциональность.

Важно: перед обновлениями всегда делайте полные бэкапы базы и репозиториев.

Когда этот подход не подходит

  • Если нужна минимальная поддержка и вы не готовы управлять сервером — предпочтительнее SaaS-решения (GitLab.com, GitHub, Bitbucket).
  • Если у вас ограничения по аппаратным ресурсам: GitLab Omnibus требует памяти и CPU; для слабых VPS лучше использовать альтернативы или контейнеры с компактной конфигурацией.

Альтернативные подходы

  • Использовать GitLab CE/EE в Docker-контейнере для изоляции и упрощённого обновления.
  • Применить Gitea или Gogs — более лёгкие self-hosted альтернативы для небольших команд.
  • Хостить приватные репозитории на GitHub/Bitbucket при отсутствии регуляторных требований.

Мини-методология развертывания

  1. Подготовка тестовой среды, выполнение всех шагов там.
  2. Полные бэкапы продовых данных.
  3. Поэтапное развёртывание в продовой среде с логированием.
  4. Тесты основной функциональности и уведомление команд.

Решающее дерево для выбора варианта развертывания

flowchart TD
  A[Нужен self-hosted?] -->|Да| B{Ограничен ли ресурсами VPS?}
  A -->|Нет| Z[Использовать SaaS]
  B -->|Да| C[Использовать Gitea/Gogs или контейнер]
  B -->|Нет| D[Развернуть GitLab Omnibus или source]
  D --> E{Нужен полный контроль и кастомизация?}
  E -->|Да| F[Собрать из исходников 'source']
  E -->|Нет| G[Установить Omnibus package]

Безопасность и бэкап

  • Настройте TLS/HTTPS через Let’s Encrypt или ваш сертификат.
  • Регулярно выполняйте резервные копии базы данных и каталога репозиториев.
  • Ограничьте доступ к административным панелям по IP, если возможно.

Примеры тестовых сценариев

  • Клонирование: git clone по SSH и по HTTPS.
  • Push большого репозитория и проверка использования диска.
  • Создание и удаление проекта с проверкой прав доступа.

Краткая сводка

  • GitLab даёт мощный веб-интерфейс и гибкость, но требует ресурсов и администрирования.
  • Для Debian 7 важно иметь Ruby 2.x и Python 2.7.
  • Всегда используйте бэкапы и проверяйте конфигурацию перед выводом в прод.

Ключевые ссылки:

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро