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

Как установить службу Gitea Git на Debian 11


Это руководство существует для этих версий ОС

  • Debian 11 (Bullseye)
  • Debian 10 (Buster)

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

  1. Предпосылки
  2. Установка и настройка базы данных MariaDB
  3. Установить Gitea
  4. Создание служебного файла Systemd для Gitea
  5. Настройка Nginx для Gitea
  6. Доступ к веб-интерфейсу Gitea
  7. Заключение

Gitea — это бесплатный, открытый, самодостаточный и хорошо известный сервер Git, написанный на языке программирования Go. Это платформа контроля версий, похожая на Github. Он надежный, масштабируемый и предлагает множество функций, включая отслеживание проблем и времени, ветвление репозитория, блокировку файлов и теги, слияние и многие другие. Если вы ищете самостоятельный сервис Git, то, вероятно, Gitea — лучший вариант, который вы можете использовать.

В этом руководстве я покажу вам, как установить Gitea на Debian 11.

Предпосылки

  • Сервер под управлением Debian 11.
  • На сервере настроен пароль root.

Установите и настройте базу данных MariaDB

Gitea использует MariaDB/MySQL в качестве базы данных. Поэтому сервер базы данных должен быть установлен на вашем сервере. Если он не установлен, вы можете установить его, выполнив следующую команду:

apt-get install mariadb-server -y

После установки MariaDB вам нужно будет установить пароль MariaDB и защитить установку. Вы можете сделать это, запустив скрипт mysql_secure_installation:

mysql_secure_installation

Ответьте на все вопросы, как показано ниже:

Enter current password for root (enter for none): 
OK, successfully used password, moving on...
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

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

mysql -u root -p

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

MariaDB [(none)]> CREATE DATABASE gitea;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password';

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

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;

Установить Гитею

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

adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /opt/git git

Вы должны увидеть следующий вывод:

Adding system user `git' (UID 109) ...
Adding new group `git' (GID 115) ...
Adding new user `git' (UID 109) with group `git' ...
Creating home directory `/opt/git' ...

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

curl -s https://api.github.com/repos/go-gitea/gitea/releases/latest |grep browser_download_url | cut -d '"' -f 4 | grep '\linux-amd64$' | wget -i -

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

mv gitea-*-linux-amd64 /usr/local/bin/gitea

Затем установите права на выполнение для бинарного файла Gitea:

chmod +x /usr/local/bin/gitea

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

gitea --version

Вы должны увидеть следующий вывод:

Gitea version 1.15.3 built with GNU Make 4.1, go1.16.8 : bindata, sqlite, sqlite_unlock_notify

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

mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}

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

chown git:git /var/lib/gitea/{data,indexers,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
chown root:git /etc/gitea
chmod 770 /etc/gitea

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

Создайте служебный файл Systemd для Gitea

Далее вам нужно будет создать служебный файл systemd для Gitea. Вы можете создать его с помощью следующей команды:

nano /etc/systemd/system/gitea.service

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

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysql.service

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/opt/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

Сохраните и закройте файл, затем перезагрузите демон systemd с помощью следующей команды:

systemctl daemon-reload

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

systemctl start gitea
systemctl enable gitea

Чтобы проверить службу Gitea, выполните следующую команду:

systemctl status gitea

Вы должны увидеть следующий вывод:

? gitea.service - Gitea (Git with a cup of tea)
     Loaded: loaded (/etc/systemd/system/gitea.service; disabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-10-02 12:59:27 UTC; 9s ago
   Main PID: 19179 (gitea)
      Tasks: 8 (limit: 4679)
     Memory: 128.3M
        CPU: 1.415s
     CGroup: /system.slice/gitea.service
             ??19179 /usr/local/bin/gitea web -c /etc/gitea/app.ini

Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 cmd/web.go:102:runWeb() [I] Starting Gitea on PID: 19179
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/setting/setting.go:569:NewContext() [W] Custom config '/etc/gitea/app.ini' not>
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/local/bin/gitea
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /var/lib/gitea
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /var/lib/gitea/custom
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /var/lib/gitea/log
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:25:PreloadSettings() [I] Preparing to run install page
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:28:PreloadSettings() [I] SQLite3 Supported
Oct 02 12:59:29 debian11 gitea[19179]: 2021/10/02 12:59:29 cmd/web.go:196:listen() [I] Listen: http://0.0.0.0:3000
Oct 02 12:59:29 debian11 gitea[19179]: 2021/10/02 12:59:29 ...s/graceful/server.go:62:NewServer() [I] Starting new Web server: tcp:0.0.0.0:300>

В этот момент Gitea запускается и прослушивает порт 3000. Вы можете проверить это с помощью следующей команды:

ss -antpl | grep 3000

Вы должны увидеть следующий вывод:

LISTEN 0      4096               *:3000             *:*    users:(("gitea",pid=19179,fd=6))

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

Настройте Nginx для Gitea

Далее вам нужно будет установить и настроить Nginx в качестве обратного прокси для Gitea. Сначала установите Nginx с помощью следующей команды:

apt-get install nginx -y

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

nano /etc/nginx/conf.d/gitea.conf

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

server {
    listen 80;
    server_name gitea.example.com;
    access_log /var/log/nginx/gitea_access.log;
    error_log /var/log/nginx/gitea_error.log;


    location / {
        proxy_pass http://localhost:3000;
    }
}

Сохраните и закройте файл, затем проверьте 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 Sat 2021-10-02 13:00:33 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 19209 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 19211 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 19212 (nginx)
      Tasks: 3 (limit: 4679)
     Memory: 3.2M
        CPU: 50ms
     CGroup: /system.slice/nginx.service
             ??19212 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??19213 nginx: worker process
             ??19214 nginx: worker process

Oct 02 13:00:33 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Oct 02 13:00:33 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Затем вам нужно будет отредактировать файл Gitea app.ini и указать информацию о вашем домене:

nano /etc/gitea/app.ini

Измените следующие строки:

DOMAIN           = gitea.example.com
ROOT_URL         = http://gitea.example.com/

Сохраните и закройте файл, затем перезапустите службу Gitea, чтобы применить изменения:

systemctl restart gitea

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

Доступ к веб-интерфейсу Gitea

Теперь откройте веб-браузер и войдите в веб-интерфейс Gitea, используя URL-адрес http://gitea.example.com. Вы будете перенаправлены на следующую страницу:

Укажите информацию о своей базе данных Gitea, URL-адрес, имя пользователя администратора, пароль, порт и нажмите кнопку «Установить Gitea». Вы должны увидеть панель инструментов Gitea на следующей странице:

Заключение

Поздравляем! вы успешно установили Gitea с Nginx в качестве обратного прокси-сервера в Debian 11. Вы можете внедрить Gitea в свою среду разработки, чтобы отслеживать и управлять своим проектом.