====== 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 | バーチャルホスト(複数ドメインの運用)に関する設定 |