Gitea - это альтернативная система управления версиями с открытым исходным кодом, работающая на git. Gitea написана на Golang и является легким решением для любой платформы.
Предпосылки
- Новый экземпляр Vultr Ubuntu 18.04 с как минимум 2 ядрами процессора и 1 ГБ ОЗУ
- Пользователь без полномочий root с привилегиями sudo.
- Nginx
- Гит
- MariaDB
Шаг 1: Установите Nginx
Обновите свой экземпляр Vultr Ubuntu 18.04 Server.
sudo apt update
Установите Nginx.
sudo apt -y install nginx
После установки Nginx проверьте, работает ли он или нет, просмотрев тестовую страницу nginx в браузере. Откройте веб-браузер и укажите егоhttp://example.com
Следующие команды могут использоваться для остановки, перезагрузки, перезапуска, проверки состояния и включения Nginx.
sudo systemctl stop nginx.service
sudo systemctl start nginx.service
sudo systemctl restart nginx.service
sudo systemctl reload nginx.service
sudo systemctl enable nginx.service
Шаг 2: Установите Git
Установите Git.
sudo apt -y install git
После установки проверьте версию:
git --version
git version 2.17.1
Шаг 3: Установите сервер базы данных MariaDB
Gitea поддерживает следующие базы данных
- MariaDB / MySQL
- PostgreSQL
- SQLite
- TiDB
Для этого урока мы установим сервер и клиент MariaDB.
sudo apt -y install mariadb-server mariadb-client
После установки MariaDB приведенные ниже команды можно использовать для остановки, запуска, перезапуска, проверки состояния и включения.
sudo systemctl stop mariadb.service
sudo systemctl start mariadb.service
sudo systemctl restart mariadb.service
sudo systemctl status mariadb.service
sudo systemctl enable mariadb.service
После этого выполните приведенную ниже команду, чтобы защитить сервер MariaDB, создав пароль root и запретив удаленный доступ root.
sudo mysql_secure_installation
Когда будет предложено, ответьте на вопросы ниже, следуя руководству.
Enter current password for root (enter for none): Just press the Enter
Set root password? [Y/n]: Y
New password: Enter password
Re-enter new password: Repeat password
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.
sudo systemctl restart mariadb.service
Чтобы проверить, установлена ли MariaDB, введите команду ниже для входа на сервер MariaDB
sudo mysql -u root -p
Затем введите пароль, который вы создали выше, чтобы войти. Вы увидите приветственное сообщение MariaDB.
Создайте базу данных с именем gitea
.
CREATE DATABASE gitea;
Создайте базу данных пользователя giteauser
с новым паролем.
CREATE USER 'giteauser'@'localhost' IDENTIFIED BY 'new_password_here';
Затем предоставьте пользователю полный доступ к базе данных.
GRANT ALL ON gitea.* TO 'giteauser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION;
Наконец, сохраните изменения и выйдите.
FLUSH PRIVILEGES;
EXIT;
Шаг 4: Подготовьте среду Gitea
Создайте пользователя для запуска Gitea.
sudo adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
Создайте необходимую структуру каталогов.
sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown git:git /var/lib/gitea/{data,indexers,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea
Шаг 5: Установите Gitea
Двоичный файл Gitea можно загрузить, выполнив следующие команды.
sudo wget -O gitea https://dl.gitea.io/gitea/1.5.0/gitea-1.5.0-linux-amd64
sudo chmod +x gitea
Скопируйте двоичный файл в глобальное местоположение.
sudo cp gitea /usr/local/bin/gitea
Шаг 6: Создайте служебный файл для автоматического запуска Gitea
Создайте файл службы linux.
sudo nano /etc/systemd/system/gitea.service
Заполните файл следующим.
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
#After=mysqld.service
#After=postgresql.service
#After=memcached.service
#After=redis.service
[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#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=/home/git GITEA_WORK_DIR=/var/lib/gitea
# If you want to bind Gitea to a port below 1024 uncomment
# the two values below
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
Включите и запустите Gitea при загрузке.
sudo systemctl daemon-reload
sudo systemctl enable gitea
sudo systemctl start gitea
Запустите команду статуса.
sudo systemctl status gitea
● gitea.service - Gitea (Git with a cup of tea)
Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: en
Active: active (running) since Wed 2018-10-10 14:15:28 CDT; 19ms ago
Main PID: 17769 (gitea)
Tasks: 4 (limit: 2321)
CGroup: /system.slice/gitea.service
├─17769 /usr/local/bin/gitea web -c /etc/gitea/app.ini
└─17774 /usr/local/bin/gitea web -c /etc/gitea/app.ini
Удалите файл конфигурации nginx по умолчанию.
sudo rm /etc/nginx/sites-enabled/default
Создайте конфигурацию обратного прокси для Gitea.
sudo nano /etc/nginx/sites-available/git
Заполните файл следующей конфигурацией.
upstream gitea {
server 127.0.0.1:3000;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com;
root /var/lib/gitea/public;
access_log off;
error_log off;
location / {
try_files maintain.html $uri $uri/index.html @node;
}
location @node {
client_max_body_size 0;
proxy_pass http://localhost:3000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
proxy_redirect off;
proxy_read_timeout 120;
}
}
Включите конфигурацию обратного прокси-сервера Gitea Nginx.
sudo ln -s /etc/nginx/sites-available/git /etc/nginx/sites-enabled
Затем перезагрузите Сервис Nginx.
sudo systemctl reload nginx.service
Затем откройте браузер и перейдите к имени хоста или IP-адресу сервера.
http://example.com/install
Следуйте инструкциям на экране для завершения настройки Gitea.