時間が取れたので使えるねっと VPS の構築を開始。深夜にものすごく応答が悪くなって寝た。
今回の目的の一つである Redmine の構築を始める。 BTS では Trac より人気が出てきているため、使用感を押さえておく必要があること、それから自分で作るアプリケーションのタスク管理もしたいのでまずはプライベートで使用してみようという試み。最近 Git 人気に乗って使っているので Git をサポートしてくれているのも大きい。リポジトリが bare である必要があり一緒のサーバーに置いてしまおうという試み。
そんなわけで構築をし始めると、使えるねっとの Apache の Options の設定が SymLinksIfOwnerMatch を指定していた。シンボリックリンク元と先で所有者が違うとエラーになる。ということを知りました。処理が増えるけどセキュリティを向上させたい場合に使うみたい。何も考えず FollowSymLinks を使っていた。
シンボリックリンク先の所有者を変えたいけど、シンボリックリンク元の所有者が root だった場合、シンボリックリンク先の所有者をすべて root にするみたいで、そんな設定でアプリケーションを実行したらきっといけない。
Redmine は root はいけないみたいだし、これはまずいなあということでシンボリックリンク元の所有者を変えようと
chown apache:apache redmine
やってみても変わらない。あーシンボリックリンク先を変えてるだけorz
chown のヘルプを見ると -h, --no-dereference をつけてあげればいいみたいです。
chown -h apache:apache redmine
シンボリックリンク元の所有権が無事 apache になり、無事実行された。つまらないことではまりつつ、なんとか Apache + Passenger + Redmine + MySQL な環境を構築できた。
ふう・・・しかし早い早い。これなら使い続ける気になる。
それにしても構築の道は長いなあ。
使えるねっと VPS に Redmine を構築後にメモ。
インストールしたときのバージョンは以下の通り。
OS のバージョンを調べる。
$ cat /etc/redhat-release
CentOS release 5.3 (Final)
CPU アーキテクチャを調べる。
$ uname -m
x86_64
5.3 のリポジトリから yum をインストール。 yum-fastestmirror が yum に依存しているけど、まだ yum が入っていないので強制的にインストールする。
rpm -ivh yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm --nodeps
それから CentOS のリポジトリや rpmforge の ruby には 1.8.5 までしか入っていないので Redmine を動かすためのバージョンを満たせない。 ruby 1.8.7 をソースからインストール。 --prefix=/usr/bin で configure した。
Ruby をインストールできたところで gems もインストールして、必要なライブラリをインストール。
Ruby/passenger に必要なライブラリを yum からインストール。 gcc は Ruby をインストールするよりも前に入れた。でないと make できない。 zlib/openssl は $RUBY_SRC/ext で make install するため。
sqlite はおまけ。依存関係がクリアできたところで passenger の apache モジュールを作成する。
$ sudo passenger-install-apache2-module
Redmine に必要な Apache 設定ファイルを作成する。 httpd.conf の設定をみてみると
Include conf.d/*.conf
という記述があり conf.d に入れておけば勝手に include してくれるみたいなので redmine.conf ファイルを conf.d に作成。多分 httpd.conf には修正だけで追加はするなってことだと思う。
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2 PassengerRuby /usr/bin/ruby RailsBaseURI /redmine
サブドメインで運用するわけではないので、 VirtualHost を利用せず直接 RailsBaseURI で Rails アプリケーションのルートを指定。今のままだと他の Rails アプリケーションは同時に運用できないんだろうなあ。
そして MySQL にログインして redmine データベースをつくって権限を与える。その前に /etc/my.cnf に encoding の設定をしておくと Redmine の言語対応するときにエラーにならない。
それから Redmine の database.yml を設定。
production: adapter: mysql database: redmine host: localhost username: hoge password: hoge encoding: utf8 socket: /var/lib/mysql/mysql.sock
socket の生成場所を指定する。 my.cnf で変更したらそれに合わせる。
DB を構築。それから言語に対応したデータをテーブルにロードする。
$ rake db:migrate RAILS_ENV=production $ rake load_default_data RAILS_ENV=production
ENV['RAILS_ENV'] ||= 'production'
production で動作するようにコメントアウト。
/var/www/vhosts/default/htdocs 直下に redmine アプリケーションの public ディレクトリへシンボリックリンクを作成する。所有者には apache ユーザー/グループを割り当てる。
Apache を再起動して多分動く。色々試行錯誤しながらだったので、何か抜けていて動かなくてもごめんなさい。仕事なら怒られますね。