debiancdn

AWS, Content Delivery Network and Debian

いろんな作業のためにPHP rails mod_proxy…

とある目的でPHPで構築されていたwebを徐々にrailsにかえていくというミッションをやっている.

  • プランA: 現pageのphpファイルをRAILS_ROOT/public以下にcopyし,phpとfcgiを両方動作させる方法.この問題点はphpとfcgiの両方動作させることができるか未知数なところ
  • プランB: 現pageのPHPはdynamicなpage生成につかわれているわけではないのでphpのレンダリング結果をどうにかして全部RAILS_ROOT/public以下に展開する.wgetかなんかすれば全部つくれるとは思うけど,ちょっとでかいかもしれない.
  • プランC: 現pageとは別の11011で別途はしらせたまま11011にmod_proxyする.安定性が問題かも.

まあ個人的にはA,B,Cの順に綺麗な解だと思っているが,どの方法にも一長一短がある.結局いろいろやったところAの方法で.

けっきょく RAILS_ROOT/public/.htaccessをこんなかんじにした.

AddHandler fcgid-script .fcgi
AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI -Indexes
DirectoryIndex index.cgi index.html index.shtml index.php

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R]

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} \.php
RewriteRule ^(.*)$ $1 [QSA,L]

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME}/index.html -f
RewriteRule ^(.*)$ $1/index.html [QSA,L]

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME}/index.php -f
RewriteRule ^(.*)$ $1/index.php [QSA,L]

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ $1 [QSA,L]

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^(publications|admin/.*)/?$ dispatch.fcgi [QSA,L]

この最終行がちょっと気にいらないところで,けっきょくこう書かないとPHPとの共存ができないかなしいことに.

RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

にしてしまうとなぜか[L]が効かず,PHPのほうまでこの行が有効になってしまうのでありました.

とりあえずこれ以上の深追いはしないことにした.

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中