Tag Archives: ROR

CentOS OpenVZ WebVZ

Установка панели управления WebVZ для OpenVZ

Большая благодарность Администратору хостинга hostinghutor.com

Для установки необходимо установить ROR на сервере.
В качестве веб-сервера рекомендуется использовать Apache или nginx с модулем Phusion Passenger.
Будем собирать rpm Nginx + Phusion Passenger.

Устанавливаем необходимые дополнительные утилиты и компиляторы:

# yum -y install rpm-build
# yum -y install make gcc gcc-c++
# yum -y install pcre-devel zlib-devel openssl-devel git

Устанавливаем ruby и сопутствующие модули

# yum -y install ruby ruby-devel rubygems rubygem-rails rubygem-fastthread rubygem-sqlite3-ruby
# yum -y install python-curl perl-WWW-Curl

Скачиваем nginx.src.rpm

# wget http://centos.alt.ru/pub/nginx/0.8/RHEL/SRPMS/nginx-0.8.53-2.el5.src.rpm

Устанавливаем src.rpm

# rpm -ivh nginx-0.8.53-2.el5.src.rpm

После выполнения данной операции исходники nginx, а также скрипты были установлены в /usr/src/redhat/SOURCES/, а spec файл (инструкция для сборки rpm пакета) в /usr/src/redhat/SPECS/

Редактируем файл nginx.spec под наши нужды

 --add-module=%{_builddir}/passenger/ext/nginx \

В папку /usr/src/redhat/BUILD скачиваем архив passenger

# cd /usr/src/redhat/BUILD
! На версии Phusion Passenger 3.0.0 у меня не заработало !
# wget http://rubyforge.org/frs/download.php/71376/passenger-2.2.15.tar.gz
# tar xvf passenger-3.0.0.tar.gz
# mv passenger-3.0.0 passenger

Собираем rpm nginx

# rpmbuild -ba --target=i686 nginx.spec

rpm nginx будет в папке /usr/src/redhat/RPMS/i686

# rpm -ivh nginx-0.8.53-2.i686.rpm

Проверяем конфигурацию на ошибки, ставим nginx в автозагрузку, стартуем nginx

# nginx -t
# chkconfig nginx on
# service nginx start

Конфигурация Nginx

user  nginx;
worker_processes  10;
worker_rlimit_nofile 100000;
error_log   /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
    use epoll;
}
http {
    passenger_root /usr/local/passenger;
    passenger_default_user root;
    passenger_ruby /usr/local/passenger/ruby.sh;
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile           on;
    tcp_nopush      on;
    tcp_nodelay     on;
    server_tokens   off;
    keepalive_timeout  65;
    # Load config files from the /etc/nginx/conf.d directory
    include /etc/nginx/conf.d/*.conf;
    server {
                listen       3000;
                server_name  _;
                root /usr/local/webvz/public;
                passenger_enabled on;
                rails_env development;
                location / {
                passenger_enabled on;
                }
           }
}

Копируем папку /usr/src/redhat/BUILD/passenger в папку /usr/local
В папку /usr/local/passenger прописываем скрипт ruby.sh

#!/bin/bash
export PATH=$PATH:/usr/sbin:/sbin
/usr/bin/ruby $1

Устанавливаем права 755 на данный файл

# chmod 755 ruby.sh

Устанавливаем WebVZ

# cd /usr/local/
# git clone https://github.com/shuaibzahda/webvz.git

Так как у нас версия rubygem-rails-2.1.1

# rpm -qa | grep rubygem-rails
  rubygem-rails-2.1.1-2.el5

В файле /usr/local/webvz/config/environment.rb меняем версию:

RAILS_GEM_VERSION = '2.1.1' unless defined? RAILS_GEM_VERSION

Заходим на страницу WebVZ

http://ip.ip.ip.ip:3000
Username: admin
Password: admin123 

Панель автоматически определила все виртуальные машины

OpenVZ Control panels
WebVZ: homepage Version 2.0 released September 7, 2008. Requires Ruby on Rails. — Замороженный проэкт

В следующем посте рассмотрим активно развивающуюся контрольную панель для OpenVZ – OpenVZ Web Panel , тем более что автор обещает в скором времени зарелизить версию 1.6

Development of version 1.6 is almost finished and I'm ready to release it. 
It will be released in the nearest weekend. Before that there is a time to 
fix bugs and to update translations.