Apache Web Server 入門 PropStation ネットワーク管理者養成コース第 7 回 2005/1/25 うえだうえお ( 有 ) うえだうえおうぇあ http://www.ueo.co.jp
Apache Web Server http://httpd.apache.org/( 英語 ) http://www.apache.jp/( 日本語 ) 世界一のシェアを誇る高機能 WWW サーバ用ソフトウェア 各種 UNIX 及び Windows
ライセンスの問題 Apache 自体はオープンソースソフトウェア http://www.apache.jp/docs/license Windows で使用する場合は注意が必要! http://www.apache.jp/misc/windows.html Win2k professional 等ではサーバソフトウェアを動かしてはいけない事になっている
HTTP の基本 クライアント http://aa.bb.com/ HTTP リクエスト サーバ HTTP ファイル転送 index.html ブラウザ (IE) が index.html を解析して表示
Apache の基本機能 認証 アクセス制御 CGI (Common Gateway Interface) SSI (Server Side Include) SSL (Secure Socket Layer) 暗号化 認証機能 Virtual Host( 仮想ホスト ) Proxy( 代理サーバ ) DSO (Dynamic Shared Object) 各機能をモジュール化できる
実習 Apache の設定には root 権限が必要 全員に設定を経験してもらうために Cygwin を使います cygwin を少しだけ日本語化しておきましょう 付録 (49,50 ページ ) を参照
Cygwin のパッケージ 今回必要なパッケージ Editors/vim web/apache web/wget Interpreter/perl
Apache の基本設定 /etc/apache/httpd.conf ServerRoot /usr DocumentRoot /var/www/htdocs http://hostname/ と指定された時に参照される場所 CGI ディレクトリ ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" /etc/apache/srm.conf, access.conf は過去の名残
httpd.conf の基本 ディレクティブ機能を表すキーワード コマンドに似ています <Directory /> AllowOverride None </Directory> <Directory /home/> AllowOverride FileInfo </Directory>
Apache を起動 終了する 起動 /usr/sbin/apachectl start 停止 /usr/sbin/apachectl stop 再起動 /usr/sbin/apachectl restart /usr/sbin/apachectl graceful http://localhost/ にアクセスしてみると
起動 終了 RedHat 系 Linux の場合 設定を変更した場合は daemon を再起動 daemon デーモン 精霊 /etc/rc.d/init.d/httpd start /etc/rc.d/init.d/httpd stop /etc/rc.d/init.d/httpd restart
マニュアルページを見てみよう http://www.apache.jp/docs/ 実は http://localhost/manual/index.html に インストールされています 残念ながら まだ一部しか翻訳されていません 英語が得意な人は翻訳に協力しましょう http://cvs.apache.jp/docs-project/
アクセス制御 BASIC 認証 ユーザ ID とパスワードでページ閲覧を制限 もっともよく使われるが セキュリティ的には? パスワードも ID も平文で流れる DIGEST 認証 ユーザパスワードを MD5 でハッシュする ハッシュ 一方向性の符号化 BASIC 認証より安全 IE で動かなかったりする
BASIC 認証 基本設定を変える /etc/apache/httpd.conf AllowOverride AuthConfig passwd ファイルを作る DocumentRoot の外におく! /var/www/ok_users など /usr/bin/htpasswd c mypass username Configuration file を作る /etc/apache/httpd.conf /var/www/htdocs/manual/.htaccess
BASIC 認証の設定例 /etc/apache/httpd.conf( 抜粋 ) <Directory "/var/www/htdocs/manual"> Options Indexes FollowSymlinks MultiViews AllowOverride AuthConfig Order allow,deny Allow from all </Directory>.htaccess AuthType Basic AuthName "Please input user id and password" AuthUserFile /var/www/ok_users/mypass require user staff
トラブルシューティング ログを見よう エラーログ /var/log/apache/error_log アクセスログ /var/log/apache/access_log
CGI Common Gateway Interface サーバ上でプログラムを動かして動的なページを作る 掲示板 アンケート 各種申込み等 perl 等のスクリプト言語で書かれる事が多い もちろん C 言語でも書けます
CGI の設定方法 ScriptAlias CGI 用の特別のディレクトリを用意する方法 ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/ Options +ExecCGI ScriptAlias で指定した以外のディレクトリでの実行を許可する方法 <Directory /usr/local/apache/htdocs/somedir> Options +ExecCGI </Directory>
test-cgi http://localhost/cgi-bin/test-cgi が サンプルとして用意されています shell プログラムで書かれた CGI 動かしてみて プログラムと出力を比べてみよう
簡易 BBS を付けてみる Web Rescue Web お助けサイトの老舗 http://www.rescue.ne.jp/ 新型簡易 BBS 説明 http://www.rescue.ne.jp/cgi/imgbbs/ プログラム http://www.rescue.ne.jp/cgi/imgbbs/imgbbs_1.34.tar.gz 注意 : ライセンスは尊重しよう!
ツールの説明 wget コマンドラインで web サーバからファイルを取得するツール 完全な URL が判っている場合に便利 tar tape archiver. UNIX 用のソフトウェアは tar 形式で配布されている事が多い tar tvfz 圧縮されたアーカイブの中身を見る tar xvfz 圧縮されたアーカイブを展開する
簡易 BBS を付けてみる (2) ファイルの取得 wget http://www.rescue.ne.jp/cgi/imgbbs/imgbbs_1.34.tar.gz CGI ディレクトリに移動 cd /var/www/cgi-bin/ アーカイブの展開 tar xvfz /home/semixx/ imgbbs_1.34.tar.gz 権限の調整ドキュメントを参照して 権限を調整します この場合は imgbbs.cgi というプログラム中に書かれています
権限の調整 # / 任意のフォルダ / CGIが実行できる場所 # # -- /data/ <777> 1 # -- /tmp/ <777> 2 # # -- imgbbs.cgi <755> # -- imgbbs2.cgi <644> # -- imgbbs3.cgi <644> # -- imgbbs4.cgi <644> # -- cgi-lib217.pl <644> # -- jcode.pl <644> # # 1,2 このフォルダは画像のWeb 表示可能な場所である必要があります # CGI 専用 フォルダの場合 (HTMLや画像が混在できない場合) には画像を # 記録しても表示できないので 可能な位置に作成して # $base_dir $base_url $tmp_dir $tmp_url を適切に設定してください
SSI SSI(Server Side Include) 基本はCGIと同じ CGIは ユーザ側から呼び出す ( ボタンや画像として ) のに対して SSIはhtmlに埋め込まれたコマンドがサーバ側で自動実行される Options Includes <Directory "/var/www/htdocs"> Options Includes FollowSymLinks MultiViews AllowOverride AuthConfig </Directory> AddType AddType text/html.shtml AddHandler server-parsed.shtml
SSI 式アクセスカウンタ http://www.rescue.ne.jp/cgi/count/ 設置ディレクトリの作成 次ページ参照 ファイルの取得 wget http://www.rescue.ne.jp/cgi/count/count.pl wget http://www.rescue.ne.jp/cgi/count/sample/ wget http://www.rescue.ne.jp/cgi/count/sample/images/0.gif wget http://www.rescue.ne.jp/cgi/count/sample/images/1.gif ( 省略 ) wget http://www.rescue.ne.jp/cgi/count/sample/images/9.gif
設置構成 # / ホームページディレクトリ / # # -- index.shtml ( このファイルにカウンタを表示するとする ) (*) # このファイルのカウンタを表示させたい場所に次のSSIコマンドを書く. # <!--#exec cmd=./count/count.pl --> # # -- /count/ # -- count.pl ( このスクリプト ) <755> # -- /locktmp/ <777> ( 作業フォルダ ) # -- count.dat ( カウント開始数が入ったファイル ) # # -- /images/ # -- 0.gif ( 数字画像 0) # -- 1.gif ( 数字画像 1) # -- 略
count.pl を少しだけ変更 perl の実行ファイルの場所指定 #!/usr/bin/perl イメージファイルの場所指定 $graphics= http://localhost/ssi/images/
UserDir ユーザの home ディレクトリの下に ユーザ専用 DocumenRoot を作る <IfModule mod_userdir.c> UserDir public_html </IfModule> /home/semixx/public_html/index.html を作ると http://hostname/~userid/ でアクセス可能 <Directory /home/*/public_html> を設定することで アクセス制御や CGI がユーザディレクトリ単位で使用が可能
SSL による暗号化 ( さわりだけ ) mod_ssl.so をインストール make が必要 httpd.conf を細工 openssl で暗号鍵と証明書を作成 証明書は VeriSign 社に認めてもらうと 7 万円 ~13 万円 自己署名だとブラウザでワーニング 暗号自身に問題はない
SSL サーバ証明書 サイトの正当性の証明書 公開鍵暗号を使うと 本人確認ができる なりすましが非常に困難 実在する団体が設置したサイトであることを証明してくれる組織 CA=Certificate Association お墨付き発行団体 VeriSign 社等 お墨付き データの暗号化とは関係無し!
VirtualHost( さわりだけ ) http://www.ueo.co.jp/ http://miyakoji.ma/ http://ojs.ueo.co.jp/index.php 実は全部一台のホスト nslookup で確かめてみよう 使い方は man nslookup でも アクセスすると全部中身が違う!
DSO の例 PHP Dynamic (loadable) Shared Object apache への追加機能 ( モジュール ) 本体とは別途 ( 必要に応じて ) ロード いらなくなったらアンロード ( 普通はしない ) PHP サーバサイドスクリプト サーバ側で動作するスクリプト言語 CGI や SSI の様に動く 動作が軽く 複雑なアプリケーションを構築可能 http://www.nobuhito-sato.com/index.html 実は php で作られています
セキュリティ関連 セキュリティ情報のチェックは勿論 Options Indexies ディレクトリ内が丸見えになる ( 何故かデフォルト ) Options FollowSymLink シンボリックリンクを許可する 悪意のあるローカルユーザがいる場合や 設定ミスによる問題発生も
Apache, more Apache にはまだまだ機能が盛りだくさん パフォーマンスも優れています セキュリティは設定と運用次第 メンテナンス性は 基本的にキャラクタベースの設定 GUI ベースの設定ツールを作っている人もいるらしいです
今日はここまで Cygwin の終了 exit でコマンドで終了 バッチジョブを終了しますか? と聞かれたら y を選択 来週の予定 UNIX 運用管理の実際例 UNIX のセキュリティ管理 メールの第三者不正中継 etc 小規模サイトの例 DNS,SMTP,VPN (,WWW,ML...etc) 大規模サイトの例 専用アプライアンス 冗長化構成 ( クラスタ, RAID... etc)
Cygwin パッケージの導入 ( 付録 )
導入手順例 (1) setup.exeを起動 Setup.exe インストールパッケージを選択 パッケージの選択がちょっと判りにくいが インストール作業と変わりなし!
導入手順例 (2)
導入手順例 (3) 基本的に Internet から直接インストール
導入手順例 (4) ここの設定は変えない方が良いです
導入手順例 (5) パッケージのローカルでの置き場 変える必要なし
導入手順例 (6) インターネット接続方法の指定 プロキシ等あれば
導入手順例 (7) ダウンロード先サーバを指定 なるべく国内を選びましょう
導入手順例 (8) カテゴリー別のパッケージリスト ( デフォルト ) View ボタンで表示切り替え可
導入手順例 (9) パッケージを選択する ここをクリックすると切り替わる 次へ を押すと ダウンロードが開始される 途中でとまることもよくあるので サイトを変えて再挑戦
導入手順例 (10) このまま完了すると デスクトップとスタートにアイコンができる
Cygwin の起動 クリック! Cygwin.lnk
今回入っているパッケージ Editors/vim web/apache web/wget Interpreter/perl
Cygwin の日本語化 vim の日本語対応 ~/.vimrc set enc=japan ~/.inputrc (Windows2000, XP で有効 ) set convert-meta off set meta-flag on set output-meta on set kanji-code sjis
Cygwin の日本語化 bash の日本語対応 /etc/profile export LANG=ja_JP.SJIS export TZ=JST-9 export JLESSCHARSET=japanese-sjis
復習編
vi を使ってみよう (1) 起動 vi ファイル名 終了 [ESC][:][q!] 変更をキャンセルして終了 [ESC][:][wq] 変更を保存して終了 コマンドモード Esc キーを押すと vi コマンドモードに : キーを押すと ex コマンドモードに 下部にコマンドラインが現れます
vi を使ってみよう (2) 基本カーソル移動 h 左へ l 右へ k 上へ j 下へ 高速カーソル移動 w 次の単語先頭へ b 前の単語先頭へ 0 行の先頭へ $ 行の先頭へ
vi を使ってみよう (3) ページ移動 [ESC][:][ 数字 ] 指定の行番号に移動 G ファイルの末尾に移動 ^f 一ページ進む ^b 一ページ戻る
vi を使ってみよう (4) 編集コマンド i 挿入モードに入る a 今の場所の後ろに挿入 A 行の一番後ろに挿入 cw 一単語削除して挿入モードに入る x 一文字削除 dd 一行削除 yy 一行コピー (yank) p ペースト 削除された文字列は全てバッファに入る! 繰り返し コマンドの前に入力した数字分だけコマンドを繰り返す 削除系コマンドで使うときは要注意! u やり直し (undo) 普通は一回だけ
vi を使ってみよう (5) 検索コマンド / 下部に検索文字列入力行が表示される n 前回の検索の再実行 ( 下向き )» N 前回の検索の再実行 ( 上向き ) 置換コマンド [ESC][:] で ex コマンドモードに入って s/ 検索文字列 / 置換文字列 / 現在行のみ 開始行, 終了行 s/ 検索文字列 / 置換文字列 /g 一括置換 1,$s/ 検索文字列 / 置換文字列 /g 全頁一括置換