よみがな あり|なし
Friday,November 11
GCPでウェブサーバ構築チャレンジ・5【選んでよかったDebian】 (6 photos)
GCPでウェブサーバ構築チャレンジ、5ログ目です。
前回は「GCPにはFTPサーバはいらない」いうジェネレーションギャップに驚き、WinSCPにてGCPのインスタンスとファイル転送ができるメドを立てたところまでのお話でした。
1.apacheのドキュメントルート
さて。
いよいよウェブサーバーの本体、apaheの設定をしてまいります。
デフォルトのままでも使えるには使えるのですが、デフォルトのままだとセキュリティに甘さが残るウェブサーバーとなってしまいます。
apaheは自由度の高いウェブサーバーで設定次第でどうにでもなります。そこで、デフォルトを使わないウェブサーバーの設定を目指してみたいと考えています。
apaheは基本的に、アクセスが来たら特定のファイル情報を公開する、という働きをします。この特定のファイルまでのパス(道筋)を「ドキュメントルート」と呼び、apacheの設定の大きな柱のひとつが、ドキュメントルートを定めることです。apacheはデフォルトでもドキュメントルートが1本存在するので、このままでもウェブページ(html)さえ設置すれば外部から閲覧することができます。
デフォルトのapacheのドキュメントルート(イメージ)
これはあくまでイメージです。
スタジオムーンリーフでは、将来的に1つのIPアドレスで複数のドメインにアクセスさせる「マルチドメイン」を考えています。apacheはデフォルトの設定を利用したマルチドメインの設定が可能になっています。「マルチドメイン」「ドキュメントルート」で検索できるapacheの設定方法はほとんどデフォルトの設定を利用したものです。
デフォルトの設定を利用したapacheのマルチドメイン(イメージ)
しかし、この状態ではデフォルトの設定が残ったまま、つまりセキュリティの甘さが残ったままです。
スタジオムーンリーフでは、デフォルトの設定を使わず、なおかつマルチドメインに対応した設定を目指すことにしました。
イメージとしてはこうなります。
目指す設定のイメージ
新たなドキュメントルートを設定することになるわけです。
2.RedHat系とDebian系でapacheの構造が違う
ここからはもっと専門的なお話になります。
参考にしたのはこちらのページ。
DebianでのApacheバーチャルホスト設定 サブドメインの作り方
http://trip.kobanza.me/debian/apache/virtualhost/
RedHat系のapacheを設定するなら「httpd.confを~」ということになるのでしょうけど、Debian系のapacheは構造がちょっと特殊です。
Debian系のapacheは /etc/apache2/sites-available/ 直下にドメインごとの設定ファイルを定義します。さらにDebianにはa2ensiteというコマンドがあり、それを使って /etc/apache2/sites-available/ に設定ファイルへのシンボリックリンクを張ることでその設定を有効にすればOK。
Debianのapacheは /etc/apache2/sites-available/ を利用します
3.Debian系apacheのバーチャルホスト設定
上で紹介したページのほぼそのままをやります。
大ざっぱに手順はこう。
1. /etc/apache2/sites-available 内に設定ファイルを作成
2. a2ensite コマンドで作成した設定を有効にする
(/etc/apache2/sites-enabled 内にシンボリックリンクが作成される)
コピペで申し訳ありませんが、こういうことだそうです。ドメインごとに設定ファイルを作れば作っただけ反映される仕組みになっているようで、なんてラクチン。
ドメインを解除したいときは、ディレクトリのなかから設定ファイルを削除するだけではダメ。設定を無効にするための a2dissite コマンドを打つ必要があるとのことです。
a2ensite ...指定した設定を有効にする
a2dissite ...指定した設定を無効にする
ではまず、/etc/apache2/sites-available/ に移動して…、あとでちゃんと動作確認できるように000-defaultの設定を無効にしておきます。
sudo a2dissite 000-default
須藤さんの力を借りなきゃコマンドが通りませんでした。
(※sudoコマンドを「須藤さん」と呼ぶのがマイブーム)
では、テスト用ドメインの設定ファイルを作成することにしましょう。
上で紹介しているページではexample.comとしてファイルを作成していますが、拡張子が.confでないと設定を有効にするa2ensiteコマンドが通らなかったので、拡張子は.confにしておいたほうがいいです。
さらに、このままでは書き込み権限のないディレクトリを触ることになるので、またしても須藤さんのお力を借ります。
したがって、こうして設定ファイルを書き込みます。
sudo vi example.conf
viコマンドは、サーバ上にあるテキストエディタを起動するコマンドです。
ほとんど真似っこになりますが、今後のために設定ファイルを作成します。
今後はこれを調整すればいいわけですからね。
テスト用に設定。ServerAdminは適当です。ServerNameはインスタンスの外部IP
設定ファイルを保存したら、設定に合うようにドキュメントとログファイルを格納するためのディレクトリを作ります。
sudo mkdir /var/log/apache2/test
sudo mkdir /var/www/test
ここでも須藤さんのお力をお借りしました。
須藤さまさまです。
そして、/var/www/test/ 直下に適当に作った index.html を放りみました。
TITLE「テストページ」BODY「へのへのもへじ」と書いただけのindex.htmlです。
(WinSCPを使いました。viで記述してもよかったかもしれません)
設定を有効にして、
sudo a2ensite example.conf
apacheを起動。
sudo apachectl start
ブラウザで確認すれば…。
はいっ!
インスタンスの外部IPでアクセス。TITLE「テストページ」BODY「へのへのもへじ」がちゃんと表示されました。
おおっ!!
デキター!
ドメインの数だけ設定ファイルを作ればいいというのは、直感的でわかりやすいです。マルチドメインまでの距離がぐっと近くなったような気がします。Debianを選んでよかったと思いました。
ドキュメントルート(バーチャルホスト)の設定方法もわかったところで、次回はPerlCGIの設定を詰めていきたいと思います。
4.まとめ
Debianバーチャルホストの設定
1. /etc/apache2/sites-available 内に設定ファイルを作成
2. a2ensite コマンドで作成した設定を有効にする
(/etc/apache2/sites-enabled 内にシンボリックリンクが作成される)
a2ensite ...指定した設定を有効にするコマンド
a2dissite ...指定した設定を無効にするコマンド
****.confの書式
<VirtualHost *:80>
ポート80でアクセスを受ける場合はこう
ServerAdmin
サーバ管理者のメールアドレス
ServerName
サーバのドメイン。ドメインの名前解決をする場合、ここに書かれた名前が適用される。IPアドレスでのアクセスの場合は、IPアドレスを記述する。GCPのインスタンスであれば外部IP。
DocumentRoot
ドキュメントルートを記述。デフォルトは /var/www/html/ 。
それ以外でもぜんぜんかまわないらしい。
<Directory *******>
ドキュメントルートとおなじ場所。
内部の記載については調整する必要がある。
ErrorLog **********
エラーログの保管場所。ドメインごとにディレクトリを作ると判りやすい。
LogLevel warn
あっ、しまった。書き忘れた。でも動いたけど。
あとでこっそり書き足しておこう…。
CustomLog ****** combined
アクセスログの保管場所。エラーログと同じくドメインごとにディレクトリを作ると判りやすい。
以下、書き写しとなりますが。
404にリダイレクト
存在しないドメインにアクセスがあったとき、一番うえの設定ファイルが優先的に表示される。よって、00-404.confなど404エラーにリダイレクトする設定ファイルを作って有効化しておくと便利。
00-404.confの中身の一例
<VirtualHost *:80>
ServerName dummy
Redirect 404 /
</VirtualHost>
wwwあり・なしでリダイレクト
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / http://example.com/
</VirtualHost>
こんな書式。
意図した動きをしないようなら、ServerNameとRedirectを入れ替える。
≫ NEXT_LOG GCPでウェブサーバ構築チャレンジ・6【Hello World!!】(7 photos)
≪ PREV_LOG GCPでウェブサーバ構築チャレンジ・4【SCPはあっさり風味】(8 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.