Установка Gogs в Ubuntu 14.04

Published by Leave your thoughts

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: , , , , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>