Top > インストールガイド > CentOS5+Apache+mod_proxy_balancer+Mongrel

インストールガイド (CentOS5+Apache+mod_proxy_balancer+Mongrel)

対象バージョン

当ドキュメントはRubricks-0.6.x向けです。

CentOS 5.0のインストール情報

IP Address    : 192.168.0.10
Gateway       : 192.168.0.254
Host Name     : rubricks
Package Group : 「言語-日本語のサポート」以外全て削除

SELinuxの停止

vi /etc/selinux/config
================================================================
(省略)
SELINUX=disabled
(省略)
================================================================

不要なデーモンの停止

chkconfig haldaemon off
chkconfig ip6tables off
chkconfig iptables off
chkconfig kudzu off
chkconfig mcstrans off
chkconfig messagebus off
chkconfig netfs off
chkconfig restorecond off
chkconfig xfs off

RPMの更新

rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
yum -y update
yum -y install crontabs logrotate lsof sudo telnet unzip vixie-cron wget which zip

shutdown -r now

Yumレポジトリの追加

注)
以下の手順で利用する一部のRPMはCentOS公式のものではなく、utaが独自にビルドしたものです。
試用するには手軽ですが、実運用時の利用は推奨致しません。

vi /etc/yum.repos.d/u-jp.repo
================================================================
[u-jp]
name=CentOS-$releasever - u-jp
baseurl=http://repos.u-jp.com/$basearch/
enabled=1
gpgcheck=0
================================================================

MySQLの導入

yum -y install mysql mysql-server perl-DBI perl-DBD-MySQL
vi /etc/my.cnf
================================================================
[mysqld_safe]
pid-file                        = /var/lib/mysql/mysqld.pid

[mysqld]
user                            = mysql
port                            = 3306
socket                          = /var/lib/mysql/mysql.sock
skip-external-locking

datadir                         = /var/lib/mysql/data
default-character-set           = utf8

log                             = /var/log/mysql/mysqld.log
log-bin                         = /var/log/mysql/update-bin
expire_logs_days                = 7
log-slow-queries                = /var/log/mysql/slow_query.log
long_query_time                 = 1

max_allowed_packet              = 24M
thread_concurrency              = 8
max_connections                 = 200
thread_cache_size               = 200
table_cache                     = 1024
query_cache_type                = 1
query_cache_size                = 16M
join_buffer_size                = 256K
read_buffer_size                = 256K
read_rnd_buffer_size            = 256K
sort_buffer_size                = 512K

key_buffer                      = 8M

skip-bdb
bdb_cache_size                  = 8M

max_heap_table_size             = 16M
tmp_table_size                  = 16M

innodb_data_home_dir            = /var/lib/mysql/data
innodb_data_file_path           = ibdata1:128M:autoextend
innodb_log_group_home_dir       = /var/log/mysql_innodb/
innodb_log_arch_dir             = /var/log/mysql_innodb/
innodb_buffer_pool_size         = 256M
innodb_additional_mem_pool_size = 8M
innodb_log_file_size            = 128M
innodb_log_buffer_size          = 16M
innodb_flush_log_at_trx_commit  = 1
innodb_lock_wait_timeout        = 50
innodb_file_per_table

[client]
user                            = root
port                            = 3306
socket                          = /var/lib/mysql/mysql.sock
default-character-set           = utf8

[mysql]
user                            = root
port                            = 3306
socket                          = /var/lib/mysql/mysql.sock
default-character-set           = utf8
no-auto-rehash
safe-updates

[mysqladmin]
user                            = root
socket                          = /var/lib/mysql/mysql.sock
default-character-set           = utf8

[mysqldump]
default-character-set           = utf8
max_allowed_packet              = 24M
quick

[mysqlhotcopy]
interactive-timeout
================================================================

mkdir /var/log/{mysql,mysql_innodb}
chown mysql.mysql /var/log/{mysql,mysql_innodb}
chmod 700 /var/log/{mysql,mysql_innodb}

mysql_install_db --defaults-file=/etc/my.cnf
chkconfig --level 2345 mysqld on
service mysqld start

mysql
mysql> REVOKE GRANT OPTION on *.* from ''@localhost;
mysql> DROP USER ''@rubricks;
mysql> DROP USER ''@localhost;
mysql> DROP DATABASE test;
mysql> CREATE DATABASE rubricks;
mysql> GRANT ALL ON rubricks.* TO rubricks@localhost;
mysql> EXIT

memcachedの導入

yum -y install repcached libevent

vi /etc/memcached.conf
================================================================
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
================================================================

chkconfig --level 2345 memcached on
service memcached start

Apacheの導入

yum -y install httpd apr apr-util mailcap postgresql-libs

vi /etc/httpd/conf/httpd.conf
================================================================
LoadModule              alias_module            modules/mod_alias.so
LoadModule              authz_host_module       modules/mod_authz_host.so
LoadModule              deflate_module          modules/mod_deflate.so
LoadModule              dir_module              modules/mod_dir.so
LoadModule              expires_module          modules/mod_expires.so
LoadModule              filter_module           modules/mod_filter.so
LoadModule              headers_module          modules/mod_headers.so
LoadModule              log_config_module       modules/mod_log_config.so
LoadModule              mime_module             modules/mod_mime.so
LoadModule              proxy_module            modules/mod_proxy.so
LoadModule              proxy_balancer_module   modules/mod_proxy_balancer.so
LoadModule              proxy_http_module       modules/mod_proxy_http.so
LoadModule              rewrite_module          modules/mod_rewrite.so

ServerRoot              /etc/httpd
DocumentRoot            /var/www/html
PidFile                 /var/run/httpd.pid
User                    apache
Group                   apache
ServerName              192.168.0.10
Listen                  80
Listen                  8000
ServerSignature         Off
ServerTokens            Prod
DirectoryIndex          index.html
HostnameLookups         Off
TypesConfig             /etc/mime.types
DefaultType             text/plain
AddDefaultCharset       utf-8

<Directory />
  Options               None
  AllowOverride         None
  Deny                  from all
</Directory>

Timeout                 300
KeepAlive               On
MaxKeepAliveRequests    10000
KeepAliveTimeout        10
StartServers            8
MinSpareServers         5
MaxSpareServers         20
ServerLimit             256
MaxClients              256
MaxRequestsPerChild     10000

ErrorLog                /var/log/httpd/error.log
LogLevel                error
LogFormat               '%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"' combined
CustomLog               /var/log/httpd/access.log combined

#===[Setting for Static]=======================================================#
<VirtualHost localhost:8000>
  ServerName            localhost
  DocumentRoot          /var/mongrel/rubricks/public
  RequestHeader         unset If-None-Match
  Header                unset ETag
  Header                unset Vary
  <Directory /var/mongrel/rubricks/public>
    Options             None
    AllowOverride       None
    Allow               from all
  </Directory>
</VirtualHost>

#===[Setting for Deflate]======================================================#
FilterDeclare           Compression              CONTENT_SET
FilterProvider          Compression              DEFLATE Content-Type $text/plain
FilterProvider          Compression              DEFLATE Content-Type $text/css
FilterProvider          Compression              DEFLATE Content-Type $application/xhtml
FilterProvider          Compression              DEFLATE Content-Type $application/xml
FilterProvider          Compression              DEFLATE Content-Type $application/xhtml+xml
FilterProvider          Compression              DEFLATE Content-Type $application/rss+xml
FilterProvider          Compression              DEFLATE Content-Type $application/atom+xml
FilterProvider          Compression              DEFLATE Content-Type $application/x-javascript
FilterProvider          Compression              DEFLATE Content-Type $image/svg+xml
FilterChain             Compression

#===[Setting for Expires]======================================================#
ExpiresActive           On
ExpiresByType           text/css                 "access plus 30 days"
ExpiresByType           application/x-javascript "access plus 30 days"
ExpiresByType           image/gif                "access plus 30 days"
ExpiresByType           image/jpeg               "access plus 30 days"
ExpiresByType           image/png                "access plus 30 days"

#===[Setting for Rubricks]=====================================================#
<VirtualHost *:80>
  ServerName            192.168.0.10
  ProxyRequests         Off
  ProxyTimeout          3
  ProxyPreserveHost     On
  ProxyPass             /favicon.ico            http://localhost:8000/favicon.ico
  ProxyPass             /heartbeat.html         http://localhost:8000/heartbeat.html
  ProxyPass             /images/                http://localhost:8000/images/
  ProxyPass             /javascripts/           http://localhost:8000/javascripts/
  ProxyPass             /stylesheets/           http://localhost:8000/stylesheets/
  ProxyPass             /                       balancer://rubricks/ lbmethod=byrequests timeout=3
  ProxyPassReverse      /                       balancer://rubricks/
  <Location />
    Options             None
    AllowOverride       None
    Allow               from all
  </Location>
  <Proxy balancer://rubricks/>
    RequestHeader       unset If-None-Match
    Header              unset ETag
    Header              unset Vary
    BalancerMember      http://localhost:3000   loadfactor=1 keepalive=on retry=5
    BalancerMember      http://localhost:3001   loadfactor=1 keepalive=on retry=5
    BalancerMember      http://localhost:3002   loadfactor=1 keepalive=on retry=5
    BalancerMember      http://localhost:3003   loadfactor=1 keepalive=on retry=5
    BalancerMember      http://localhost:3004   loadfactor=1 keepalive=on retry=5
  </Proxy>
</VirtualHost>
================================================================

chown -R apache.apache /var/www/html
chmod 700 /var/www/{cgi-bin,error,html,icons}
chkconfig --level 2345 httpd on
service httpd start

Ruby/Mongrelの導入

yum -y install ruby ruby-docs ruby-irb ruby-libs ruby-rdoc ruby-ri
yum -y install rubygems rake daemons gem_plugin fastthread cgi_multipart_eof_fix mongrel mongrel_cluster

vi /etc/mongrel/mongrel.conf
================================================================
---
address         : 0.0.0.0
config_script   :
cwd             : /var/mongrel/rubricks
debug           : false
environment     : production
group           : mongrel
log_file        : /var/log/mongrel/mongrel.log
mime_map        :
num_procs       :
pid_file        : tmp/pids/mongrel.pid
port            : 3000
prefix          :
user            : mongrel
servers         : 5
timeout         : 0
================================================================

Rubricksの導入

wget http://rubyforge.org/frs/download.php/xxxxx/rubricks-0.X.X.tar.gz
tar -zxf rubricks-0.X.X.tar.gz -C /var/mongrel/
chmod 701 /var/mongrel
chown -R mongrel.mongrel /var/mongrel/rubricks
cp /var/mongrel/rubricks/config/sample1_environment.rb /var/mongrel/rubricks/config/environment.rb
cp /var/mongrel/rubricks/config/sample1_database.yml   /var/mongrel/rubricks/config/database.yml
cp /var/mongrel/rubricks/config/sample1_memcached.yml  /var/mongrel/rubricks/config/memcached.yml

vi /var/mongrel/rubricks/config/environment.rb
================================================================
(省略)
Rails::Initializer.run do |config|
  config.frameworks -= [:action_web_service]
  config.load_paths += [File.join(RAILS_ROOT, 'tmp', 'components')]
  config.log_level = :info
  config.log_path  = "/var/log/mongrel/#{RAILS_ENV}.log"
  config.action_controller.session_store = :mem_cache_store
end
(省略)
ENV['RUBRICKS_SERVER_CONTROL'] = 'true'
================================================================

vi /var/mongrel/rubricks/config/database.yml
================================================================
common: &common
        adapter:        mysql
        host:           localhost
        socket:         /var/lib/mysql/mysql.sock
        username:       rubricks
        password:
        encoding:       utf8

development:
        database:       rubricks
        <<: *common

test:
        database:       rubricks
        <<: *common

production:
        database:       rubricks
        <<: *common
================================================================

vi /var/mongrel/rubricks/config/memcached.yml
================================================================
session:
  expires: '6h'
  options:
    multithread:  false
    namespace:    'rubricks'
    readonly:     false
  servers: ['localhost:11211']
================================================================

cd /var/mongrel/rubricks
export RAILS_ENV=production
rake db:migrate
chown -R mongrel.mongrel /var/mongrel/rubricks

chkconfig --level 2345 mongrel_rubricks on
service mongrel_rubricks start

動作確認

ブラウザで http://192.168.0.10/ にアクセスすると、Rubricksトップページが表示されます。
管理者ユーザでログインしてください。デフォルトの管理者のユーザ名及びパスワードは以下の通りです。

ユーザ名'admin'
パスワード'pass'