Содержание

Подготовка окружения

sudo useradd rosa && sudo passwd rosa
sudo useradd git && sudo usermod -a -G rosa git && sudo usermod -a -G git rosa
%rosa ALL=(ALL) NOPASSWD: ALL
Defaults requiretty
sudo yum install -y git-core libicu-devel gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel postgresql-devel nginx postfix python-devel crontabs openssl
curl -L get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
rvm requirements

В появившемся тексте найдите секцию "Additional Dependencies". Установите все указанные в ней зависимости, например:

 For Ruby / Ruby HEAD (MRI, Rubinius, & REE), install the following:
 ruby: yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-dev

Установите зависимости, используя rvmsudo (не используйте обычный sudo!)

 rvmsudo yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel
sudo su - rosa
rvm install ruby-1.9.3-p392
rvm use ruby-1.9.3-p392 --default
rvm rubygems current
sudo su - git
rvm install ruby-1.9.3-p392
rvm use ruby-1.9.3-p392 --default
rvm rubygems current

PostgreSQL должен быть установлен и натсроен штатными средствами системы. Для подробных инструкций можно воспользоваться этой документацией

После установки, необходимо добавить следующую строку в файл .bashrc в домашних каталогах пользователей rosa и git:

PATH=/usr/pgsql-9.2/bin:$PATH


Подготовка сервера к развертыванию ABF

sudo mkdir /srv && sudo chown -R rosa:rosa /srv && mkdir -p /srv/rosa_build/shared/tmp
sudo chkconfig --levels 2345 nginx on
sudo chkconfig crond on
sudo service crond start
sudo mkdir -p /home/{rosa,git}/.ssh && sudo touch /home/{rosa,git}/.ssh/authorized_keys &&
sudo chmod 600 /home/{rosa,git}/.ssh/authorized_keys &&
sudo chown -R rosa:rosa /home/rosa && sudo chown -R git:git /home/git

Конфигурируем PostgreSQL

sudo su postgres
createuser -D -P -E -e rosa
Enter password for new role: rosa
Enter it again: rosa
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
createdb -O rosa -e rosa_build

Конфигурируем Git

Из-под пользователя rosa настраиваем имя пользователя и адрес электронной почты для пользователя Git, от имени которого будет работать сервер ABF:

git config --global user.name Rosa
git config --global user.email rosa@abf.rosalinux.ru

Для корректного отображения имен файлов с кириллическими символами необходимо также выполнить команду

git config --global core.quotepath false

Устанавливаем и конфигурируем базу данных Redis

Воспользуйтесь инструкцией по установке Redis - https://abf.rosalinux.ru/abf/abf-configs/blob/master/rhel/redis_install.sh

Альтернативно. можно использовать скрипт redis_install.sh из репозиториев ABF:

wget https://abf.rosalinux.ru/abf/abf-configs/raw/master/rhel/redis_install.sh
chmod +x redis_install.sh
sudo ./redis_install.sh

Конфигурируем nginx

Если у вас есть несамоподписанные сертификаты для AFB, вы можете положить их в директорию /etc/ssl:

/etc/ssl/abf.key
/etc/ssl/abf.crt

Здесь вы можете найти инструкции по созданию самоподписанных сертификатов - https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-nginx-for-centos-6

Конфигурационные файлы для nginx необходимо взять из исходного кода ABF:

cd /etc/nginx/
sudo curl -L -O https://abf.rosalinux.ru/abf/abf-configs/raw/master/nginx/nginx.conf
cd /etc/nginx/conf.d/

Если вы не планируете использовать SSL-сертификаты и HTTPS-соединения, то необходимо выполнить следующие команды:

sudo curl -L -O https://abf.rosalinux.ru/abf/abf-configs/raw/master/nginx/rosa_build.http.conf
sudo mv rosa_build.http.conf rosa_build.conf

В противном случае необходимо ыполнить следующие команды:

sudo curl -L -O https://abf.rosalinux.ru/abf/abf-configs/raw/master/nginx/rosa_build.https.conf
sudo mv rosa_build.https.conf rosa_build.conf

После настройки, необходимо перезапустить сервис nginx

sudo service nginx restart

Конфигурируем iptables

В файле /etc/sysconfig/iptables:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

Перезапускаем сервис iptables:

sudo service iptables restart

Настраиваем SSH-доступ к Git

Переключаемся на пользователя Git и загружаем шаблон конфигурационного файла:

sudo su - git
env GIT_SSL_NO_VERIFY=true git clone https://abf.rosalinux.ru/abf/gitlab-shell.git
cp gitlab-shell/config.yml.example gitlab-shell/config.yml

Обновите config.yml в соответствии с вашими настройками и пожеланиями:

# GitLab user. git by default
user: git
# Url to gitlab instance. Used for api calls
# Use http instead of https when no ssl certificates
gitlab_url: "https://127.0.0.1/"
# Repositories path (APP_CONFIG[‘git_path’] + ‘/git_projects’)
repos_path: "/home/rosa/gitstore/git_projects"

Активируем создание журналов

sudo vi /etc/logrotate.d/redis

/var/log/redis_*.log {
   weekly
   rotate 10
   copytruncate
   delaycompress
   compress
   notifempty
   missingok
}
sudo vi /etc/logrotate.d/rosa_build
/srv/rosa_build/shared/log/*.log {
  weekly
  missingok
  rotate 52
  compress
  delaycompress
  notifempty
  copytruncate
}

Запуск ABF

На машине, используемой для разработки ABF:

cap production deploy:setup
cap production deploy:check
cap production deploy:update

На сервере:

cd /srv/rosa_build/current && RAILS_ENV=production bundle exec rake db:see

При необходимости, обновляем конфигурационные файлы:

/srv/rosa_build/shared/config/application.yml
/srv/rosa_build/shared/config/newrelic.yml

Собственно запуск:

cap production deploy:start