====== Apache HTTP Server ======
このページはUbuntuにおけるApache HTTP Server(以下:Apache)の説明になっています。
{{:ubuntu:logo_apache.png?400|Apacheのロゴ}}
----
===== Apacheの基本機能 =====
  * HTTP/1.1のサポート
  * HTTP/2のサポート
  * CGI SSI などの動的コンテンツの実行
  * VirtualHost機能
  * Proxyサーバー機能
  * 認証機能
  * SSLによる暗号化通信
===== Apacheのインストール =====
$ sudo apt install apache2
==== サービスの確認 ====
Webブラウザを起動して「http://localhost/」または「http://127.0.0.1/」(自分自身に設定されたIPアドレス)にアクセスする。
===== Apacheの概要 =====
Apacheの基本的な機能は「core」にある。これに必要なモジュールを追加することで用途に適したWebサーバーが構築される。
==== 静的モジュール ====
Apacheのプログラム本体に組み込まれているモジュール
\\ 
==== 動的モジュール ====
Apacheを再コンパイルすることなく動的に組み込めるモジュール。通常ディストリビューションは殆どのモジュールを動的モジュールにしている。
※モジュールのパッケージ名の多くは「libapache2」という名前で始まる。
\\ 
=== 動的モジュールの置かれている場所 ===
**「/lib/apache2/modules」**
\\ 
==== モジュールの確認 ====
組み込まれている静的モジュールの確認
$ apachectl -l
現在、有効になっているすべてのモジュールの確認
$ apachectl -M
\\ 
===== Apacheの基本制御 =====
Ubuntuではサービスを管理する「systemd」がサービスの起動や停止を制御する。「systemd」に処理の要求などを行うには「systemctl」コマンドを使用する。
==== systemctlによる制御 ====
Apacheを開始する
$ sudo systemctl start apache2.service
※「.service」は省略可。(以下省略)
Apacheを停止する
$ sudo systemctl stop apache2
Apacheの設定ファイルを再読み込みする
$ sudo systemctl reload apache2
Apacheを再起動する
$ sudo systemctl restart apache2
Apacheの動作状況を確認する
$ sudo systemctl status apache2
※「Active:」の項目が「active (running)」となっていれば動作中。「inactive (dead)」となっていれば停止している。
Apacheの自動起動
$ sudo systemctl enable apache2
Apacheの自動起動の無効化
$ sudo systemctl disable apache2
\\ 
===== Apacheの基本事項 =====
==== ドキュメントルートの場所 ====
**「/var/www/html」**
\\ 
==== 設定・関連ファイルの場所 ====
**「/etc/apache2」(基本的な設定ファイルが置かれるディレクトリ)**
\\ 
**「/etc/apache2/apache2.conf」(メインの設定ファイル)**
※最初にこの設定ファイルが読み込まれ、ここから他の設定ファイルも読み込まれるようになっている
※他の設定ファイル…「ports.conf」と「-enabled」で終わるディレクトリにある設定ファイルが読み込まれる
\\ 
==== 設定ファイルの形式 ====
テキストにより記述される。1行につきひとつの「ディレクティブ」と呼ばれる指示が記述される。「#」で始まる行はコメントとみなされ無視される。指示の範囲の限定には「<」「>」が使用される。(からなど)
==== 設定ファイルの構成 ====
**「/etc/apache2/conf-available/」**
グローバル構成フラグメントの設定ディレクトリ(全ての設定ファイル)
\\ 
**「/etc/apache2/conf-enabled/」**
グローバル構成フラグメントの設定ディレクトリ(有効化された設定ファイル)
\\ 
**「/etc/apache2/envvars」**
apacheの環境変数の設定が記述されているファイル
\\ 
**「/etc/apache2/magic」**
Apacheが拡張子を見てファイルの種類を判別するためのファイル
\\ 
**「/etc/apache2/mods-available/」**
モジュールの設定ディレクトリ(全ての設定ファイル)
\\ 
**「/etc/apache2/mods-enabled/」**
モジュールの設定ディレクトリ(有効化されたモジュール設定ファイル)
\\ 
**「/etc/ports.conf」**
ポートに関する設定(デフォルトでは80が設定されている)
\\ 
**「/etc/apache2/sites-available/」**
VertualHostの設定ディレクトリ(全ての設定ファイル)
\\ 
**「/etc/apache2/sites-enabled/」**
VirtualHostの設定ディレクトリ(有効化されたホスト設定ファイル)
\\ 
**「/etc/apache2/conf.d/」**
Apacheの設定を追加するためのファイルを置くディレクトリ
\\ 
===== Apacheの基本設定 =====
**既存の設定ファイルは書き換えない。**
メインの設定ファイル「apache2.conf」がenabledディレクトリのconfファイル(モジュールに関してはloadファイルも)を読み込む。
※有効化された設定ファイルが読み込まれる。
新規サイト設定はavailableディレクトリにconfファイルを作成し有効化する。有効化されたconfファイルのシンボリックリンクがenabledディレクトリに作成される。
==== 設定ファイルの有効化と無効化のコマンド ====
|< 100% 40% 30% 30%>|
^  ディレクトリ  ^  有効化  ^  無効化  ^
|  conf  |  a2enconf  |  a2disconf  |
|  mods  |  a2enmod  |  a2dismod  |
|  sites  |  a2ensite  |  a2dissite  |
==== 設定ファイルが読み込まれる順序 ====
1~7の順番でファイルが読み込まれる。
|< 100% 5% 25% 70%>|
^    ^  設定ファイル  ^  概要  ^
|  1  | apache2.conf          | 全体で共通の設定(設定ファイルのパスやエラーログの指定)  |
|  2  | mods-enabled/*.load   | モジュールのロード  |
|  3  | mods-enabled/*.conf   | ロードされたモジュールの基本的な設定  |
|  4  | ports.conf            | ポート番号の設定  |
|  5  | apache2.conf          | 各ディレクトリの基本的な設定。ログの形式の設定など  |
|  6  | conf-enabled/*.conf   | 一般的な設定(文字エンコーディングやエラーページ、セキュリティなど)  |
|  7  | sites-enabled/*.conf  | バーチャルホスト(複数ドメインの運用)に関する設定  |