среда, 31 августа 2011 г.

CentOS 6.0+Ruby on Rails+Nginx+Ruby Enterprise Edition

Ставим разом всё что нужно

yum install openssl-devel zlib-devel gcc gcc-c++ make autoconf   \

   readline-devel curl-devel expat-devel gettext-devel patch \

   libjpeg libpng telnet libxslt freetype freetype-devel     \

   mysql51-server mysql51-devel wget mysql mysql-devel       \

   pcre-devel w3m vim system-config-firewall-tui mysql-server sudo








Удаляем дефолтные компоненты Ruby



yum erase ruby ruby-libs ruby-mode ruby-rdoc ruby-irb ruby-ri ruby-docs

Ставим Ruby Enterprise Edition он сэкономит нам память и улучшит быстродействие
идём http://www.rubyenterpriseedition.com/download.html качаем и распаковываем
cd /usr/src

tar xzvf ruby-enterprise-X.X.X.tar.gz

./ruby-enterprise-X.X.X/installer

При сборке обратите внимание куда будет устанавливаться Ruby, так же вы можете выбрать другой путь инсталяции

Target directory

Where would you like to install Ruby Enterprise Edition to?
(All Ruby Enterprise Edition files will be put inside that directory.)

[/opt/ruby-enterprise-X.X.X] :
--------------------------------------------

Так же нужно установить GEM mysql

/opt/ruby-enterprise-X.X.X/bin/ruby /opt/ruby-enterprise-X.X.X/bin/gem install mysql

Добавми
export PATH=/opt/ruby-enterprise-X.X.X/bin:$PATH

echo 'export PATH=/opt/ruby-enterprise-X.X.X/bin:$PATH' >> /etc/profile



Обновим GEM'ы



gem install rubygems-update update_rubygems

Ставим оставшиеся гемы



gem install rake

gem install rails



Если нужно можно поставить поддержку SQLite для Ruby

Идём на страничку http://www.sqlite.org/download.html

и качаем sqlite-autoconf-XXX.tar.gz



cd /usr/src/ 

wget http://www.sqlite.org/sqlite-autoconf-XXX.tar.gz 

tar xfv sqlite-autoconf-3070701.tar.gz 

cd sqlite-autoconf-XXX 

./configure

make

make install

gem install sqlite3-ruby

sqlite3 -version



Пришло время поставить Nginx

Качаем последнюю стабильную ветку с сайта http://nginx.org/ru/download.html



cd /usr/src 

wget http://nginx.org/download/nginx-X.X.X.tar.gz

tar xfv nginx-X.X.X.tar.gz

cd nginx-X.X.X  

./configure --sbin-path=/usr/local/sbin --with-http_ssl_module     \

   --without-mail_pop3_module --without-mail_imap_module     \

   --without-mail_smtp_module --with-http_stub_status_module \

   --with-http_realip_module   

make

make install

ln -s /usr/local/nginx/conf /etc/nginx

cd /etc/init.d/

wget https://raw.github.com/sc0rp1us/Good-scripts.sh/master/init.d/nginx.centos

mv nginx.centos nginx

chmod +x nginx 

/etc/init.d/nginx start



Проверяем работоспособность nginx'a



w3m 127.0.0.1



если всё ок длбавляем в автозагрузку



теперь запустите

system-config-firewall-tui



и разрешите доступ к web серверу



Пришло время поставить GEM passenger

gem install passenger



Перед установкой модуля passenger для nginx'a нужно остановить nginx



/etc/init.d/nginx stop



Теперь запускаем установщик модуля пассинджера для nginx'a



passenger-install-nginx-module



На вопрос Automatically download and install Nginx? отвечаем цифрой 2



теперь необходимо указать где лежат исходники nginx'a


--------------------------------------------

Where is your Nginx source code located?

Please specify the directory: /usr/src/nginx-X.X.X
место установки nginx'a
Where do you want to install Nginx to?

Please specify a prefix directory [/opt/nginx]: /usr/local/nginx
Указываем доп. параметры для сборки
Extra arguments to pass to configure script: --sbin-path=/usr/local/sbin \ --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module \ --with-http_stub_status_module --with-http_realip_module
Во время установки вы должны получить пару сообщений с листингами конфигов nginx'a, сохраните их, они нам еще пригодятся
--------------------------------------------

Nginx with Passenger support was successfully installed.

Please edit your Nginx configuration file (probably /usr/local/nginx/conf/nginx.conf),
and set the passenger_root and passenger_ruby configuration options in the
'http' block, like this:

http {
...
passenger_root /opt/ruby-enterprise-X.X.X.X/lib/ruby/gems/1.8/gems/passenger-3.0.8;
passenger_ruby /opt/ruby-enterprise-X.X.X.X/bin/ruby;
...
}

After you (re)start Nginx, you are ready to deploy any number of Ruby on Rails
applications on Nginx.

Press ENTER to continue.
===================================
--------------------------------------------

Deploying a Ruby on Rails application: an example

Suppose you have a Ruby on Rails application in /somewhere. Add a server block
to your Nginx configuration file, set its root to /somewhere/public, and set
'passenger_enabled on', like this:

server {
listen 80;
server_name www.yourhost.com;
root /somewhere/public; # <--- be sure to point to 'public'!
passenger_enabled on;
}

And that's it! You may also want to check the Users Guide for security and
optimization tips and other useful information:

/opt/ruby-enterprise-X.X.X.X/lib/ruby/gems/1.8/gems/passenger-3.0.8/doc/Users guide Nginx.html

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
http://www.modrails.com/

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.
Теперьпоставим mongoDB echo "[10gen] name=10gen Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686 gpgcheck=0 " > /etc/yum.repos.d/mongodb.10gen.repo yum install mongo-10gen-server mongo-10gen /etc/init.d/mongod start Добиваем остатки гемов gem install mysql -- --with-mysql-config=/usr/bin/mysql_config gem install mongo bson bson_ext Добавляем скрипты в автозагрузку chkconfig --add nginx chkconfig --add mysqld chkconfig --add mongod chkconfig --level 2345 nginx on chkconfig --level 2345 mysqld on chkconfig --level 2345 mongod on Подготавливаем место под рельсы mkdir /opt/railsapps groupadd webmaster chgrp -R webmaster /opt/railsapps/ rails new firstapp Теперь правим секцию http в файле /etc/nginx/nginx.conf
http {
...
passenger_root /opt/ruby-enterprise-X.X.X.X/lib/ruby/gems/1.8/gems/passenger-3.0.8;
passenger_ruby /opt/ruby-enterprise-X.X.X.X/bin/ruby;
include sites/*.conf;
...
}
Теперь создадим виртуалхост mkdir /etc/nginx/sites/ запишем в /etc/nginx/sites/firstapp.conf следующее
server { listen 80; server_name yourdomain.com;
root /opt/railsapps/firstapp/public; # <--- be sure to add 'public' to the app path!
passenger_enabled on;
#rails_env development;
gzip on;
}
Остальсь только запустить nginx /etc/init.d/nginx restart и перейти по ссылке http://yourdomain.com

Enhanced by Zemanta