Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Nginx для Ruby on Rails. Установка passenger.


В этом выпуске:

 

 

Hilik     Настроим все

 http://www.hilik.org.ua/

 

Nginx для Ruby on Rails. Установка passenger.

Сразу скажу, что установка диверсионная, то есть не из портов. В порту nginx присутствует опция для установки модуля passenger, но я, честно говоря не смог разобраться с ним. Все собралось, все вроде хорошо, но абсолютно не понятно где находится passenger_root и т.п. Порт самого passengera заточен под Apache, в общем не приемлимо. По крайней мере я не сторонник ставить левый софт, просто потому что не люблю держать софт который не будет использоваться, а потом вернувшись через длительный промежуток времени к этому серверу в случае аварии, я буду вспоминать зачем тут стоит апачь и что вообще тут должно крутится. Поэтому, я пошел по пути, установки софта из gems.

Начнем с установки gems. gems это система управления пакетами для Ruby.
Ставим его из портов:

cd /usr/ports/devel/ruby-gems
make install clean

Этот порт при надобности втянет все что нужно для работы Ruby.
Теперь можно переходить к установке пассенжера, для его установки, как я уже писал воспользуемся установкой через gems:

gem install passenger

После установки passenger нам понадобятся исходные тексты nginx. Скачать его можно с официального сайта http://www.sysoev.ru/ в разделе nginx -> скачтать.
На момент написания статьи стабильная версия nginx-0.7.64, ее и скачаем. Дальнейшие команды предполагается выполнять в директории /home/share/

mkdir /home/share
cd /home/share
fetch http://sysoev.ru/nginx/nginx-0.7.64.tar.gz
tar xvfz nginx-0.7.64.tar.gz

Теперь можно переходить к сборке nginx с поддержкой модуля passenger, для этого служит команда passenger-install-nginx-module, выполняем ее и попадаем в диалог сборки:

passenger-install-nginx-module

Первое диалоговое окно:

Welcome to the Phusion Passenger Nginx module installer, v2.2.8.
 
This installer will guide you through the entire installation process. It
shouldn't take more than 5 minutes in total.
 
Here'
s what you can expect from the installation process:
 
1. This installer will compile and install Nginx with Passenger support.
2. You'll learn how to configure Passenger in Nginx.
3. You'
ll learn how to deploy a Ruby on Rails application.
 
Don't worry if anything goes wrong. This installer will advise you on how to
solve any problems.
 
Press Enter to continue, or Ctrl-C to abort.

Нужно нажать Enter для продолжения работы и после этого, произойдет проверка на наличие необходимых компонент и при наличии всех компонент(компилятора gcc, заголовков для разработки ruby, gem, openssl, rake, fastthread), компоненты должны обязательно найтись, часть из них присутствует в базовой системе FreeBSD, остальное установится вместе с gems и после проверки нам предложат выбор:

Automatically download and install Nginx?
 
Nginx doesn't support loadable modules such as some other web servers do,
so in order to install Nginx with Passenger support, it must be recompiled.
 
Do you want this installer to download, compile and install Nginx for you?
 
1. Yes: download, compile and install Nginx for me. (recommended)
The easiest way to get started. A stock Nginx 0.7.64 with Passenger
support, but with no other additional third party modules, will be
installed for you to a directory of your choice.
 
2. No: I want to customize my Nginx installation. (for advanced users)
Choose this if you want to compile Nginx with more third party modules
besides Passenger, or if you need to pass additional options to Nginx'
s
'configure' script. This installer will 1) ask you for the location of
the Nginx source code, 2) run the 'configure' script according to your
instructions, and 3) run 'make install'.
 
Whichever you choose, if you already have an existing Nginx configuration file,
then it will be preserved.
 
Enter your choice (1 or 2) or press Ctrl-C to abort:

1-й пункт выбора – это установка готового, собраного nginx, а второй пункт – сборка со своими параметрами. Вот второй пункт нам и подойдет. Вводим 2 и жмем Enter.
Следующий вопрос – где находятся исходные тексты nginx, а находятся они там, куда мы распаковали их /home/share/nginx-0.7.64

Where is your Nginx source code located?
 
Please specify the directory:

Вводим путь /home/share/nginx-0.7.64

И жмем Enter – следующий вопрос – какая базовая директория для установки nginx. По умолчанию предлагают /opt/nginx/ Я сталю nginx по тому же пути по которому собирается он из портов /usr/local

Where do you want to install Nginx to?
 
Please specify a prefix directory [/opt/nginx]:

Вводим /usr/local и опять жмем Enter
Теперь у нас интересуются дополнительными опциями configure:

Extra Nginx configure options
 
If you want to pass extra arguments to the Nginx 'configure' script, then
please specify them. If not, then specify nothing and press Enter.
 
If you specify nothing then the 'configure' script will be run as follows:
 
./configure --prefix='/usr/local' --add-module='/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/ext/nginx'
 
Extra arguments to pass to configure script:

Я опять таки использую те же, что и при обычной сборке из порта:

--conf-path=/usr/local/etc/nginx/nginx.conf
--sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path
=/var/log/nginx-error.log --user=www --group=www --http-client-body-temp-path=/var/tmp/nginx/client_body_temp
--http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
--http-log-path=/var/log/nginx-access.log --with-http_addition_module --with-http_stub_status_module
--with-http_sub_module --with-pcre

Опять жмем Enter и nginx c модулем passenger начнет собираться. В конце сборки мы увидим:

Nginx with Passenger support was successfully installed.
 
Please edit your Nginx configuration file,
and set the passenger_root and passenger_ruby configuration options in the
'http' block, like this:
 
http {
...
passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8;
passenger_ruby /usr/local/bin/ruby18;
...
}
 
After you (re)start Nginx, you are ready to deploy any number of Ruby on Rails
applications on Nginx.
 
Press ENTER to continue.

Вот на эти строки надо обратить особенное внимание. Их нужно сразу добавить в файл конфигурации nginx.
Добавим их и жмем Enter.

user  www;
worker_processes 2;
error_log /var/log/nginx/nginx-error.log;
pid /var/run/nginx.pid;
events {
use kqueue;
worker_connections 1024;
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
large_client_header_buffers 4 4k;
tcp_nopush on;
sendfile on;
output_buffers 32 512k;
sendfile_max_chunk 128k;
postpone_output 1460;
tcp_nodelay on;
passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8;
passenger_ruby /usr/local/bin/ruby18;
server_names_hash_bucket_size 64;
client_max_body_size 15m;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"

Файл конфигурации nginx пока сохраним и перейдем к установке Ruby-On-Rails.

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

 

 

 Буду рад комментариям, постараюсь ответить на вопросы. Заходите на сайт http://www.hilik.org.ua/
 


В избранное