40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

さくらVPSのDebianにApache+Passengerな環境作った



ということをつぶやいた通りなんだけど、理想的なやり方(*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なプロジェクトをひとまず作って、おなじみの画面は出た。
f:id:h5y1m141:20120409091652p:plain

でも、Sinatraベースのアプリを公開しようと思ったら、こんな感じでエラーになったのでこのあたりもう少し勉強する必要有りそう
f:id:h5y1m141:20120409091743p:plain

(*1)手元のMac上のVirtualBox上のDebianをテスト環境 で、さくらVPSを本番環境という位置づけで考えていたから、極力サーバに直接sshせず、Capistrano使ってdeployしたり、Chef使ってOSの設定(iptablesとか)や各種ミドルウェアの設定をスマートにやることを目指してました。たかだか2台のサーバ環境とはいえ、しっかりと運用しようと思ったらこうやるのが本来の姿なのかなと思っていたので。