Установка Gogs в Ubuntu 14.04
Ubuntu, VPS | Комментировать запись
Gogs – это самодостаточный сервис Git (англ. self-hosted Git service), написанный на Go; он очень прост в установке и потребляет мало системных ресурсов. На сегодня он считается самым простым и быстрым способом создать самодостаточный сервис Git.
Выполнив это руководство, вы получите готовую к работе установку Gogs, которая включает в себя веб-интерфейс, панель инструментов администратора и доступ к общим операциям Git (например, pull и push).
Требования
Чтобы следовать руководству, понадобятся:
- Предварительно настроенный сервер Ubuntu 14.04.
- Не-рутовый пользователь с привилегиями sudo. Из соображений безопасности в данном руководстве учётная запись с доступом к sudo будет использоваться исключительно для работы Gogs. Предполагается, что имя этого пользователя – git (согласно конвенции сервиса Git). Следуйте инструкциям руководства как пользователь git.
1: Установка базы данных
Сначала нужно создать бэк-энд базу данных для Gogs.
Обновите пакеты системы:
sudo apt-get update
В качестве сервера на бэк-энде используется MySQL. Для установки MySQL используйте команду (флаг -y автоматически ответит “yes” на все вопросы программы):
sudo apt-get -y install mysql-server
Во время установки программа запросит root-пароль MySQL. Выберите надёжный пароль и запомните его – он пригодится в дальнейшем.
Теперь создайте и откройте файл по имени gogs.sql. Для этого используйте любой удобный текстовый редактор (в данном руководстве это nano).
nano gogs.sql
В этот файл внесите следующий код, а затем сохраните и закройте файл:
DROP DATABASE IF EXISTS gogs;
CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;
Затем выполните файл gogs.sql, чтобы создать базу данных Gogs. Замените your_password только что установленным root-паролем mysql.
mysql -u root -pyour_password < gogs.sql
Обратите внимание: между флагом -р и паролем нет пробела!
Для установки Gogs из исходного кода понадобятся инструменты управления версиями Git и Mercurial. ЧТобы установить эти инструменты, используйте:
sudo apt-get -y install mercurial git
Чтобы клонировать репозиторий по SSH, понадобится функционирующий SSH-сервер; к счастью, Ubuntu 14.04 поставляется с таким сервером “из коробки”.
2: Установка Go
Теперь нужно установить Go, поскольку сервис Gogs написан на этом языке.
Для начала установите некоторые переменные среды. Откройте файл ~/.bashrc для редактирования.
nano ~/.bashrc
В конец файла внесите следующие строки, а затем сохраните и закройте его:
export GOPATH=/home/git/go
export GOROOT=/usr/local/src/go
export PATH=${PATH}:$GOROOT/bin
Чтобы применить изменения, используйте:
source ~/.bashrc
Затем загрузите последнюю версию Go с сайта проекта при помощи команды wget. На момент написания руководства последней версией является go1.4.2.linux-amd64.tar.gz.
wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
Чтобы разархивировать пакет, используйте tar:
tar zxf go1.4.2.linux-amd64.tar.gz
Переместите файл в каталог $GOROOT, который был указан в файле ~/.bashrc:
sudo mv go $GOROOT
Если теперь ввести в терминал:
go
Появится примерно такой вывод:
Go is a tool for managing Go source code.
Usage:
go command [arguments]
...
Use "go help [topic]" for more information about that topic.
3: Установка Gogs
Go имеет встроенную команду get, которая позволяет быстро скачать исходный код проектов Go со всеми зависимостями; используйте эту команду для загрузки Gogs:
go get -d github.com/gogits/gogs
Исходный код Gogs помещён в $GOPATH/src/github.com/gogits/gogs; перейдите в этот каталог.
cd $GOPATH/src/github.com/gogits/gogs
Затем соберите и сгенерируйте бинарные файлы. Запуск этой команды может занять некоторое время:
go build
Для управления сервисом Gogs используйте Supervisor. Чтобы установить Supervisor:
sudo apt-get -y install supervisor
Теперь создайте демон Gogs путём создания раздела настроек Supervisor. Для начала создайте каталог для хранения лог-файлов:
sudo mkdir -p /var/log/gogs
Затем откройте конфигурационный файл Supervisor для редактирования.
sudo nano /etc/supervisor/supervisord.conf
Внесите в файл следующий код, чтобы создать раздел настроек для Gogs:
[program:gogs]
directory=/home/git/go/src/github.com/gogits/gogs/
command=/home/git/go/src/github.com/gogits/gogs/gogs web
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/gogs/stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/gogs/stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
environment = HOME="/home/git", USER="git"
Этот раздел определяет команду, которая будет использоваться для запуска Gogs, автоматически выполняет её при помощи Supervisor, а также задаёт расположение лог-файлов и соответствующих переменных окружения.
Примечание: Больше информации о настройках Supervisor можно найти в этом руководстве.
Перезапустите Supervisor.
sudo service supervisor restart
Чтобы проверить, запущен ли сервис Gogs, используйте следующую команду:
ps -ef | grep gogs
В результате на экране появится:
root 1344 1343 0 08:55 ? 00:00:00 /home/git/go/src/github.com/gogits/gogs/gogs web
Также можно проверить файл stdout.log, чтобы убедиться, что сервис запущен:
tail /var/log/gogs/stdout.log
На экране появится следующая строка:
2015/03/09 14:24:42 [I] Gogs: Go Git Service 0.5.16.0301 Beta
Кроме того, в браузере можно посетить страницу http://your_server_ip:3000/. Если все работает должным образом, на экране появится форма установки, но пока что не нужно заполнять её.
4: Nginx как обратный прокси-сервер
На данном этапе нужно настроить Nginx в качестве обратного прокси, чтобы иметь возможность привязать доменное имя к Gogs.
Чтобы установить Nginx:
sudo apt-get -y install nginx
Затем создайте конфигурационный файл Nginx для Gogs:
sudo nano /etc/nginx/sites-available/gogs
Внесите в него следующий код, заменив your_server_ip IP-адресом сервера (можно также внести сюда домен).
server {
listen 80;
server_name your_server_ip;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://localhost:3000;
}
}
Создайте символическую ссылку на этот файл, чтоб Nginx мог использовать его.
sudo ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/gogs
Примечание: Чтобы узнать о настройке виртуальных хостов Nginx больше, читайте эту статью.
В завершение перезапустите Nginx, чтобы активировать новые настройки:
sudo service nginx restart
При помощи браузера откройте страницу http://your_server_ip/, не указывая порт.
5: Инициализация Gogs
Посетите http://your_server_ip/install и задайте следующие опции (многие из них внесены автоматически, но не забудьте указать данные своего сервера в некоторых строках):
В первом разделе Gogs требует указать СУБД (MySQL, PostgreSQL или SQLite3):
- Database Type: MySQL
- Host: 127.0.0.1:3306
- User: root
- Password: your_database_password
- Database Name: gogs
В следующем разделе (General Settings of Gogs) внесите:
- Repository Root Path: /home/git/gogs-repositories
- Run User: git
- Domain: your_server_ip
- HTTP Port: 3000
- Application URL: http://your_server_ip/
Пропустите опциональные настройки электронной почты и уведомлений, а затем выберите имя и пароль администратора (раздел Admin Account Settings) и укажите свой электронный адрес.
Затем нажмите Install Gogs.
6: Тестирование установки Gogs
Теперь нужно протестировать установку Gogs при помощи простой проверки pull/push.
Откройте http://your_server_ip/repo/create и создайте репозиторий по имени my-test-repo, а затем нажмите на Initialize this repository with a README.md.
Теперь у вас есть возможность клонировать этот репозиторий. Перейдите в домашний каталог:
cd
И клонируйте репозиторий:
git clone http://your_server_ip/your_admin_username/my-test-repo.git
Откройте каталог репозитория:
cd my-test-repo
Обновите README.md.
echo 'I love Gogs!' >> README.md
Создайте сообщение о коммите и выполните команду push. Команда запросит имя пользователя и пароль Gogs.
git add --all && git commit -m "init commit" && git push origin master
Заключение
Если снова открыть http://your_server_ip/your_admin_username/my-test-repo, на экране появится фраза “I love Gogs!”, которая была внесена в README.
Tags: Cloud Server, Git, Go, Gogs, Mercurial, NGINX, supervisor, Ubuntu 14.04