Apacheをかじる
ApacheとはApacheは1995年に開発が始まり、同年の11月に1.0版がリリースされた。その後、2002年4月5日に2.0.35版がでて、1系、2系の併存が続いた。1系については、2010年1月にサポートが終了した。Apacheの歴史Apache2.42012年2月21日リリースApache2.22005年12月1日にリリースApache2.02002年4月5日にリリース。標準でSSLに対応Apache1.31.3.0は1998年7月6日にリリースHTTPのURLhttp:// www.domain.com:80/html/index.htmlhttp:// スキーム名。使用するプロトコル。www ホスト名のホスト部domain.com ホスト名のドメイン部80 ポート番号html/index.html パス名HTTPのリクエストとレスポンスHTTPでサーバとクライアントがやりとりするメッセージは基本的に以下のような形になっている。メッセージヘッダ空行(CR+LF)メッセージボディApache2のインストール(Ubuntuの場合)Apacheを含むパッケージについては、特に必要な理由がない限りパッケージとしてインストールすることが望ましい。自分でソースコードからインストールを行う場合、脆弱性等が確認された際には、更新バージョンのソースコードを取得してコンパイルし、サイドインストールしなおす必要がある。実行コマンド(インストールからサービス起動まで)・sudo apt-get install apache2・sudo service apache2 start設定ファイル(httpd.conf)CentOSでは/etc/httpd/conf/httpd.confにファイルがある。Ubuntuの場合は/etc/apache2/apache2.confが対象ファイルとなる。また、/etc/httpd/conf.dディレクトリがある場合、当該ディレクトリ配下の.confファイルが追加で読み込まれる。一般的に、サーバ全体の設定についてはhttpd.confを修正し、追加モジュール等や仮想ホストの設定は上記ディレクトリ配下に設定ファイルを追加して利用する。また、設定ファイル内では、全体設定と範囲を指定した設定の2種類が記載されている。・Global Configuration・・・ServerRoot "/etc/apache2"等・セクションコンテナ設定 ※設定の例 <Directory /> Options FollowSymLinks AllowOverride None Require all denied </Directory>ドキュメントルートWebページに使うファイルはWebサーバの特定ディレクトリに配置されている。その起点がドキュメントルート。Ubuntuの場合は/var/wwwIndexes(ファイルの一覧表示機能)<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted</Directory>デフォルトでは、ドキュメントルートで有効になっている。この場合、Webサーバの公開ディレクトリに直接アクセスを行うと、ディレクトリ内に存在するファイルの一覧が表示され、ディレクトリ内のファイルの一覧を取得することが可能となる。その場合、以下のような情報が流出するリスクがあげられる。公開を意図しないファイルバックアップファイル一時ファイル隠しファイル(ドットで始まるファイル名のファイル)ファイルの命名規則設定ファイルによるサーバ設定情報スクリプトファイルによるサーバ内部処理情報ユーザごとの公開ディレクトリの設定たとえばユーザのホームディレクトリにある「public_html」を公開ディレクトリにすることができる。ディレクトリ:/home/enokinada/public_html/index.htmlURL:http://www.server.com/~enokinada/index.html仮想ホストApacheの機能で、複数のサイトを一台のサーバで運営するための機能。http://www.domain.jpとhttp://media.domain.jpをひとつのサーバで受けるようなイメージ。アクセス制御Orderディレクティブで設定する。Order allow,deny・・・許可が先に適用し、その後拒否が上書きして適用される。リンクの制限Refererのリンク元のURLによりアクセスを制限できる。SetEnvIf Referer:***エラーメッセージの変更httpd.confの末尾に以下の設定を追記することでエラーページを差し替えることが可能。ErrorDocument 404 /404.html404:ステータスコード/404.html:エラードキュメントファイルのパス(ドキュメントルートを起点)ステータスコードについてサーバーからブラウザに返してくるコードのことをステータスコードという。100番台 案内(インフォメーション)200番台 正常処理300番台 移転通知400番台 (クライアントにおける)処理失敗500番台 サーバエラー100Continueその時点までのすべてに問題がなくクライアントはリクエストを継続してよい、またもしリクエストが完了している場合は無視してよいことを示す。101Switching Protocolこのコードはクライアントの Upgrade リクエストヘッダーのレスポンスとして送信され、サーバーはプロトコルを切り替えていることを示します。102Processing (WebDAV)このコードは、サーバーはリクエストを受け取って処理しているが、まだレスポンスを提供できないことを示します。200OKリクエスト成功201Createdリクエストは成功し、その結果新たなリソースが作成されたことを示します。これは一般的に、 POST リクエストや、一部の PUT リクエストを送信した後のレスポンスになります。301Moved Permanentlyこのレスポンスコードは、リクエストされたリソースの URI が変更されたことを示します。おそらく、新しい URI がレスポンス内で与えられるでしょう。400Bad Requestこのレスポンスは、構文が無効であるためサーバーがリクエストを理解できないことを示します。401UnauthorizedHTTP 標準では "unauthorized" (不許可) と定義されていますが、意味的にはこのレスポンスは "unauthenticated" (未認証) です。つまり、クライアントはリクエストされたレスポンスを得るためには認証を受けなければなりません。403Forbidden認証されていないなどの理由でクライアントにコンテンツのアクセス権がなく、サーバーが適切なレスポンスの返信を拒否していることを示します。 401 とは異なり、クライアントの識別子がサーバーに知られています。404Not Foundサーバーがリクエストされたリソースを発見できないことを示します。500Internal Server Errorサーバー側で処理方法がわからない事態が発生したことを示します。502Bad Gatewayこのエラーレスポンスは、リクエストの処理に必要なレスポンスを受け取るゲートウェイとして動作するサーバーが無効なレスポンスを受け取ったことを示します。HTTPの認証の仕組みHTTPの認証はログインやログアウトの状態は保持していない。Web認証が必要なページにアクセスすると、サーバはAuthorization:ヘッダーを確認できないため、認証が必要というステータスをレスポンスで返信する。ブラウザは応答の内容を元に認証ダイアログを表示する。その後、ユーザが入力した認証情報をAuthorization:ヘッダーにつけてサーバへアクセスする。ブラウザを閉じるまでは同じAuthorization:ヘッダーをつけてリクエストを送り続ける。ファイルタイプの定義Webサーバが保持するデータをクライアントが取得・処理する際には、データの種類を判断する必要がある。データ形式はWebサーバ側で設定されており、MIMEタイプで定義されている。HTMLファイル:text/htmlJPEGファイル:image/jpeg等CGIについてWebサーバは通常、特定のファイルの内容をユーザに返すが、CGIを使うことでプログラムの出力結果を返すことができる。つまり、ユーザはApacheを通じてプログラムを実行し、その結果を受け取っていることになる。CGIは結果をHTML形式で返す。CGIを使ってみるできるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応【電子書籍】[ 辻 秀典 ]価格:2263円 (2019/4/4時点)楽天で購入