2010-02-01
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
# 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
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を構築する
サーバ | |
ここでのUbuntu9.10は、OpenVz用の9.04をアップデートしたものなので、ふつうの9.10な環境とは違うかもしれません。でもまあ、大枠は一緒なはず。
Ruby と MySQL
Apache2 は最初から動いているので省略。
そもそもrubyがないという有り様なので、そこから。
残念ながら1.9系は見送り。その辺はあとからrvmで動かすことにしよう。
そのほか関係するものを放り込んでおく。
# ruby -v
# aptitude install subversion
とりあえずMySQLの準備。innodb は分割して取り扱うようにしておく。
なんでこれがデフォルトにならないのかいつも疑問だ。
# aptitude install mysql-server-5.1
# vi /etc/mysql/conf.d/extended.conf
[mysqld]
innodb_file_per_table
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
データベースの設定を変更する。
# 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 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
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
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 の設定
Passenger は apt にもあるけど、バージョンの追従が遅いのでここは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
# /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
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so
<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
<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を使った方がいいのは言うまでものないです。
