Preparing Rails server on clear Ubuntu 12.04 (RVM, nginx, passenger, postgres)

Источник здесь. + Моё дополнение

1 шаг. Ставим RVM

Если кто-то предпочитает rbenv – то о его установке можно посмотреть у Ryanb

Заходим на сервер через ssh, апдейтим всё:

sudo apt-get update

Ставим саму RVM:

curl -L get.rvm.io | bash -s stable

Загружаем RVM

source ~/.rvm/scripts/rvm (or source /etc/profile.d/rvm.sh)
2 шаг. Ставим Ruby


Теперь посмотрим какие зависимости нужны RVM для работы

rvm requirements

Увидим команду, необходимую для установки Ruby, копируем ее, получится что-то вроде:

rvmsudo /usr/bin/apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

Устанавливаем ruby 1.9.3:

rvm install 1.9.3

Указываем какую версию руби юзать глобально:

rvm use 1.9.3 --default
3 шаг. Ставим rubygems и нужные нам гемы
rvm rubygems current
gem install rails
gem install passenger

Процесс может занять некоторое время.

4 Шаг. Ставим nginx, который свяжется с passenger’ом (/opt/nginx)
rvmsudo passenger-install-nginx-module

Во время установки будут проверены зависимости и даны команды для установки недостающих.

5 шаг. Запускаем nginx
sudo service nginx start

Если на этом шаге будет ошибка вида “unknown service nginx”, то нужно установить необходимые скрипты для запуска движка:

# Download nginx startup script
wget -O init-deb.sh  https://www.linode.com/docs/assets/660-init-deb.sh 

# Move the script to the init.d directory & make executable
sudo mv init-deb.sh /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx

# Add nginx to the system startup
sudo /usr/sbin/update-rc.d -f nginx defaults

Теперь можно юзать команды вида:

sudo service nginx stop
sudo service nginx start
sudo service nginx restart
sudo service nginx reload
6 шаг. Настройка конфига Nginx
sudo nano /opt/nginx/conf/nginx.conf

Здесь нужно указать путь к приложению (которое мы создадим на след шаге)

Пример моей настройки на сервере:
server {
        listen       80;
        server_name  localhost;
        passenger_enabled on;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

            root   /home/USER_NAME/APP_NAME/public;
           # index  index.html index.htm;
}
7 шаг. Создание и запуск Rails приложения

Перед тем, как создать rails-приложение, нужно установить node.js

sudo apt-get install nodejs

Всё готово, переходим в корневую директорию и создаем rails-приложение (название должно совпадать с названием в nginx.conf)

cd
rails new APP_NAME
Перезапускаем Nginx и наслаждаемся результатом
sudo services nginx restart
8 шаг. Установка postgresql вместо дефолтной sqlite3

Устанавливаем postgresql На сервер, создаем бд и пользователя:

sudo apt-get install python-software-properties
add-apt-repository ppa:pitti/postgresql
apt-get -y update
apt-get -y install postgresql libpq-dev
sudo -u postgres psql
# \password
вводим 2 раза пароль для главного админа
затем создаем нового юзера для бд
# create user USER_NAME with password 'secret';
# create database app_name_production owner USER_NAME;
вместо (USER_NAME) нужно указать имя нужного пользователя
# \q

Затем, указываем в нашем приложении в database.yml созданного пользователя и имя бд.
БД можно также создать из rails-приложения, для этого нужно указать в database.yml нужные настройки и выполнить команду

RAILS_ENV=production rake db:create

Прогоняем миграции (если есть)

RAILS_ENV=production rake migrate

Всё, наш сервер готов к работе.

Поделиться с друзьями

Френдинг

 

Comments: 2

Leave a reply »

 
 
 

А можно подружить пассанджер с установленным nginx из репозитория? А то ставить отдельно как-то не то

 

Можно. Но в моем мануале использутеся просто модуль phusion passenger.
Вот тут можно посмотреть простой ответ – http://stackoverflow.com/questions/12883980/setting-up-nginx-and-passenger-on-ubuntu-12-04-for-rails-3-2-8-environment
а тут http://www.modrails.com/documentation/Users%20guide%20Nginx.html – документацию по настройке nginx + passenger

 

Leave a Reply

 
(will not be published)
 
 
Comment