よみがな あり|なし
Saturday,November 12
GCPでウェブサーバ構築チャレンジ・6【Hello World!!】 (7 photos)
GCPでウェブサーバ構築チャレンジ、6ログ目です。
前回はLinux/Debianのapache2のバーチャルホストの設定方法を確認しました。
今回は、CGIを動作させることを目指します。
1.OptionsとAllowOverRideの設定
前回のログで作成したexample.confに書かれた<Directory>~</Directory>の内部には、ルートディレクトリ以下の動作設定が記述されます。そのなかでも構成要素(ディレクティブ)OptionsとAllowOverRideの設定がとくに大事です。
| Options
ディレクトリにさまざまな機能をONにしたりOFFにしたりします。
設定は<Directory>~</Directory>の下にあるすべてのディレクトリとファイルに適用されます。
None
特に何も設定されず。特殊な機能を一切使わないとき。
All
MultiViews を除いた全ての機能が有効。
ExecCGI
cgiの実行を許可
FollowSymLinks
シンボリックリンクのリンク先をApacheがたどれるようにする
Includes
SSIの使用を許可
IncludesNOEXEC
SSIは許可するが、SSIから外部cgiを呼び出すexecを禁止
Indexes
index.htmlが見当たらないとき、ディレクトリ内ファイルの一覧を表示
MultiViews
ブラウザから送信されるヘッダにあわせてレスポンスを変える機能をONにする。
たとえば、使用言語に合わせたファイルを返すといった使い方が可能になる。
スタジオムーンリーフの場合、使いたい機能はExecCGIとIncludesです。
| AllowOverRide
.htaccessで使用できる機能を制限したりします。
None
.htaccessではなにも設定できない
All
.htaccessで設定可能なものはすべて使用可能
AuthConfig
認証関連の構成要素を使用可能に。
.htaccessを使って基本認証などをする場合はこの設定が必要
FileInfo
ドキュメントタイプやドキュメントのメタデータを制御する構成要素が使用可能に。
(よくわかりません)
Indexes
ディレクトリインデックス関連の構成要素が使用可能に。
Limit
アクセス制御関連の構成要素が使用可能に。
IPアドレスでの制限を .htaccessで設定するのに必要
Options[=Option,...]
Options構成要素が使用可能に
.htaccessで設定できるオプションをカンマ区切りで指定する事でも設定可能
.htaccessはapacheを再起動せずに設定を変更できてしまうという利便性がありますが、第三者に書き換えられるととんでもないことになる諸刃の剣。ホストの設定で.htaccessの機能を制限しておくと、リスクを低減できますし、.htaccessの使用目的を明確にすることで管理がスマートになると思います。
スタジオムーンリーフで.htaccessを使うとしたらIPアドレス制限ぐらいですかね。つまり、使うのはLimitだけ。
したがって、バーチャルホストの設定は下のように書き換えられました。
OptionsとAllowOverrideの設定をしました。
書き忘れていたLogLevelの行を追加しました。
コンソールのフォントサイズを大きくしました(見やすい!)
2.DebianのCGI、SSI設定
しかし、このままではCGIは動作しません。
CGIが動くようにするためには、これとは別に「.cgiや.plといった拡張子を持っているファイルならCGIとして認識する」という設定をせねばならないのです。
RedHat系なら「httpd.confを」という話になるんでしょうけど、Debianは違います。
Debianは /etc/apache2/mods-available/ の下にたくさんの設定モジュールを抱えており、必要に応じて***.confを編集することで設定を行います。
拡張子に関する設定は、MIME-TYPEの設定を一手に引き受ける /etc/apache2/mods-available/mime.conf で行います。
cd /etc/apache2/mods-available/
sudo vi mime.conf
219行目、cgi-scriptに関する記述を修正します。
コメントアウトを解除して、.plの拡張子を追加します。
下線のように修正
mime.confの一番下にSSIで利用する.shtmlの記述がありました。
SSIはこのままで動作しそうです。
.shtmlに関する設定がデフォルトでありました。これはラッキー。
さて。
Debian系のサーバで忘れてはいけないことがあります。
Debian系のサーバは、デフォルトではapacheとcgi系のモジュールが結びついていません。
したがって「このサーバではCGIを動かすんだ!」と明示的にサーバに宣言してapacheとcgi系のモジュールを結びつけておく必要があります。
それがこのコマンド。
sudo a2enmod cgid
cgidモジュールを有効化するコマンド。
Debianのデフォルトはcgidモジュールが有効化されていない。
ちなみに、モジュールを解除するコマンドは
a2dismod。
SSIを有効にするときは、下のコマンドも必要なので注意
sudo a2enmod include
忘れられがちなコマンド。
はまる人も多いようです。
cgidモジュールを有効化する
already~とか表示されたら、すでにcgi系のモジュールとapacheが結びついているということです。
もういちど入力すると「Module cgid already enabled」=適用済み、というメッセージが出る。安心安心♪
これでapacheを起動(あるいは再起動)すれば、すべての設定がサーバーに反映されます。
sudo apachectl start
3.CGIの動作確認
さて、さっそくCGIが動くかどうか確認してみましょう。
/var/www/test/ の下に cgiディレクトリを作って、その下にtest.cgiを作成します。
cd /var/www/test/
sudo mkdir cgi
cd cgi
sudo vi test.cgi
test.cgiをこんな風に編集。CGIを使って表示するメッセージといえば、やっぱりコレしかないでしょう!
保存したあと、パーミッションを実行可能な状態に変更して、
sudo chmod 705 test.cgi
そしてそして、ブラウザからアクセスしてcgiが動くかどうか確認すれば……。
やった!
おおおおっ!
動いてますね動いてますね。
ばんざーい!
まだドメインをとっていないのでIPアドレスによるアクセスですが、ドキュメントルート/cgi/test.cgi による実行結果が表示されました。
さあ、CGIが動くことが確認できればウェブサイト移転の目処が立ったと言えると思います。ここまでくると気が楽になります。
まだ多少の山場があるとは思いますが(ドメインをとったあとのDNS登録あたりが次の山場かと)、少しずつ進めてまいりましょう。
4.まとめ(雑感)
GCPのインスタンスでDebianを選んだのは偶然ですが、多少クセがあるもののウェブサーバーとしてはRedHat系よりDebianの方が保守管理はかなりラクになりそうな印象です。
ただ、インターネット上であまり情報が見つけられないのもDebian系でした。RedHat系(CentOSとか)の情報はぽんぽん見つかるんですが、apacheの構造が違うのでDebianでは使えないんですよ。Debian系のなかでは比較的人気のありそうなubuntuとかの情報を参考にしながらここまで進めることができました。
個人的にはLinuxのなかではシンプルな印象のDebianのほうが性に合ってるような印象です。
≫ NEXT_LOG GCPでウェブサーバ構築チャレンジ・7【ブルータス、おまえもスマホか】(8 photos)
≪ PREV_LOG GCPでウェブサーバ構築チャレンジ・5【選んでよかったDebian】(6 photos)
スタジオムーンリーフ(2005年1月開設/Since 2005)
代表者:野口 卓洋(Takuhiro Noguchi)
Add:356-0006 埼玉県ふじみ野市霞ヶ丘3-1-22-504
Twitter:@StudioMoonLeaf
Facebook:facebook.com/noguchi.takuhiro
©2017 STUDIO MOON LEAF ALL RIGHTS RESERVED.