ApacheのSSL対応化と環境設定:ApacheによるWebサーバ構築(4)(4/4 ページ)
ApacheでSSLを利用するには、モジュールを組み込むかパッチを適用する必要がある。そのため、Apacheのインストール時にSSL化を行わなければならない。今回は、OpenSSLを使う方法と、Apacheインストール後に最小限やっておくべき環境設定について紹介する。
インストール後の諸設定
Apacheをインストールしても、各種の設定を行わなければ何の役にも立たない。Webサーバとしての本格的な設定については次回から詳しく解説するが、今回は最低限やっておくべき設定を幾つか紹介する。
パス(環境変数)の設定
インストール後に行っておくべき作業について、2つのポイントを紹介しておこう。
まず行っておくと便利なのが、環境変数「PATH」の設定である。前回の最後にも紹介したように、Apacheを起動するには
# /usr/local/apache/bin/apachectl start
と入力する(補足)。これは、Apacheに含まれるコマンド「apachectl」を呼び出しているのだが、そのファイルが存在するディレクトリ「/usr/local/apache/bin」を指定しているので長くなっている。環境変数PATHに「/usr/local/apache/bin」ディレクトリを指定しておけば、いちいちディレクトリを指定しなくても「apachectl」だけでコマンドを実行できるようになる。
補足 Apache-SSLをインストールすると、「apachectl」ではなく「httpsdctl」にスクリプトが変更される。
実際にPATHを設定するには、コマンドを使って一時的に設定する方法(ログアウトすると無効になってしまう)と、ログインするたびに自動設定させる方法の2つが考えられる。
1.PATHを一時的に追加する方法
PATHを一時的に追加するには、プロンプトで
# export PATH=$PATH:/usr/local/apache/bin
のようにexportコマンドを使う(bashの場合。cshは「set env」コマンド)。ただし、「export PATH=/usr/local/apache/bin」とすると既存のPATHが上書きされてしまい、基本的なコマンドさえも実行できなくなってしまう。「$PATH:」は、既存のPATHに「/usr/local/apache/bin」を追加する、という意味である。コマンドを実行したらenvコマンドで環境変数を呼び出し、PATHが追加されたことを確認しておく。
また、この方法ではログアウトすると追加したPATHは無効になってしまう。ログインするたびにPATHを自動設定させるには、次の方法を使う。
2.ログインするたびに自動設定させる方法
bashは、ログイン時にユーザーのホームディレクトリにある「.bash_profile」というファイルを読み込み、そこに書かれている設定を実行するようになっている(cshの場合は.cshrc)。
viなどを使って.bash_profileを開き、PATHを設定している行に設定したいディレクトリを追記するか、
export PATH=$PATH:/usr/local/apache/bin
を最終行に追加する(リスト1)。
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:/usr/bin:/usr/local/apache/bin BASH_ENV=$HOME/.bashrc USERNAME="" export USERNAME BASH_ENV PATH
.bash_profileの設定をすぐに有効にするには、
$ source .bash_profile
と入力し、.bash_profileの内容を再読み込みする。
コラム 環境変数の活用例
PATHを設定すればコマンドの実行は楽になる。しかし次回からは、設定のためにApacheをインストールしたディレクトリ内のファイルに頻繁にアクセスすることになる。この場合、PATH設定だけではうまくいかない。そこで、下のリストのように新しい環境変数として「APACHE_HOME」を設定し、Apacheをインストールしたディレクトリを指定する。そうすれば、「cd $APACHE_HOME」とするだけでApacheをインストールしたディレクトリに移動できるようになる。
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:/usr/bin BASH_ENV=$HOME/.bashrc USERNAME="" export USERNAME BASH_ENV PATH # Apache setting export APACHE_HOME=/usr/local/apache export PATH=$PATH:$APACHE_HOME/bin
1つのテクニックとして、ぜひとも覚えておいていただきたい。
自動起動と自動停止の設定
次はApacheの自動起動、および自動停止の設定である。Windows NTやWindows 2000でいうところのサービスの自動起動、あるいはスタートアップやautoexec.batに該当する設定を行い、いちいち起動する手間を省こうというわけだ。
LinuxがOSの起動時に行う処理については、/etc/rc.d/init.d/の中に記述されている。ファイルの内容は、そのスクリプトで起動/停止されるアプリケーションによってまちまちだが、共通点があることに気付くはずだ。どのスクリプトも引数を受け取るようになっていて、「start」や「stop」を渡されるとアプリケーションを起動/停止する。このことから、OSが起動/停止するときに「start」や「stop」を引数にしてこれらのスクリプトを実行していることが分かるだろう。もちろん、rootユーザーがこれらのシェルスクリプトを実行すれば、手動でアプリケーションを起動/停止することも可能である。
Apacheを起動/停止するためのシェルスクリプトを作ると、おおむねリスト2のようになる。
#!/bin/sh # Apacheのファイルが存在することを確認 [ -f /usr/local/apache/bin/httpd ] || exit 0 # 渡された引数に応じて処理を振り分け case "$1" in start) echo -n "Starting httpd: " /usr/local/apache/bin/httpd echo touch /var/lock/subsys/httpd ;; stop) echo -n "Shutting down http: " kill -TERM `cat /usr/local/apache/logs/httpd.pid` echo rm -f /var/lock/subsys/httpd rm -f /usr/local/apache/logs/httpd.pid ;; restart) $0 stop $0 start ;; reload) echo -n "Reloading httpd: " kill -HUP `cat /usr/local/apache/logs/httpd.pid` echo ;; *) echo "Usage: $0 {start|stop|restart|reload}" exit 1 esac exit 0
シェルスクリプトに詳しくない方でも大体の内容は分かると思うが、Apacheは「httpd」というプログラムを呼び出して起動する。要するに、このhttpdこそがApacheの本体ということなのだが、これまでの解説ではapachectlによってApacheを起動していた。
ここでapachectlではなくhttpdを呼び出すのは、apachectlも実はシェルスクリプトであり、その中でhttpdを呼び出しているからである。つまり、リスト2のようなスクリプトを自分で作らなくとも、apachectlを使えばよいというわけだ。そこで、まずは
cd /etc/rc.d/init.d ln -sf /usr/local/apache/bin/apachectl httpd
のようにして、apachectlに対するシンボリックリンクhttpdを/etc/rc.d/init.dに作成する(名前はhttpdでなくても構わない)。
しかし、これだけではOSの起動/停止とApacheの起動/停止を連動できない。なぜなら、スクリプトを実行するランレベルに合わせて、それぞれのディレクトリにファイルを配布しなければならないからである。
ランレベルをご存じない方のために補足しておくと、LinuxやUNIXはOSの起動状態に応じて7種類のレベルが設定されている(表1)。
0 | システムの停止 |
---|---|
1 | シングルユーザーモード(管理者モード) |
2 | NFSを使わないマルチユーザーモード |
3 | マルチユーザーモード |
4 | 未使用 |
5 | GUIログインを行えるマルチユーザーモード |
6 | システムの再起動 |
表1 ランレベル |
普段あまり利用しないと思うが、rootユーザーのプロンプトで「init 6」とすればOSが再起動するし、「init 1」とすればシングルユーザーモードでOSが起動する。もちろん、それぞれのレベルに応じて起動すべきアプリケーションも異なるから、ランレベルごとに起動スクリプトを格納するディレクトリも用意されている。
Linuxの場合、これらのディレクトリは、/etc/rc.dの中にrc0.dからrc6.dまで用意される。このうち、システムの再起動(レベル6)と停止(レベル0)を除くレベルがシステムの起動状態を定義することになる。しかし、管理者モード(レベル1やレベル2)はメンテナンス時に使うレベルとされているし、レベル4は未使用だからApacheを起動するランレベルは、残るレベル3とレベル5である。
従って、/etc/rc.d/init.dにスクリプトを用意したら、
# cd ../rc3.d # ln -sf ../init.d/httpd S83httpd # cd ../rc5.d # ln -sf ../init.d/httpd S83httpd
のようにして、rc3.dとrc5.dにシンボリックリンクを作成する。これで、ランレベル3およびランレベル5でOSが起動する際は、それに連動してApacheが起動するようになる。
apachectlは、「start」や「stop」を引数に受け取ってApacheを起動/停止するから、何の修正も加えずにOSの起動や停止と連動できてしまう。それ以外にも、Apacheを再起動する「restart」、起動の有無を確認する「fullstatus」「status」、サービスを停止せずに再起動するための「graceful」、設定の妥当性を確認する「configtest」などのオプションが用意されている。これらは起動/停止に限らず、手動でapachectlを呼び出す際に活用すると有益なオプションばかりだ。
Apacheのアンインストール
最後に、インストールしたApacheを削除する方法を紹介しておくとしよう。LinuxやUNIXのソフトウェアは、Windowsと違って非常にシンプルな方法でアンインストールできる。なぜなら、インストールしたファイルを削除するだけでよいからである。
この方法はMacintoshに似ているが、ある意味ではWindowsの方が特殊ともいえる。Windowsの場合、レジストリと呼ばれる環境記憶領域にアプリケーションの情報が大量に書き込まれ、OS全体に影響を与えていることもある。従って削除が困難になるのだが、LinuxやUNIXでは、コンパイルしたファイルをコピーするだけでインストールが完了する。
Apacheの場合、デフォルトのディレクトリは/usr/local/apacheだから、このディレクトリを削除すればアンインストールが完了する。ただし、自分で作成したファイルは別だから、今回紹介したパスの設定や自動起動/停止の設定は別途削除しなくてはならない。もっと厳密にいえば、オンライン・マニュアルも削除しなくてはならないところだが、そうしたファイルが悪さをする可能性はないから放置しても問題ない。気になるようであれば削除すればいいだろう。
次回からは、いよいよ設定編へと突入する。いまは、とりあえずインストールして起動だけはできている、という状態だろうから、これからが正念場というところだ。もちろん、今回インストールだけで終わってしまったSSLの設定についてもそのうち詳しく紹介するつもりだ。
- Apacheパフォーマンス・チューニングの実践
- Apacheパフォーマンス・チューニングのポイント
- ログローテーションとAnalogの導入
- Apacheのログを活用しよう
- SSLによる安全なWebサイト作り
- ユーザー認証によるアクセス制限(データベース認証編)
- ユーザー認証によるアクセス制限(ベーシック認証編)
- IP認証によるアクセス制限のテクニック
- バーチャルホストによる複数サイトの同時運用
- SSIの仕組みと有効化・制限の設定
- 仮想ディレクトリとマッピングの設定
- 絶対外せない基本設定とサーバの動作
- ApacheのSSL対応化と環境設定
- Apacheの基本インストール
- Webの仕組みとWebサーバの構造
- Apacheについて知ろう
Copyright © ITmedia, Inc. All Rights Reserved.