さて今回は、サーバー構築のメジャーどころ。ウェブサーバーを構築します。
対象OS : CentOS, RH*, Fedora, FreeBSD, NetBSD, OpenBSD
※)途中 yum コマンドを使います。*BSD系OSの場合は yumの変わりにPortsツリーを使いインストールしてください。
ウェブサーバーの構築には、Apache 2.2 系列と、今をときめく PHP 5.2 系列を導入します。
■準備
・作業ディレクトリ作成
# mkdir -p /usr/local/src/web # cd /usr/local/src/web
・httpd-2.2.11.tar.gz をダウンロード
# wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.11.tar.gz
・php-5.2.8.tar.gz をダウンロード
# wget http://jp.php.net/get/php-5.2.8.tar.gz/from/jp2.php.net/mirror
■Apache2.2.*のインストール
・Apacheを展開
# tar zxvf httpd-2.2.11.tar.gz # cd httpd-2.2.11
・コンフィギュア
# ./configure --prefix=/usr/local/apache2/ --enable-so --enable-rewrite --enable-ssl
=====configure オプション詳細=====
–prefix=/usr/local/apache2/ : インストール場所を /usr/local/apache2
–enable-so : DSOモジュールを有効化
–enable-rewrite : Rewriteを有効化。(リダイレクトなど)
–enable-ssl : SSLを有効にする。
======================
■エラーがでたら・その1
... ... configure: error: in `/usr/local/src/web/httpd-2.2.11/srclib/apr': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details. configure failed for srclib/apr #
このエラーが出たら Cコンパイラが見当たらないという事なので、C コンパイラがインストールされていない可能性があります。CentOSを含む RHのクローンOS であれば、次のようにして Cコンパイラをインストールします。
# yum install -y gcc gcc-c++
インストールが完了したら、再度 configure。
■エラーがでたら・その2
... ... checking for openssl/ssl.h... no no OpenSSL headers found checking for SSL-C version... checking sslc.h usability... no checking sslc.h presence... no checking for sslc.h... no no SSL-C headers found configure: error: ...No recognized SSL/TLS toolkit detected #
このエラーは、OpenSSLのヘッダファイルが見つからない事を意味します。OpenSSLのヘッダファイルをインストールします。
# yum install -y openssl-devel
インストールが完了したら、再度 configure。
では、コンパイルします。
・コンパイル
# make
・インストール
# make install
■設定
・iptablesで80番ポートを開放 (RHのクローンの場合のみ)
# vi /etc/sysconfig/iptables
・/etc/sysconfig/iptables
# vi /etc/sysconfig/iptables
... -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT ...
↓追加
... -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT ...
・iptables を再起動
# service iptables restart
ここまで進んだら、一度動作確認を行っておきます。
・Apacheの動作確認。
# /usr/local/apache2/bin/apachectl start
ブラウザを使い、http://IPアドレス/ にアクセスしてください。
Apacheが正常に動作している事を示す「It works!」と表示されるハズです。
確認できたらプロセスを一度終了させておきます。
# /usr/local/apache2/bin/apachectl stop
・自動起動設定 – RHクローンの場合
# cp build/rpm/httpd.init /etc/rc.d/init.d/httpd # chkconfig --add httpd # chkconfig httpd on
そして、この httpd というファイルですが、$PREFIXを指定した構成でインストールした場合、httpd.conf のパスがデフォルトではなくなっているので、httpd内に記述された httpd.conf のパスがずれてしまいます。
そのせいで、「設定ファイルがありません」などとエラーを吐きますので、正確なパスへと修正してください。
このサイトページ通りにインストールした場合、httpd.conf のパスは /usr/local/apache2/conf/httpd.conf となります。
同じように httpd コマンドへのパスも修正します。
/usr/local/apache2/bin/httpd
・自動起動設定 – FreeBSD、NetBSD、OpenBSDの場合
/etc/rc.local に次の行を追加します。
# vi /etc/rc.local
========== /etc/rc.local (SSLなし) ==========
# Apache if [ -x /usr/local/apache2/bin/apachectl ]; then echo -n ' Apache start\n'; /usr/local/apache2/bin/apachectl start fi
========== /etc/rc.local (SSLあり) ==========
# Apache if [ -x /usr/local/apache2/bin/apachectl ]; then echo -n ' Apache start\n'; /usr/local/apache2/bin/apachectl startssl fi
■Apacheサーバー設定
Apache2.2から設定ファイルの配置が変わりました。
ベースの設定ファイルが $PREFIX/conf/httpd.conf というファイルで、種別ごとの詳細設定は $PREFIX/conf/extra/httpd-*.conf といったように、分割されました。
■Apacheサーバー設定 – CGIの利用
CGIを利用する場合は、httpd.conf にあります。
・httpd.conf
#AddHandler cgi-script .cgi
という行の先頭のコメントアウトを外し、有効にします。
※)この場合、Perl以外にも /bin/sh や C言語で作成したCGIも実行されます。
Perlのみに抑制したい場合は、mod_perl や File ディレクティブなどで制御してください。
■Apacheサーバー設定 – 最低限のセキュア設定。
・conf/extra/httpd-default.conf
ServerSignature Off
conf/extra/httpd-default.conf にあります、ServerSignature ディレクティブを On から Off に設定します。この ServerSignature では、404やディレクトリのインデックスを表示するページで、ApacheやOSのバージョンを出力するかを設定できます。Off とすることで出力を抑制できます。
ServerTokens ProductOnly
conf/extra/httpd-default.conf にあります、ServerTokens ディレクティブを Full から ProductOnly に設定します。 ServerTokens では、HTTPヘッダにApacheのバージョン番号を含めるかを指定します。Apacheのバージョンはセキュリティの為に、公開しない方が望ましいでしょう。
次回は、PHPをインストールします。