Как развернуть приложение Rails на VPS (или выделенный сервер)?
Как я могу развернуть приложение Rails на VPS (виртуальный частный сервер) или выделенный сервер? Было бы неплохо иметь легкий для следования гид.
Я знаю о скриптах для автоматизации процесса, но я думаю, что лучше иметь все под контролем, чтобы лучше понять процесс.
2 ответов
Я успешно развернул приложение heavy Rails для Linode или Digital Ocean, используя следующие технологии:
- rbenv для установки Ruby
- С nginx + пассажир для приложения сервера
- PostgreSQL для сервера баз данных
- Капистрано для автоматизации развертывания (сначала настройте это на своей машине dev с IP-адресом сервера и настройками, я не буду его покрывать здесь)
Это те шаги, которые работают для меня:
настройка виртуальной машины
создать новую виртуальную машину
следуйте инструкциям по установке вашего хостинга, будь то Linode или Digital Ocean, чтобы создать узел и настроить его.
настройка даты
- dpkg-перенастроить tzdata
обновление пакетов
- apt-get update
- apt-получить обновление
безопасность
создать
- adduser deploy
- usermod-a-G sudo deploy
- выход
настройка ключа SSH-аутентификации
на местных:
- ssh-keygen
- скопировать публичный ключ:
- scp ~/.ssh / id_rsa.паб deploy@example.com:~
на сервере:
- ssh deploy@example.com
- включить псевдоним для списка файлов:
- vim ~/.bashrc и
- раскомментировать все псевдонимы
- mkdir .ssh
- МВ id_rsa.паб.ssh / authorized_keys
- chown-R deploy: развертывание .ssh
- chmod 700 .ssh
- chmod 600 .ssh / authorized_keys
- выход (тест новая аутентификация)
настройка SSH
- судо ВИМ /и т. д./по ssh/sshd_config в
- переключить PermitRootLogin на no
- перезапуск ssh службы sudo
настройки брандмауэра
- sudo iptables-L (он должен показывать пустую таблицу)
- судо ВИМ файл /etc/iptables в.брандмауэр.правила
- вставить этот: https://gist.github.com/davidmles/89fc88e48e17cf8252bfca374e46355f#file-iptables-firewall-rules
- судо в iptables-восстановить
- sudo iptables-L (теперь он должен показывать настроенные правила)
- судо ВИМ /и т. д./сети/если-до-до.д/брандмауэра
- вставьте это:https://gist.github.com/davidmles/89fc88e48e17cf8252bfca374e46355f#file-firewall
- sudo chmod +x /и т. д./сети/если-до-до.д/брандмауэра
настройки кроме того, fail2ban
настройте, если у вас достаточно свободной памяти, так как она имеет тенденцию ее есть.
- sudo apt-get install-y fail2ban
Настройка Ruby
Установить Git
- sudo apt-get install-y git
установки rbenv
- git клон https://github.com/sstephenson/rbenv.git ~/.rbenv
- echo 'export PATH=" $HOME/.rbenv/bin:$PATH"'>>~/.bashrc и
- echo 'eval" $(rbenv init -)"'>>~/.bashrc и
- источник ~/.bashrc и
- git clone https://github.com/sstephenson/ruby-build.git~/.rbenv / Плагины / ruby-build
Установить Ruby
- sudo apt-get install-y curl gnupg build-essential
- rbenv install-l (ищите последнюю версию)
- rbenv установить 2.3.3 (или последнюю доступную версию на данный момент)
- rbenv global 2.3.3
- rbenv rehash
- vim .gemrc
- вставьте это: gem: --no-document
настройки сервера
установить nginx + пассажир
- установить после документация:
Установить PostgreSQL
- установить в соответствии с документацией:
библиотеки установки
установить узел.js
необходимо для предварительной компиляции активов.
- sudo apt-get install-y nodejs
установить bundler
- получить установить bundler
- rbenv rehash
Настройки Приложения
создайте пользователя в PostgreSQL
- имя пользователя --createuser pwprompt
- createdb используется -Ousername -Eutf8 имя_базы_данных
я развернул приложение rails на своих производственных серверах (это кластер) с Capistrano раньше, но я обнаружил, что Capistrano немного сложен и иногда даже стал создателем проблем... Поэтому я написал сценарий развертывания по сценарию оболочки bash.
Я поставил его на github с кратким руководством:deploy_rails