さくらVPSのDebianにApache+Passengerな環境作った
今まで、あれこれ考えすぎて環境構築で二の足を踏むことが多かったけど、そもそもテスト環境なわけだしひとまず動作させることを優先にしていこうかと思ってさくらVPSの環境を使い倒し中
— hiroshi oyamada (@h5y1m141) April 8, 2012
ということをつぶやいた通りなんだけど、理想的なやり方(*1)を追求しすぎてしまって、色々二の足を踏んでいたのでまずは動作する環境をつくることを優先にしました。
色々間違ってしまってなかなか動作しなかったのですが、Passengerを使ってRuby on RailsとApacheを連携させてみるという記事がとても参考になったので基本的にはこれに従って作業すれば出来ると思います。
ただ上記ブログに辿りつくまでに色々はまった所を簡単にまとめておこうかと思います
rvm使ってRuby1.9.2を導入
元々入ってるRubyのバージョンが1.8.xだったので、1.9系を使おうと思って、rvm使ってインストールしました。rvm使ってRuby1.9.2インストールは問題なかったのですが、gemsetが最初よく理解できませんでしたがこれ等を参考にして少し理解が進んだきがします
gemsetというのを使うと、例えばRailsの2.xのgemやRails3.xのgemという感じでいくつかのセットを作ることが出来るようなのでこれをうまく使えば、環境依存しそうな機能の検証とかうまく出来そうな気がしました
※ついでに、手元のMacにもrvm導入して、1.9系使えるようにした
Apacheの設定でちょっとはまる
凄い昔にApacheは勉強したことあるので、/etc/apache2以下のhttpd.confに色々書くのかと思ったら、そこには何も書かれてない・・
この時点で一瞬戸惑ったけど、同ディレクトリにapache2.confというそれっぽいファイルが見つかったのできっとここに見慣れた記述があるのかと思ったら案の定そのとおりでした。
その他、いくつかディレクトリが存在してて、ディレクトリ名&ちょっと調べた感じで以下のように理解しました。
conf.d
設定ファイル群をこのディレクトリ配下に置く。configuration directoryっぽい。
mods-availableとmods-enabled
modsの接頭辞から推測されるようにmoduleの読み込み&設定などをここで行なっているっぽい。最初これが理解できておらず、
passenger-install-apache2-module
したあとに
The Apache 2 module was successfully installed.
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /xxxxx/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /xxxxx/passenger-3.0.11
PassengerRuby /xxxxx/ruby
みたいな画面出て、上記3行をどこに書くのかかなりはまりました。
sites-availableとsites-enabled
どのディレクトリをWeb上に公開するのかといった設定ファイルをsites-availableに置く。設定ファイルをおいただけでは実際に公開されずsites-enabled以下に任意の名前でシンボリックリンクを貼ることで公開されるっぽい。
Apache+Passengerは動作してるっぽい
Railsなプロジェクトをひとまず作って、おなじみの画面は出た。
でも、Sinatraベースのアプリを公開しようと思ったら、こんな感じでエラーになったのでこのあたりもう少し勉強する必要有りそう
(*1)手元のMac上のVirtualBox上のDebianをテスト環境 で、さくらVPSを本番環境という位置づけで考えていたから、極力サーバに直接sshせず、Capistrano使ってdeployしたり、Chef使ってOSの設定(iptablesとか)や各種ミドルウェアの設定をスマートにやることを目指してました。たかだか2台のサーバ環境とはいえ、しっかりと運用しようと思ったらこうやるのが本来の姿なのかなと思っていたので。