dominion525の日記

2010-02-01

Ubuntu @ OpenVz を構成

| 01:12 | Ubuntu @ OpenVz を構成を含むブックマーク

OpenVzに新しいゲストを作ることにした。

思うところあってUbuntuなんだけど、心はDebianですよ。


さて、作成済みのテンプレートはこの辺から入手できるので仕込んでおこう。

Ubuntu-09.4 しかないけどあとでアップデートすればいいので気にしない。


# vzctl create [VEID] --ostemplate [Template-Name] --hostname [hostname] --ipadd [IP_ADDR]

# vzctl set [VEID] --nameserver [NameServer] --save

[VEID] は 2101にした、以下はそれに準じる。

ひとまず、Ubuntuを最新にしよう。

# vzctl start 2101

# vzctl enter 2101


# apt-get update

# apt-get install aptitude

# aptitude update

# aptitude safe-upgrade

テンプレートaptitude が入っていない罠などにはめげず頑張る。

で、Ubuntuを9.10にしてみる。

# aptitude install update-manager-core

# do-release-upgrade

これでアップグレード完了。ものすごく簡単。でもすごい落とし穴がある。

Ubuntu 9.10はそのままでは起動できない。


ここによると、適切なスタートアップスクリプトを「ゲスト側」に書いてあげなければならないらしい。

システム系のディレクトリをマウントしてあげないといけないぽい感じだ。



ゲスト側に書かなきゃいけないので、予めVE上で作っておくか、下記のようにホストから編集してやる。

# vi /var/lib/vz/private/2101/etc/init/openvz.conf

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

# OpenVZ  Fix init sequence to have OpenVZ working with upstart

description “Fix OpenVZ”

start on startup

task

pre-start script

mount -t proc proc /proc

mount -t devpts devpts /dev/pts

mount -t sysfs sys /sys

mount -t tmpfs varrun /var/run

mount -t tmpfs varlock /var/lock

mkdir -p /var/run/network

touch /var/run/utmp

chmod 664 /var/run/utmp

chown root.utmp /var/run/utmp

if [ "$(find /etc/network/ -name upstart -type f)" ]; then

chmod -x /etc/network/*/upstart || true

fi

end script

script

start networking

initctl emit filesystem --no-wait

initctl emit local-filesystems --no-wait

initctl emit virtual-filesystems --no-wait

init 2

end script

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

これで無事起動できました

Ubuntu 9.10 にRedmineを構築する

| 01:17 | Ubuntu 9.10 にRedmineを構築するを含むブックマーク

ここでのUbuntu9.10は、OpenVz用の9.04をアップデートしたものなので、ふつうの9.10な環境とは違うかもしれません。でもまあ、大枠は一緒なはず。

RubyMySQL

Apache2 は最初から動いているので省略。

そもそもrubyがないという有り様なので、そこから。

残念ながら1.9系は見送り。その辺はあとからrvmで動かすことにしよう。

そのほか関係するものを放り込んでおく。

# ruby -v

# aptitude install ruby

# aptitude install subversion


とりあえずMySQLの準備。innodb は分割して取り扱うようにしておく。

なんでこれがデフォルトにならないのかいつも疑問だ。

ついでにruby用のドライバも追加。

# aptitude install mysql-server-5.1

# vi /etc/mysql/conf.d/extended.conf

[mysqld]

innodb_file_per_table

# mysql -u root -p

mysql> create database redmine character set utf8;

mysql> grant all privileges on redmine.* to redmine@'127.0.0.1' identified by 'PASSWORD';

mysql> grant all privileges on redmine.* to redmine@localhost identified by 'PASSWORD';

mysql> \q

# aptitude install libmysql-ruby1.8

Redmine

で、redmineを取得。そして展開。

# wget http://rubyforge.org/frs/download.php/68515/redmine-0.9.0.tar.gz

#tar xzvf redmine-0.9.0.tar.gz

# mv redmine-0.9.0 redmine

データベースの設定を変更する。

# cp config/database.yml.example config/database.yml

# vi config/database.yml

production:

adapter: mysql

database: redmine

host: 127.0.0.1

username: redmine

password: [PASSWD]

encoding: utf8

で、rakeを使って初期化

# rake db:migrate RAILS_ENV=production

と思ったら、インストールされてなかったのでいろいいろ追加してからrake

# aptitude install rake

# aptitude install rubygems

# gem install rack

# rake db:migrate RAILS_ENV=production

(in /var/rails/redmine)

rake aborted!

RubyGem version error: rack(1.1.0 not ~> 1.0.1)

(See full trace by running task with --trace)

それでもrackのバージョンがおかしいとか言われるので下記を参考に、書き換えてみた。

vi ./vendor/rails/actionpack/lib/action_controller.rb

さらに怒られるので、頑張ってみた。

# rake db:migrate RAILS_ENV=production

no such file to load -- net/https

# aptitude install libopenssl-ruby

# rake db:migrate RAILS_ENV=production

(in /var/rails/redmine)

rake aborted!

A key is required to write a cookie containing the session data. Use config.action_controller.session = { :key => "_myapp_session", :secret => "some secret phrase" } in config/environment.rb

# rake db:migrate RAILS_ENV=production

(in /var/rails/redmine)

rake aborted!

Secret should be something secure, like "[SECRET]". The value you provided, "qazwsxedcrfvtgbyhnujmkjhgfdsa", is shorter than the minimum length of 30 characters

./config/environment.rb に セッションキーを設定した上で、秘密鍵を30文字以上設定しろとのお達し。

てきとうなuuid生成して、連結して設定しておいた。

uuid はコマンドがあるので設定しておくと便利。

# aptitude install uuid

# uuid

acb20aae-0ed5-11df-ae30-43c6fdfd07b0


メール関連も設定しておく。

# cp ./config/email.yml.example ./config/email.yml

# vi ./config/email.yml

production:

delivery_method: :smtp

smtp_settings:

address: 127.0.0.1

port: 25

domain: example.com

Passenger の設定

Passengerapt にもあるけど、バージョンの追従が遅いのでここはgemから。

そのためにはコンパイル環境とかいろいろいるので、その辺も追加。

# aptitude show libapache2-mod-passenger

Package: libapache2-mod-passenger

State: not installed

Version: 2.0.3-0ubuntu2

# aptitude install build-essential

# aptitude install ruby1.8-dev

# aptitude install apache2-prefork-dev

passenger インストール

gem install passenger

Apacheモジュールを作るよ。

# /var/lib/gems/1.8/bin/passenger-install-apache2-module

(snip)

1. The Apache 2 module will be installed for you.

(snip)

LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so

PassengerRoot /var/lib/gems/1.8/gems/passenger-2.2.9

PassengerRuby /usr/bin/ruby1.8

Apache に設定するよ。

Debian流だと、ファイルが整理されてて綺麗なんです。

# cd /etc/apache2/mods-available

# vi passenger.load

LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so

# vi passenger.conf

<IfModule mod_passenger.c>

PassengerRoot /var/lib/gems/1.8/gems/passenger-2.2.9

PassengerRuby /usr/bin/ruby1.8

PassengerMaxPoolSize 6

PassengerPoolIdleTime 120

PassengerMaxInstancesPerApp 2

PassengerDefaultUser www-data

</IfModule>

# a2enmod passenger

バーチャルホスト側に設定を書き足しましょう。詳細は各自の都合に合わせて。

# cd /etc/apache2/sites-available

# vi redmine

<VirtualHost *>

ServerName redmine.example.com

ServerAdmin webmaster@example.com

DocumentRoot /var/rails/redmine/public/

RailsEnv production

<Directory /var/rails/redmine/public/ >

Options Indexes FollowSymLinks MultiViews

AllowOverride All

Order allow,deny

allow from all

</Directory>

ErrorLog /var/log/apache2/redmine/error.log

LogLevel warn

CustomLog /var/log/apache2/redmine/access.log combined

</VirtualHost>

#a2ensite redmine

地味に、mod_rewriteが無効だった、なんてことがあったので追加するとともに、再起動

# a2enmod rewrite

# /etc/init.d/apache2 reload

これで完了。

あと、管理者のアカウントは下記の通り。

  • ID: admin
  • PW:admin

これでよし、っと。

諸事情でroot で作業したけど、sudoを使った方がいいのは言うまでものないです。

追記

| 22:08 |  追記を含むブックマーク

  • MaxPoolSize とかを 古い形式(RailsMaxPoolSize)から今の形式(PassengerMaxPoolSize)に変更しました。
  • MaxPoolSizeとかは グローバル設定項目だったので、passenger.confに移しました。