fbpx

Scalrを使ってみよう [1]

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

Scalrとは

Scalrとは、米Scalr社が提供するオープンソースのクラウド連携ツールです。さまざまなIaaSと連携でき、Cloud Foundryのプロビジョニングも可能です。

ソースコードを取得することでプライベートなScalr環境を構築できるほか、Scalr社が運営するScalrホスティングサービスを利用することができます。

本項ではOS Specific Installation Guides - Ubuntu 10.04 Lucidを参考に、オープンソース版ScalrのインストールをUbuntu server QEMUイメージに行います。

なお、Installationにある通り、プライベートなScalr環境の構築は推奨されていないため、参考程度にとどめてください。

Ubuntu Serverのインストール

Download Ubuntu ServerからUbuntu 10.04.3 server 64bit image (インストーラ ISO イメージ)を取得します。

QEMUイメージを作成します。

% qemu-img create -f qcow2 ubuntu-server-10.04.3.img 10G
Formatting 'ubuntu-server-10.04.3.img', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536
%

QEMUイメージとインストーラISOイメージを指定して、KVMを起動します。

% kvm -hda ubuntu-server-10.04.3.img -cdrom ubuntu-10.04.3-server-amd64.iso -boot d -m 1024

詳細な手順は省略します。インストールは30分程度で完了します。

PHP 5.2 のインストール

Scalr は PHP 5.2 を必要としていますが、Ubuntu 10.04 には公式には PHP 5.3 しか用意されていません。

cf@ubuntu:~$ apt-cache show php5 | grep ^Version
Version: 5.3.2-1ubuntu4.11
Version: 5.3.2-1ubuntu4
cf@ubuntu:~$

そのため、Ubuntu 10.04 用に PHP 5.2 をインストールする準備が必要となります。

root@ubuntu:~# aptitude install python-software-properties
	:
root@ubuntu:~# 

root@ubuntu:~# add-apt-repository ppa:txwikinger/php5.2
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv F91BF66D1CA9C138944C09AF13C360CC9CC59506
gpg: 鍵9CC59506をhkpからサーバーkeyserver.ubuntu.comに要求
gpg: 鍵9CC59506: 公開鍵“Launchpad PPA for Ralph Janke”を読み込みました
gpg: 処理数の合計: 1
gpg:               読込み: 1  (RSA: 1)
root@ubuntu:~#

Installation Guideに記載されている /etc/apt/preferences.d/php の内容は 2012/02/14 現在、そのままでは利用できません。項目ごとに空行で区切らないと有効になりません。

root@ubuntu:~# cat > /etc/apt/preferences.d/php
Package: libapache2-mod-php5
Pin: version 5.2.10*
Pin-Priority: 991

Package: libapache2-mod-php5filter
Pin: version 5.2.10*
Pin-Priority: 991

Package: php-pear
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-cgi
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-cli
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-common
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-curl
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-dbg
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-dev
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-gd
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-gmp
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-ldap
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-mhash
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-mysql
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-odbc
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-pgsql
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-pspell
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-recode
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-snmp
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-sqlite
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-sybase
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-tidy
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-xmlrpc
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-xsl
Pin: version 5.2.10*
Pin-Priority: 991

Package: php5-mcrypt
Pin: version 5.2.6*
Pin-Priority: 991

Package: php5-imap
Pin: version 5.2.6*
Pin-Priority: 991
root@ubuntu:~#

このように記載することで、より新しい PHP 5.3 ではなく、PHP 5.2 をインストールすることが可能になります。

root@ubuntu:~# aptitude install -svy php5
	:
Inst libapr1 (1.3.8-1ubuntu0.3 Ubuntu:10.04/lucid-updates)
Inst libaprutil1 (1.3.9+dfsg-3ubuntu0.10.04.1 Ubuntu:10.04/lucid-updates)
Inst libaprutil1-dbd-sqlite3 (1.3.9+dfsg-3ubuntu0.10.04.1 Ubuntu:10.04/lucid-updates)
Inst libaprutil1-ldap (1.3.9+dfsg-3ubuntu0.10.04.1 Ubuntu:10.04/lucid-updates)
Inst apache2.2-bin (2.2.14-5ubuntu8.7 Ubuntu:10.04/lucid-updates)
Inst apache2-utils (2.2.14-5ubuntu8.7 Ubuntu:10.04/lucid-updates)
Inst apache2.2-common (2.2.14-5ubuntu8.7 Ubuntu:10.04/lucid-updates)
Inst apache2-mpm-prefork (2.2.14-5ubuntu8.7 Ubuntu:10.04/lucid-updates)
Inst php5-common (5.2.10.dfsg.1-2ubuntu6.5 php5.2:10.04/lucid)
Inst libapache2-mod-php5 (5.2.10.dfsg.1-2ubuntu6.5 php5.2:10.04/lucid)
Inst php5 (5.2.10.dfsg.1-2ubuntu6.5 php5.2:10.04/lucid)
root@ubuntu:~#
root@ubuntu:~# aptitude install php5
	:
root@ubuntu:~#
root@ubuntu:~# dpkg -l php5
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ 名前         バージョ   説明
+++-==============-==============-============================================
ii  php5           5.2.10.dfsg.1- server-side, HTML-embedded scripting languag
root@ubuntu:~#

MySQL のインストール

root@ubuntu:~# aptitude install -syv mysql-server php5-mysql | grep -v ^C
	:
Inst mysql-common (5.1.41-3ubuntu12.10 Ubuntu:10.04/lucid-updates)
Inst libnet-daemon-perl (0.43-1 Ubuntu:10.04/lucid)
Inst libplrpc-perl (0.2020-2 Ubuntu:10.04/lucid)
Inst libdbi-perl (1.609-1build1 Ubuntu:10.04/lucid)
Inst libmysqlclient16 (5.1.41-3ubuntu12.10 Ubuntu:10.04/lucid-updates)
Inst libdbd-mysql-perl (4.012-1ubuntu1 Ubuntu:10.04/lucid)
Inst mysql-client-core-5.1 (5.1.41-3ubuntu12.10 Ubuntu:10.04/lucid-updates)
Inst mysql-client-5.1 (5.1.41-3ubuntu12.10 Ubuntu:10.04/lucid-updates)
Inst mysql-server-core-5.1 (5.1.41-3ubuntu12.10 Ubuntu:10.04/lucid-updates)
Inst mysql-server-5.1 (5.1.41-3ubuntu12.10 Ubuntu:10.04/lucid-updates)
Inst mysql-server (5.1.41-3ubuntu12.10 Ubuntu:10.04/lucid-updates)
Inst php5-mysql (5.2.10.dfsg.1-2ubuntu6.5 php5.2:10.04/lucid)
root@ubuntu:~#

root@ubuntu:~# aptitude install mysql-server php5-mysql
	:
root@ubuntu:~#

MySQL のインストール時に MySQL の root のパスワードの設定を求められますが、すべて空欄にしてください。

PHP エクステンションの apt インストール

多数の PHP エクステンションを apt でインストールします。

root@ubuntu:~# aptitude install libssh2-1 openssl libsnmp-base libsnmp15 snmp snmpd bind9
	:
root@ubuntu:~#
root@ubuntu:~# aptitude install curl php5-curl -svy | grep -v ^C
	:
Inst libcurl3 (7.19.7-1ubuntu1.1 Ubuntu:10.04/lucid-updates)
Inst curl (7.19.7-1ubuntu1.1 Ubuntu:10.04/lucid-updates)
Inst php5-curl (5.2.10.dfsg.1-2ubuntu6.5 php5.2:10.04/lucid)
root@ubuntu:~#
root@ubuntu:~# aptitude install curl php5-curl
	:
root@ubuntu:~#
root@ubuntu:~# aptitude install php5-cli -svy | grep -v ^C
	:
Inst php5-cli (5.2.10.dfsg.1-2ubuntu6.5 php5.2:10.04/lucid)
root@ubuntu:~#
root@ubuntu:~# aptitude install php5-cli
	:
Inst php5-cli (5.2.10.dfsg.1-2ubuntu6.5 php5.2:10.04/lucid)
root@ubuntu:~#
root@ubuntu:~# aptitude install gettext
	:
root@ubuntu:~#
root@ubuntu:~# aptitude install libltdl7 libmcrypt4
	:
root@ubuntu:~#
root@ubuntu:~# aptitude install libmhash2 php5-mhash -svy | grep -v ^C
	:
Inst php5-mhash (5.2.10.dfsg.1-2ubuntu6.5 php5.2:10.04/lucid)
root@ubuntu:~#
root@ubuntu:~# aptitude install libmhash2 php5-mhash
	:
root@ubuntu:~#
root@ubuntu:~# aptitude install php5-snmp snmp snmp5 libsnmp15 -svy | grep -v ^C
	:
Inst php5-snmp (5.2.10.dfsg.1-2ubuntu6.5 php5.2:10.04/lucid)
root@ubuntu:~#
root@ubuntu:~# aptitude install php5-snmp snmp snmp5 libsnmp15
	:
root@ubuntu:~#

PHP エクステンションの dpkg インストール

apt でインストールできる php5-mcrypt は新しいため、別途 wget でパッケージを取得し、dpkg でインストールします。

root@ubuntu:~# wget http://old-releases.ubuntu.com/ubuntu/pool/universe/p/php-mcrypt/php5-mcrypt_5.2.6-0ubuntu2_amd64.deb
--2012-02-08 22:32:14--  http://old-releases.ubuntu.com/ubuntu/pool/universe/p/php-mcrypt/php5-mcrypt_5.2.6-0ubuntu2_amd64.deb
old-releases.ubuntu.com をDNSに問いあわせています... 91.189.88.140
old-releases.ubuntu.com|91.189.88.140|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 16698 (16K) [application/x-debian-package]
`php5-mcrypt_5.2.6-0ubuntu2_amd64.deb' に保存中

100%[======================================>] 16,698      27.8K/s   時間 0.6s  

2012-02-08 22:32:16 (27.8 KB/s) - `php5-mcrypt_5.2.6-0ubuntu2_amd64.deb' へ保存完了 [16698/16698]

root@ubuntu:~#
root@ubuntu:~# dpkg -i php5-mcrypt_5.2.6-0ubuntu2_amd64.deb
	:
root@ubuntu:~#

PHP エクステンションの PECL インストール

apt インストールできない PHP エクステンションは、PECL でインストールします。

root@ubuntu:~# aptitude install php-pear php5-dev libssh2-1-dev -svy | grep -v ^C
	:
Inst m4 (1.4.13-3 Ubuntu:10.04/lucid)
Inst autoconf (2.65-3ubuntu1 Ubuntu:10.04/lucid)
Inst autoconf2.13 (2.13-59 Ubuntu:10.04/lucid)
Inst autotools-dev (20090611.1 Ubuntu:10.04/lucid)
Inst automake1.4 (1:1.4-p6-13.1 Ubuntu:10.04/lucid)
Inst binutils (2.20.1-3ubuntu7.1 Ubuntu:10.04/lucid-updates)
Inst gcc-4.4 (4.4.3-4ubuntu5 Ubuntu:10.04/lucid)
Inst gcc (4:4.4.3-1ubuntu1 Ubuntu:10.04/lucid)
Inst libc-dev-bin (2.11.1-0ubuntu7.8 Ubuntu:10.04/lucid-updates)
Inst linux-libc-dev (2.6.32-38.83 Ubuntu:10.04/lucid-updates)
Inst libc6-dev (2.11.1-0ubuntu7.8 Ubuntu:10.04/lucid-updates)
Inst libssh2-1-dev (1.2.2-1 Ubuntu:10.04/lucid)
Inst zlib1g-dev (1:1.2.3.3.dfsg-15ubuntu1 Ubuntu:10.04/lucid)
Inst libssl-dev (0.9.8k-7ubuntu8.6 Ubuntu:10.04/lucid-updates)
Inst libtool (2.2.6b-2ubuntu1 Ubuntu:10.04/lucid)
Inst php-pear (5.2.10.dfsg.1-2ubuntu6.5 php5.2:10.04/lucid)
Inst shtool (2.0.8-3 Ubuntu:10.04/lucid)
Inst php5-dev (5.2.10.dfsg.1-2ubuntu6.5 php5.2:10.04/lucid)
root@ubuntu:~#
root@ubuntu:~# aptitude install php-pear php5-dev libssh2-1-dev
	:
root@ubuntu:~#
root@ubuntu:~# pecl install -f ssh2
WARNING: failed to download pecl.php.net/ssh2 within preferred state "stable", will instead download version 0.11.3, stability "beta"
downloading ssh2-0.11.3.tgz ...
Starting to download ssh2-0.11.3.tgz (23,062 bytes)
........done: 23,062 bytes
5 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
libssh2 prefix? [autodetect] :
	:
Build process completed successfully
Installing '/usr/lib/php5/20060613/ssh2.so'
install ok: channel://pecl.php.net/ssh2-0.11.3
configuration option "php_ini" is not set to php.ini location
You should add "extension=ssh2.so" to php.ini
root@ubuntu:~#
root@ubuntu:~# aptitude install libcurl3-openssl-dev
	:
root@ubuntu:~#
root@ubuntu:~# pecl install pecl_http
downloading pecl_http-1.7.1.tgz ...
Starting to download pecl_http-1.7.1.tgz (174,098 bytes)
.....................done: 174,098 bytes
71 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
whether to enable cURL HTTP requests; specify libcurl directory [yes] :
whether to enable support for gzencoded/deflated message bodies; specify zlib directory [yes] :
whether to enable response content type guessing; specify libmagic directory [no] :
whether to depend on extensions which have been built shared [yes] :
	:
Installing '/usr/lib/php5/20060613/http.so'
install ok: channel://pecl.php.net/pecl_http-1.7.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=http.so" to php.ini
root@ubuntu:~#

PHP エクステンションのソースインストール

apt、dpkg、PECLでインストールできない PHP エクステンションはソースインストールを行います。

root@ubuntu:~# aptitude install librrd2-dev php5-dev rrdtool
	:
root@ubuntu:~# wget http://oss.oetiker.ch/rrdtool/pub/contrib/php_rrdtool.tar.gz--2012-02-08 22:46:45--  http://oss.oetiker.ch/rrdtool/pub/contrib/php_rrdtool.tar.gz
oss.oetiker.ch をDNSに問いあわせています... 213.144.138.195, 2001:1620:202d::c3
oss.oetiker.ch|213.144.138.195|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 9353 (9.1K) [application/x-tar]
`php_rrdtool.tar.gz' に保存中

100%[======================================>] 9,353       32.3K/s   時間 0.3s  

2012-02-08 22:46:48 (32.3 KB/s) - `php_rrdtool.tar.gz' へ保存完了 [9353/9353]

root@ubuntu:~# tar xfz php_rrdtool.tar.gz
root@ubuntu:~# mv rrdtool /usr/include/php5/ext
root@ubuntu:~# cd /usr/include/php5/ext/rrdtool
root@ubuntu:/usr/include/php5/ext/rrdtool# phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
root@ubuntu:/usr/include/php5/ext/rrdtool# ./configure --with-php-config=/usr/bin/php-config --with-rrdtool=/usr
	:
root@ubuntu:/usr/include/php5/ext/rrdtool# make
	:
root@ubuntu:/usr/include/php5/ext/rrdtool# make install
Installing shared extensions:     /usr/lib/php5/20060613/
root@ubuntu:/usr/include/php5/ext/rrdtool#

apache の設定

インストールした PHP エクステンションを apache に組み込みます。

root@ubuntu:~# cp -a /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini.orig
root@ubuntu:~# cat >> /etc/php5/apache2/php.ini
extension=http.so
extension=ssh2.so
root@ubuntu:~#
root@ubuntu:~# diff -u /etc/php5/apache2/php.ini.orig /etc/php5/apache2/php.ini
--- /etc/php5/apache2/php.ini.orig	2010-05-21 15:36:52.000000000 +0900
+++ /etc/php5/apache2/php.ini	2012-02-07 22:41:22.598728344 +0900
@@ -1252,3 +1252,5 @@
 ; Local Variables:
 ; tab-width: 4
 ; End:
+extension=http.so
+extension=ssh2.so
root@ubuntu:~#
root@ubuntu:~# cp -a /etc/php5/cli/php.ini /etc/php5/cli/php.ini.orig
root@ubuntu:~# cat >> /etc/php5/cli/php.ini
extension=http.so
extension=ssh2.so
root@ubuntu:~#
root@ubuntu:~# diff -u /etc/php5/cli/php.ini.orig /etc/php5/cli/php.ini
--- /etc/php5/cli/php.ini.orig	2010-05-21 15:36:52.000000000 +0900
+++ /etc/php5/cli/php.ini	2012-02-07 22:42:20.418727019 +0900
@@ -1252,3 +1252,5 @@
 ; Local Variables:
 ; tab-width: 4
 ; End:
+extension=http.so
+extension=ssh2.so
root@ubuntu:~#

Installation Guideに記載されている rrdtool の PHP エクステンションの組み込み方法は、2012/02/14 現在、対象のファイルを間違えているため注意してください。

root@ubuntu:~# cp -a /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini.orig2
root@ubuntu:~# vi /etc/php5/apache2/php.ini
root@ubuntu:~# diff -u /etc/php5/apache2/php.ini.orig2 /etc/php5/apache2/php.ini--- /etc/php5/apache2/php.ini.orig2	2012-02-07 22:41:22.598728344 +0900
+++ /etc/php5/apache2/php.ini	2012-02-08 22:52:33.009329573 +0900
@@ -1254,3 +1254,4 @@
 ; End:
 extension=http.so
 extension=ssh2.so
+extension=rrdtool.so
root@ubuntu:~#
root@ubuntu:~# cp -a /etc/php5/cli/php.ini /etc/php5/cli/php.ini.orig2
root@ubuntu:~# vi /etc/php5/cli/php.ini
root@ubuntu:~# diff -u /etc/php5/cli/php.ini.orig2 /etc/php5/cli/php.ini
--- /etc/php5/cli/php.ini.orig2	2012-02-07 22:42:20.418727019 +0900
+++ /etc/php5/cli/php.ini	2012-02-08 22:53:11.779355473 +0900
@@ -1254,3 +1254,4 @@
 ; End:
 extension=http.so
 extension=ssh2.so
+extension=rrdtool.so
root@ubuntu:~#

mod_rewrite を有効にします。

root@ubuntu:~# a2enmod rewrite
Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!
root@ubuntu:~#
root@ubuntu:~# cp -a /etc/apache2/sites-available/default /etc/apache2/sites-available/default.orig
root@ubuntu:~# vi /etc/apache2/sites-available/default
root@ubuntu:~# diff -u /etc/apache2/sites-available/default.orig /etc/apache2/sites-available/default
--- /etc/apache2/sites-available/default.orig	2011-11-03 12:28:36.000000000 +0900
+++ /etc/apache2/sites-available/default	2012-02-08 22:58:44.369354369 +0900
@@ -8,7 +8,7 @@

 		Options Indexes FollowSymLinks MultiViews
-		AllowOverride None
+		AllowOverride All
 		Order allow,deny
 		allow from all

root@ubuntu:~#

apache を再起動します。

root@ubuntu:~# service apache2 restart
 * Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
   ...done.
root@ubuntu:~#

Scalr 2.1.1 のインストール

Scalr 2.1.1 のソースコードを取得します。

root@ubuntu:~# cd /tmp/
root@ubuntu:/tmp# wget http://scalr.googlecode.com/files/scalr-2.1.1.zip
--2012-02-08 22:04:54--  http://scalr.googlecode.com/files/scalr-2.1.1.zip
scalr.googlecode.com をDNSに問いあわせています... 74.125.31.82
scalr.googlecode.com|74.125.31.82|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 17339570 (17M) [application/x-zip]
`scalr-2.1.1.zip' に保存中

100%[======================================>] 17,339,570  1.16M/s   時間 23s   

2012-02-08 22:05:17 (725 KB/s) - `scalr-2.1.1.zip' へ保存完了 [17339570/17339570]

root@ubuntu:/tmp#

アーカイブファイルを展開し、ディレクトリを /var にすべてコピーします。

root@ubuntu:/tmp# unzip scalr-2.1.1.zip
	:
root@ubuntu:/tmp# cp -a 2.1.1 /var/scalr
root@ubuntu:/tmp#

所有者や権限の変更を行います。

root@ubuntu:/tmp# cd /var
root@ubuntu:/var# chown -R www-data:www-data /var/scalr/app/cache /var/scalr/app/cron/cron.pid /var/scalr/app/etc/.passwd
root@ubuntu:/var# chmod -R 700 /var/scalr/app/cache /var/scalr/app/cron/cron.pid /var/scalr/app/etc/.passwd
root@ubuntu:/var#
root@ubuntu:/var# mkdir /var/scalr/app/cache/smarty_bin/en_US
root@ubuntu:/var# chmod 777 /var/scalr/app/cache/smarty_bin/en_US
root@ubuntu:/var# chmod 777 /var/scalr/app/etc/.passwd
root@ubuntu:/var# chmod 777 /var/scalr/app/etc/.cryptokey
root@ubuntu:/var# chown -R www-data:www-data /var/scalr/app/www
root@ubuntu:/var#

ドキュメントルートを変更します。

root@ubuntu:/var# mv www www_old
root@ubuntu:/var# ln -s /var/scalr/app/www
root@ubuntu:/var# chmod -R a+rX www
root@ubuntu:/var#

MySQL 設定

Scalr のアーカイブに含まれている sql ファイルを使用し、MySQL データベースの設定を行います。

root@ubuntu:~# echo 'CREATE DATABASE scalr;' | mysql -u root
root@ubuntu:~# mysql -u root -D scalr < /var/scalr/sql/scalr-2.1-structure.sql
root@ubuntu:~# mysql -u root -D scalr < /var/scalr/sql/scalr-2.1-init-data.sql
root@ubuntu:~#

権限の設定を行い、MySQL の root ユーザのパスワードを scalr に変更します。なお、Installation Guideに記載されている SQL 文は、2012/02/14 現在、適切ではないためエラーが出ますが、実際には権限の設定とパスワードの変更は行われています。

root@ubuntu:~# mysql -u root <<EOF
grant all privileges on scalr.* to 'scalr'@'%' identified by 'scalr';
use mysql; update user set password=password('scalr') where user='root';
flush privileges;
exit EOF
ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'exit' at line 1
root@ubuntu:~#

Scalrの設定ファイルに、MySQL の root ユーザのパスワードを記載します。

root@ubuntu:~# cp -a /var/scalr/app/etc/config.ini /var/scalr/app/etc/config.ini.orig
root@ubuntu:~# vi /var/scalr/app/etc/config.ini
root@ubuntu:~# diff -uw /var/scalr/app/etc/config.ini.orig /var/scalr/app/etc/config.ini
--- /var/scalr/app/etc/config.ini.orig	2010-09-14 14:51:54.000000000 +0900
+++ /var/scalr/app/etc/config.ini	2012-02-08 22:20:13.269324108 +0900
@@ -3,7 +3,7 @@
host = "localhost"
name = "scalr"
user = "root"
-pass = ""
+pass = "scalr"

[debug]
profiling = 1
root@ubuntu:~#

cron 設定

Installation Guideに記載されている cron 文は、実行ユーザが欠落しているため /etc/crontab に記載すると動作しません。

root@ubuntu:~# cat >> /etc/crontab
# scalr
*/4  * * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --UsageStatsPoller
*/2  * * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --Scheduler
*/15 * * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --MySQLMaintenance
*    * * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --DNSManagerPoll
*/4  * * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --Scaling
17   5 * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --RotateLogs
*/4  * * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --Poller
*/5  * * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --DBQueueEvent
*/4  * * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --RDSMaintenance
*/2  * * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --BundleTasksManager
*/2  * * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --MessagingQueue
*/2  * * * * root /usr/bin/php -q /var/scalr/app/cron/cron.php --EBSManager
*    * * * * root /usr/bin/php -q /var/scalr/app/cron-ng/cron.php --ScalarizrMessaging
*    * * * * root /usr/bin/php -q /var/scalr/app/cron-ng/cron.php --SNMPStatsPoller
#
root@ubuntu:~#

BIND の設定

BIND の設定を行います。

root@ubuntu:~# mkdir /etc/bind/client_zones
root@ubuntu:~# touch /etc/bind/client_zones/zones.include
root@ubuntu:~# chmod -R 777 /etc/bind/client_zones
root@ubuntu:~# echo '#xxxx' > /etc/bind/client_zones/zones.include
root@ubuntu:~# cp -a /etc/bind/named.conf /etc/bind/named.conf.orig
root@ubuntu:~# vi /etc/bind/named.conf
root@ubuntu:~# diff -u /etc/bind/named.conf.orig /etc/bind/named.conf
--- /etc/bind/named.conf.orig	2011-11-17 05:30:01.000000000 +0900
+++ /etc/bind/named.conf	2012-02-08 23:20:27.549348432 +0900
@@ -9,3 +9,4 @@
 include "/etc/bind/named.conf.options";
 include "/etc/bind/named.conf.local";
 include "/etc/bind/named.conf.default-zones";
+include "/etc/bind/client_zones/zones.include";
root@ubuntu:~#

Scalr のファイルを変更します。ただし、Installation Guideに記載されている対象のファイルは間違っているので注意してください。

root@ubuntu:~# cp -a /var/scalr/app/cron/class.DNSManagerPollProcess.php /var/scalr/app/cron/class.DNSManagerPollProcess.php.orig
root@ubuntu:~# vi /var/scalr/app/cron/class.DNSManagerPollProcess.php
root@ubuntu:~# diff -uw /var/scalr/app/cron/class.DNSManagerPollProcess.php.orig /var/scalr/app/cron/class.DNSManagerPollProcess.php
--- /var/scalr/app/cron/class.DNSManagerPollProcess.php.orig	2010-08-30 09:27:22.000000000 +0900
+++ /var/scalr/app/cron/class.DNSManagerPollProcess.php	2012-02-08 23:23:24.019309822 +0900
@@ -30,7 +30,7 @@

         	$remoteBind = new Scalr_Net_Dns_Bind_RemoteBind();

-        	$transport = new Scalr_Net_Dns_Bind_Transports_LocalFs('/usr/sbin/rndc', '/var/named/etc/namedb/client_zones');
+        	$transport = new Scalr_Net_Dns_Bind_Transports_LocalFs('/usr/sbin/rndc', '/etc/bind/client_zones');
            	$remoteBind->setTransport($transport);

            	$zones = $db->GetAll("SELECT id FROM dns_zones WHERE iszoneconfigmodified = '1'");
@@ -89,7 +89,7 @@

             $remoteBind = new Scalr_Net_Dns_Bind_RemoteBind();

-            $transport = new Scalr_Net_Dns_Bind_Transports_LocalFs('/usr/sbin/rndc', '/var/named/etc/namedb/client_zones');
+            $transport = new Scalr_Net_Dns_Bind_Transports_LocalFs('/usr/sbin/rndc', '/etc/bind/client_zones');
            	$remoteBind->setTransport($transport);

            	switch($DBDNSZone->status)
root@ubuntu:~#
root@ubuntu:~# cp -a /var/scalr/app/src/Scalr/Net/Dns/Bind/RemoteBind.php /var/scalr/app/src/Scalr/Net/Dns/Bind/RemoteBind.php.orig
root@ubuntu:~# vi /var/scalr/app/src/Scalr/Net/Dns/Bind/RemoteBind.php
root@ubuntu:~# diff -uw /var/scalr/app/src/Scalr/Net/Dns/Bind/RemoteBind.php.orig /var/scalr/app/src/Scalr/Net/Dns/Bind/RemoteBind.php
--- /var/scalr/app/src/Scalr/Net/Dns/Bind/RemoteBind.php.orig	2010-08-30 10:11:46.000000000 +0900
+++ /var/scalr/app/src/Scalr/Net/Dns/Bind/RemoteBind.php	2012-02-08 23:24:56.839330959 +0900
@@ -33,8 +33,6 @@
 					$this->zonesConfig[$domain_name] = $matches[0][$index];
 			}

-			if (count($this->zonesConfig) == 0)
-				throw new Exception("Zones config is empty");

 			return array_keys($this->zonesConfig);
 		}
root@ubuntu:~#

動作確認

インストールが正常に完了していれば、http://localhost/ にアクセスすると、Scalr ログイン画面が表示されます。ID:admin PW:admin でログインできるはずです。

Author

Chef・Docker・Mirantis製品などの技術要素に加えて、会議の進め方・文章の書き方などの業務改善にも取り組んでいます。「Chef活用ガイド」共著のほか、Debian Official Developerもやっています。

Daisuke Higuchiの記事一覧

新規CTA