1. ディレクティブ
    1. 設定ファイル ・/etc/httpd/conf/httpd.conf Redhat系 ・/etc/apache2/apache2.conf Debia系
    2. 通常
      1. Server Name 『ホスト名』 [:ポート番号] Apacheが稼働しているホスト名とポート番号を指定
      2. Server Root 「ディレクトリ名」 httpdが利用する設定ファイル。関連コマンド、ライブラリなどを設置するベースディレクトリを指定
      3. Server Admin 「管理者のメールアドレスを指定(エラーページなどに表示される)
      4. Listen 「IPアドレス」ポート番号 リクエストを受け付けるIPアドレスとポート番号(デフォルト80)を指定
      5. User ユーザー名|ユーザID httpd子プロセスの実行ユーザを指定。
      6. Group グループ名|グループID httpd子プロセスの実行ユーザを指定
      7. DocumentRoot ディレクトリ名 ウェブで公開するHTMLを保存する最上位のディレクトリを指定。
      8. DirectoryIndex ファイル名
        1. インデックスとして返すファイル名を(複数可)
      9. Alias ディレクトリ パス
        1. 指定の「ディレクトリ」へアクセスがあった場合、「パス」で指定したファイルやディレクトリを参照させる。
      10. UserDir ディレクトリ名|disable 一般ユーザの公開ディレクトリを指定
      11. ErrorDocument エラーコド ファイル名|文字列|URL エラー発生時の処理を指定
      12. TImeOut 秒数
        1. クライアントからリクエストを受け取ってから完了する(コンテンツを提供し終わる)までの時間の最大値を指定。
      13. KeepAlive on|off 1つのTCP接続において複数のリクエストを受け付けるのか/受け付けないのか
      14. MaxkeepAliveRequests 
        1. リクエスト数 KeepAlive時に1つの接続で受け付ける最大リクエスト数を指定(0は無限に許可)
      15. KeepAliveTimeout 秒数
        1. KeepAlive時にリライアントからのリクエストを完了してから、コネクションを切断せずに次のリクエストを受け取るまでの最大待ち時間を指定。
      16. StartServers 子プロセス数
        1. apache起動時のhttpd子プロセスの数を指定
      17. MinSpareServers 子プロセス数
        1. httpdの待機子プロセスの最小数を指定
      18. MaxSpareServers 子プロセス数
        1. httpdの待機子プロセスの最大数を指定
      19. MaxClients 子プロセス数
        1. 生成されるhttpd子プロセスの最大数を指定 (同時に応答するリクエストの最大数)
      20. MaxRequestsPerChild リクエスト数
        1. httpd子プロセスが処理するリクエストの最大数を指定。
    3. ログ関連
      1. HostnameLookups on|off
        1. クライアントのIPアドレスをログファイルに記載する際、IPアドレスを逆引きしてホスト名で記録するかどうかを指定
      2. LogFormat 書式 書式名
        1. アクセスログに使われる書式を定義
      3. Customlog ファイル名 書式名
        1. アクセスログのファイル名とLogFormatで定義された書式を指定
      4. ErrorLog ファイル名
        1. エラーログファイルを指定
      5. LogLevel レベル
        1. エラーログに記録するログのレベルを指定
      6. 格納先は/var/log/httpd
        1. デフォルトのファイル名はaccess_log error_log
    4. 外部設定ファイル用
      1. AccessFileName ファイル名
        1. 外部ファイル名を指定(デフォルトは.htaccess)
      2. AllowOverride
        1. パラメータ 外部設定ファイルによるhttpd.confの上書きを許可 指定できる主なパラメータ AutchConfing 認証関係の設定を許可 Limit Order、Allow、Denyディレクティブの設定を許可 All すべての設定変更を許可 None すべての設定の変更を禁止
    5. URL変更通知
      1. あるURLから異なるURLへリダイレクトするよう指示を出したい時。 ディレクティブに以下を設定
      2. Redirect 「ステータス」 URL-Path 「URL」
      3. 勘違いしやすい点
      4. Redirectはクラアンとへ変更通知を促す Aliasディレクトリブはサーバ側で処理を行い直接クライアントへ返す
  2. 起動方法
    1. ・apachectl Redhat系 ・apache2ctl Debian系
      1. サブコマンド start stop restart graceful  安全に再起動(プロセスがリクエストを処理している場合は それらの処理が終わるまで再起動を行わない) configtest 設定ファイルの構文をチェック
  3. 認証もしくは暗号
    1. apacheでは指定したディレクトリにアクセスがあった際、ユーザー認証を行ってアクセスを許可・拒否することができます。
    2. BASIC認証
      1. 導入のための主な手順
      2. ・htpasswdコマンドを使用しパワードファイルの作成およびユーザの登録を行う ・必要であればグループファイルの作成およびグループの登録を行う ・Apacheの設定ファイルhttpd.confまたは外部設定ファイル.htaccessでユーザ認証を行いたいディレクトリの設定を行う
      3. コマンド
        1. htpass
          1. 認証に必要なパスワードファイルの新規作成、ユーザの追加、パスワードの変更
          2. htpasswd -c パスワードファイルの新規作成      -D ユーザを削除
      4. BASIC認証に関するダィレクティブ
      5. AuthType
        1. 認証方式を指定。BASIC認証の場合はBasic
      6. AuthName
        1. 認証画面に表示されるメッセージを指定 (ダイジェストと認証と用途が違うので注意)
      7. AuthUserFile
        1. 作成したパスワードファイル名を指定
      8. AuthGroupFile
        1. 作成したグループファイル名を指定
      9. Require
        1. 認証対象とするユーザまたはグループを指定 ・ユーザの場合 Require user ユーザ名 ユーザ名・・・ ・グループの場合 Require group グループ名 グループ名・・・
      10. BASIC認証に必要なモジュール
      11. mod_auth
    3. ダイジェスタ認証
      1. 導入のための主な手順
      2. htdigestコマンドを使用しパスワードファイルの作成及びユーザの登録を行う。
      3. コマンド
        1. ダジェスト認証のユーザー管理を行う
        2. htdigest [-c] ファイル名 領域 ユーザー名
      4. ダイジェスタ認証に関するディレクティブ
      5. AuthType
        1. 認証方式を指定
      6. AuthName
        1. 認証領域を指定(BASIC認証と用途が違うので注意)
      7. AuthUserFile
        1. 作成したパスワードファイル名を指定
      8. AuthDigestGroupFile
        1. 作成したグループファイル名を指定
      9. Require
        1. 認証対象とするユーザまたはグループを指定 ・ユーザの場合 Require user ユーザ名 ユーザ名… ・グループ名 Require group グループ名 グループ名…
    4. SSL
      1. ・SSL(Secure Soket Leyer) とは公開鍵暗号方式を使ったセキュリテイ技術のこと。 ・SSLを使用すると、通信の暗号化が行われるためデータが盗聴されても内容は解読できない。  またSSLにはクライアント接続サーバの身元を確認できる仕組みが用意されているため、「なりすまし」も防げる
  4. アクセス制御
    1. Apacheではアクセス元のIPアドレス、ホスト名もしくはドメイン名を使用してアクセス制御を行うことが出来る。 アクセス制御にはApacheの設定ファイルhttpd.confのOrder、Allow、Denyディレクティブを使用。
  5. モジュール
    1. 静的モジュール
    2. ▪️静的モジュールはApacheのインストール時に組み込む必要があり、Apacheの本体に組込まれます。  configure→make→make installの流れのconfigureスクリプトのオプションで指定することができます。 ▪️メリット ・静的モジュールの利点はApache本体と一体となって動作するため、組み込みにかかる負担が少ない。 ▪️デメリット ・静的モジュールの数を増やしすぎるとapacheが肥大化し、メモリの使用量が増えてしまう。
    3. 動的モジュール
    4. ▪️動的モジュールはDSO(Dynaic Shared Object)モージュールと呼ばれる。  apxsコマンドでコンパイルとインストールをし、httpd.confファイルのLoadModuleディレクティブで有効、無効を設定することができる。 ▪️メリット  動的モジュールの利点は有効、無効の設定が簡単である。Apache本体のサイズを小さく出来るためメモリに負荷がかからない。 ▪️デメリット  欠点は静的モジュールに比べて組み込む際に時間がかかるため、動作が遅くるなるということです。
    5. モジュールディレクティブ
    6. LoadModule モジュール名 モジュールのファイル名 Apacheのモジュールを動的にロードする。
    7. mode_auth BASIC認証を提供
    8. mod_auth_digest ダイジェスト認証を提供
    9. mod_so 動的(DSO)モジュールを組込む機能を提供
    10. mod_ssl SSLによる暗号化通信を提供
    11. mod_perl Perlの機能を提供
    12. mod_php PHPの機能を提供
    13. コマンド
      1. ・️apacheに静的に組込まれているモジュールを確認 httpd オプション -l  静的に組込まれてたモージュルを表示 -M 静的・動的に組込まれモージュールを表示(apache2.2)
      2. ・インストール後に動的モジュールを組込むために使用するコマンド  apxs
  6. バーチャルホスト
    1. 名前ベースバーチャルホスト
    2. ・1つのIPアドレスに複数のドメイン名を設定する。 ・名前ベースの場合、Listenディレクティブではなく、NameVirtualHostディレクティブで受け付けるIPアドレスの設定を行う。  これで1つのIPで複数のバーチャルホストで共有することを示します。 ・異なるドメイン名で同じIPアドレスを返すようにDNSを設定(CNAMEで別名を作成)する必要がある。
    3. IPベースのバーチャルホスト
    4. ・複数のIPアドレスにそれぞれ異なるドメイン名を設定。  受け付けるIPアドレスの設定はListenディレクティブを使用。