Установка сервера ABF под RELS
Содержание
Подготовка окружения
- Создаем пользователей rosa и git и соответствующие группы:
sudo useradd rosa && sudo passwd rosa sudo useradd git && sudo usermod -a -G rosa git && sudo usermod -a -G git rosa
- Обновляем файл /etc/sudoers - даем права sudo пользователю 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
- Устанавливаем и настраиваем RVM для пользователей rosa и git
- Устанавливаем стабильную версию RVM с сайта:
curl -L get.rvm.io | bash -s stable
- Загружаем RVM:
source ~/.rvm/scripts/rvm
- Для работы 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
- Устанавливаем Ruby и RubyGems (необходимые для Ruby on Rails) с помощью RVM для пользователей rosa и git
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 9.2
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
- Делаем сервисы nginx и crond запускаемыми по умолчанию:
sudo chkconfig --levels 2345 nginx on sudo chkconfig crond on sudo service crond start
- Настраиваем SSH-доступ для пользователей rosa и git:
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
- Добавьте ваш публичный ключ в файл ~rosa/.ssh/authorized_keys, чтобы иметь возможность заходить на сервер по SSH под пользователем rosa
Конфигурируем PostgreSQL
- Переключаемся на пользователя postgres
sudo su postgres
- Создаем пользователя rosa в PostgreSQL (в примере используется пароль 'rosa'), на вопросы о правах суперпользователя и возможности создания новых ролей отвечаем "no"
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
- если используются SSK-сертификаты, то добавляем строку
-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