hellkite 日記と雑記とメモ。

Shiki Kazamaの駄文と音楽と、時々技術な感じ

ServersMan@VPSでRedmineを動かしてみた


スポンサーリンク


さくらサーバで動かし始めたRedmine。しかし、やたら遅く苦情が殺到*1。泣く泣くfcgi+drbによる高速化を試みるもうまく動きません。
年会費払ってでもホスティング借りようか・・・と思ったところでVPSというサービスが開始されていて、値段も安く専用サーバが用意できる・・・と聞いたので、そっちにRedmineをインストールしてみることにしました。


VPSサービスですが自分が借りたのは、ServersMan@VPSというもの。
VPSならDTI|月額467円(税抜) メモリ1GB|ServersMan@VPS
2ヶ月無料期間があるのと、CodeZineRailsの環境構築の記事があったことが大きいですね。とりあえずEntryプランを選択しました。


結果、Redmineは最新の1.0.1が動いて体感速度はさくらのレンタルサーバにおいてcgiで動作させた時の10倍〜20倍。さくらインターネットVPSを提供しているので、そっちなら同等以上の速度が出ると思いますが・・・。何にせよ、これなら文句でないレベルだと思います。


しかし、各サイトを参考にしながらRailsを設定したのですが、一筋縄ではやはり行かず・・・。結構苦戦しました。以下に手順とかメモを残しておきます。
特にハマった部分は役に立つと思います*2

開通後にやっておくこと

  1. rootでのssh禁止
  2. ServersManの停止

Railをインストール

以下を参考にやってみる。
格安VPSサーバで実用的なRuby on Railsアプリ運用環境を構築する (1/4):CodeZine

  1. /etc/hosts修正
    • これだけだと、上のサイトにある問題は解決しなかった。ServerNameの変更が必要(後述)
  2. MySQLのインストール、設定
  3. php-mysql, php-mbstringをインストール
  4. phpMyAdminの設定
    • うまくいかなかったorz 俺には・・・コマンドラインがある・・・っ!というわけで無視w
  5. gcc, glibc, gcc-c++のインストール
  6. readline-devel, opanssl-devel, zlib-develのインストール
  7. Rubyのインストール
    • これ、yumでインストールしちゃいけないのだろうか・・・?
  8. RubyGemsのインストール
  9. Railsのインストール
    • これは2.3.5をインストール
  10. gemsでmysql,dbi,dbd-mysqlをインストール
  11. httpd-develをインストール
  12. gemsでpassengerをインストール
  13. passenger-install-apache2-moduleの実行
    • Apacheの設定ファイルを編集する必要があります。(後述)

Redmineをインストール

この辺を参考にしながら・・・
CentOS5にRedmineをインストール – Apelog

  1. RedmineをDL、1.0.1
  2. config/database.ymlを編集
    • socket: /var/lib/mysql/mysql.sockを追加すること
  3. MySQLでcreate databaseを実行
    • その前に、キャラクタセットの設定をする必要あり(後述)
  4. rakeを実行
    • さくらで通らなかったrake config/initializers/session_store.rbも通りました。
  5. /etc/httpd/conf/httpd.confのNameVirtualHostの行のコメントを解除
    • 1番最後のところに書いてありました・・・。
  6. /etc/httpd/conf.d内に設定ファイルを作成
    • これはそのままでもOKでしたが、SubURIに配置したかったので変更しました。(後述)

山積みの問題を消化

上記のサイトの通りにやっただけだとうまくいかなかった部分を少し詳しく記録。
まず、passengerをインストールしときのメッセージ。

Please edit your Apache configuration file, and add these lines:

LoadModule passenger_module /opt/ruby-1.8.7-p302/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /opt/ruby-1.8.7-p302/lib/ruby/gems/1.8/gems/passenger-2.2.15
PassengerRuby /opt/ruby-1.8.7-p302/bin/ruby

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!

ちゃんと読んで追記してあげましょう・・・途中にLoadModuleがまとまって書いてあるところがあったので、その部分の1番最後に追記した。


あと、apacheのrestartでエラーが出ていたのが、/etc/hostsを修正しただけでは直らなかった。httpd.confのServerNameを変更する必要がある。

ServerName XXX.XXX.XXX.XX:80

ドメイン持ってないならIPアドレス書けって書いてあったからその通りにしてみた。そしたら、ちゃんと動いた。なんとかなるもんだ。


で、無事にRedmineが動いたけど、データベースで文字化けが起こっていることがわかった。
MySQLでstatus;を実行してみたら、キャラクタセットがlaten1になってる。あとはこのサイトを参考に。
http://wota.jp/ac/?date=20061011
マイナスかけるマイナスはプラス、は笑ったw コメントにあるとおり、この文章は読みやすくていいなぁ。絶対書けないけど。
というわけで、/etc/my.cnfを変更する。
skip-character-set-client-handshakeは追記しないことにした。
ちなみに、再起動は、

/etc/init.d/mysqld restart

数分くらいかかるっぽい。しかし、サイトにあるように全てのキャラクタセットがutf8に変わらない・・・。とりあえず、Redmine上では無事表示されるようになった。実用上問題なければ、それでいいか・・・。


最後に、将来的に複数のアプリを動かすことを見越して、http://xxx.xxx.xxx.xx/redmine/に場所を変更した。変更するには、リンクの設定と.confファイルの設定が必要。
Phusion Passenger users guide index

ln -s /var/local/rails/redmine/public /var/www/html/redmine


/etc/httpd/conf.d/redmine.confを修正

<VirtualHost *:80>
  ServerName xxx.xxx.xxx.xx
  DocumentRoot /var/www/html
  <Directory /var/www/html/>
    AllowOverride all
    Options -MultiViews
  </Directory>
  RailsBaseURI /redmine
</VirtualHost>

これで、変更できた。ほぼ考えていた通りの環境が手に入りました。
それにしても、Apachの設定とか、mod_railsとかの勉強になりました。これでApache環境でRailsアプリをデプロイするのに必要なことが一通りわかったような気がします。設定する必要性に迫られると効率よく学習ができますね^^;

その他メモ

Apacheの再起動

/etc/rc.d/init.d/httpd restart


今回設定したRubyシンボリックリンクRubyをバージョンアップしたら、これらを変更する。

ln -snf /opt/ruby-1.8.7-p299/bin/ruby /usr/local/bin/ruby
ln -snf /opt/ruby-1.8.7-p299/bin/rake /usr/local/bin/rake
ln -snf /opt/ruby-1.8.7-p299/bin/irb /usr/local/bin/irb
ln -snf /opt/ruby-1.8.7-p302/bin/gem /usr/local/bin/gem

あ、あとでSubversion入れないと・・・orz

*1:誇張あり

*2:自分がもう一度設定するときなんかに^^;