Solaris 上で Web サーバ立ち上げ
Solaris 9 上で、apache 2.0.52 等をインストールし、Web サーバを立ち上げます。
apache インストールについて解説した本、Web ページは多いですが、 このページでは、設定、運用上気を付けねばならないこと(セキュリティ等)を中心に説明している.
apache-2.0.52 インストール
apacheについて
- 参考 Web ページ: apache 日本ミラーサイト http://www.apache.or.jp/
- 参考 Web ページ: http://httpd.apache.org/download.cgi)
- ソースを取ってきて、適当なディレクトリに置く (今回は/tmpに置いた。)
- 解凍、展開
# cd /tmp # gzip -d httpd-2.0.52.tar.gz # tar -xvf httpd-2.0.52.tar
- インストール
(/tmp/httpd-2.0.52/INSTALL、/tmp/httpd-2.0.52/docs/manual/install.html に詳しい設定方法が書いてある。
今回は、何もオプションをつけずにインストールした。)
# cd httpd-2.0.52 # (echo --prefixのところは、必要があれば変更する) # ./configure --prefix=/usr/local/apache2 # make # make install
- これで/usr/local/apache2ディレクトリができる。 この下に設定ファイルなどがある。
- 設定
httpd.conf を設定します。
# cd /usr/local/apache2/conf # vi httpd.conf
このファイルを環境に合わせて編集する
- apacheのログ用のファイル,ディレクトリ等の作成
/usr/local/apache2/bin/apachectl configtest mkdir -p /usr/local/apache2/logs/archive
- apacheログ管理用のスクリプト
/usr/local/apache/bin/log.shの ファイルの中身は以下の通り#!/bin/sh d=`date "+%d"` w=`date "+%w"` y=`date "+%y"` m=`date "+%m"` log_dir=/usr/local/apache2/logs echo "log dir=" ${log_dir}/archive/access_log.${y}.${m}.${d} cp -f ${log_dir}/access_log ${log_dir}/archive/access_log.${y}.${m}.${d} mv -f ${log_dir}/error_log ${log_dir}/archive/error_log.${y}.${m}.${d} /usr/local/apache2/bin/apachectl restart >/dev/null
- apacheのログ移動用のcronの設定
apacheのログ移動用の設定は以下の通り(ファイル名は/var/spool/cron/crontabs/root)です。0 6 * * * /usr/local/apache2/bin/log.sh
- ユーザの追加
# vipw
で /etc/passwd に以下の行を追加 www:x:80:80:HTTP SERVER ::/bin/nosh - 起動、終了
# /usr/local/apache2/bin/apachectl start(stop,restart)
で起動、終了、再起動ができる
httpd.conf の設定
CGI とアクセス制御について
CGI を使いたいときは、 httpd.confに以下のような設定を追加する必要がある。 (なお、.htaccess は使わないことにしたいので、「AllowOverride None」になっています)。
<Directory "/usr/local/apache2/share/htdocs/hogehogedir"> AllowOverride None Options +ExecCGI AddHandler cgi-script cgi pl Order allow,deny Allow from all </Directory>
余分な処理を省くための処理
余分な処理を省くために httpd.conf に次のように設定します。
- 「ログの生成のたびに逆引きを行なう」ことを抑止する
HostnameLookups off
- コンテンツネゴシエーションの機能は、明示的に指定する。
DirectoryIndex index.html
Apache Jakarta
別マシンで Java Servlet を動かして(Tomcat 等)、通信を行なうようなとき に便利です。
- The Apache Jakarta Project:
https://jakarta.apache.org/index.html - JK 2 Binary Releases(JK 2.0.2)
http://sunsite.tus.ac.jp/pub/apache/jakarta/tomcat-connectors/jk2/binaries/solaris/jakarta-tomcat-connectors-jk2.0.2-solaris8-apache2.0.43.tar.gz
運用
Solaris と apache のセキュリティ
- Solaris は最新バージョンをインストールし。最新の Patch も適用する。
- 不要なサービスは停止
他のマシンを NFS マウントしないなど、運用に必要のないサービスは停止します。 少し不便になりますが、我慢します。
cd /etc/rc2.d echo NFS mv S73nfs.client a_S73nfs.client echo Web-Based Enterprise Management mv S90wbem a_S90wbem echo Power Management mv S85power a_S85power echo cssd mv S90loc.ja.cssd a_S90loc.ja.cssd echo Wnn6 mv S94Wnn6 a_S94Wnn6 cd /etc/rc3.d echo NFS server mv S15nfs.server a_S15nfs.server echo DHCP mv S34dhcp a_S34dhcp echo SNMP mv S76snmpdb a_S76snmpdb echo Solstice Enterprise Manager mv S77dmi a_S77dmi echo vold mv S81volmgt a_S81volmgt echo Samba mv S90samba a_S90samba
- ps -e を見て、不要なソフトは削除するようにします。
- /etc/inetd.conf で、不要なポートは閉じるようにします。
/etc/inetd.conf でコメントアウト
echo, discard, daytime, chargen, time, ftp, printer telnet, shell, login, exec, finger
- apache は最新版がインストールされていることを確認します。
- sendmail は最新版がインストールされていることを確認します。
sendmail を使いたい時は、最新バージョンをインストールすること。
次のようにすると、バージョンが分かる。
------------------------------------------------------------------------------------------------ > telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 bmde.db.is.kyushu-u.ac.jp ESMTP Sendmail 8.13.1/8.13.1; Tue, 5 Oct 2004 22:08:31 +0900 (JST) ------------------------------------------------------------------------------------------------
- sendmail の設定とテストに関しては、 Solaris で sendmail バージョンアッ プのWebページ等を参考に、作業を行なう。