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だけ。

したがって、バーチャルホストの設定(せってい)(した)のように()()えられました。

GCPでウェブサーバ構築チャレンジ・6【Hello World!!】_sb_01.png


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の拡張子(かくちょうし)追加(ついか)します。

GCPでウェブサーバ構築チャレンジ・6【Hello World!!】_sb_02.png

下線(かせん)のように修正(しゅうせい)


mime.confの一番下(いちばんした)にSSIで利用(りよう)する.shtmlの記述(きじゅつ)がありました。
SSIはこのままで動作(どうさ)しそうです。

GCPでウェブサーバ構築チャレンジ・6【Hello World!!】_sb_03.png

.shtmlに(かん)する設定(せってい)がデフォルトでありました。これはラッキー。



さて。
Debian(けい)のサーバで(わす)れてはいけないことがあります。
Debian(けい)のサーバは、デフォルトではapacheとcgi(けい)のモジュールが(むす)びついていません。
したがって「このサーバではCGIを(うご)かすんだ!」と明示(めいじ)(てき)にサーバに宣言(せんげん)してapacheとcgi(けい)のモジュールを(むす)びつけておく必要(ひつよう)があります。

それがこのコマンド。


sudo a2enmod cgid

cgidモジュールを有効(ゆうこう)()するコマンド。
Debianのデフォルトはcgidモジュールが有効(ゆうこう)()されていない。
ちなみに、モジュールを解除(かいじょ)するコマンドは
a2dismod。

SSIを有効(ゆうこう)にするときは、(した)のコマンドも必要(ひつよう)なので注意(ちゅうい)

sudo a2enmod include


(わす)れられがちなコマンド。
はまる(ひと)(おお)いようです。

GCPでウェブサーバ構築チャレンジ・6【Hello World!!】_sb_04.png

cgidモジュールを有効(ゆうこう)()する


already~とか表示(ひょうじ)されたら、すでにcgi(けい)のモジュールとapacheが(むす)びついているということです。

GCPでウェブサーバ構築チャレンジ・6【Hello World!!】_sb_05.png

もういちど入力(にゅうりょく)すると「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


GCPでウェブサーバ構築チャレンジ・6【Hello World!!】_sb_06.png

test.cgiをこんな(ふう)編集(へんしゅう)。CGIを使(つか)って表示(ひょうじ)するメッセージといえば、やっぱりコレしかないでしょう!


保存(ほぞん)したあと、パーミッションを実行(じっこう)可能(かのう)状態(じょうたい)変更(へんこう)して、


sudo chmod 705 test.cgi


そしてそして、ブラウザからアクセスしてcgiが(うご)くかどうか確認(かくにん)すれば……。

GCPでウェブサーバ構築チャレンジ・6【Hello World!!】_sb_07.png

やった!


おおおおっ!
(うご)いてますね(うご)いてますね。
ばんざーい!

まだドメインをとっていないので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)

PAGE UP

Google+

スタジオムーンリーフ(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.