Apacheについて
Apache HTTP Server(アパッチ エイチティーティーピー サーバ)は、フリーのオープンソースのWebサーバです。
Apache はApacheソフトウェア財団の支援のもと、開発者のオープンコミュニティによって開発・保守されています。
Apacheは「httpd」というデーモンで構成されています。
構築環境
- CentOS Linux release 8.2.2004 (Core)
- httpd 2.4.37-21:本体
- httpd-tools 2.4.37-21:関連ツール群
- httpd-devel 2.4.37-21:開発ツール、モジュール
- httpd-manual 2.4.37-21:httpdのマニュアル
- ルータで「ポート 80」を開放
ルータのポート開放でHTTP通信を受け入れる
Apacheによるhttpサーバーの構築を行う前に、サーバー側NWのルータのポートを開放して、外部からの通信がサーバーに届くようにします。
http通信で使われるポート番号は「80」になります。
ポートの設定方法はルータによって違いますが、概ね下記のような感じです。
プロトコル | TCP / UDP |
開始ポート番号 | 80 |
終了ポート番号 | 80 |
サーバーのローカルアドレス | 192,168.x.x |
▼通信イメージ
▼ルータの設定イメージ
Apache(httpd)の関連パッケージを確認
CentOS 8 では dnf コマンドを利用してパッケージ情報検索やインストール、削除を行うことができます。
パッケージファイルが管理されているダウンロードサーバーをリポジトリと呼び、新規でリポジトリを追加することで、ダウンロードできるファイルの種類を増やすことが可能です。
command # dnf list | grep httpd centos-logos-httpd.noarch 80.5-2.el8 BaseOS httpd.x86_64 2.4.37-21.module_el8.2.0+494+1df74eae AppStream httpd-devel.x86_64 2.4.37-21.module_el8.2.0+494+1df74eae AppStream httpd-filesystem.noarch 2.4.37-21.module_el8.2.0+494+1df74eae AppStream httpd-manual.noarch 2.4.37-21.module_el8.2.0+494+1df74eae AppStream httpd-tools.x86_64 2.4.37-21.module_el8.2.0+494+1df74eae AppStream keycloak-httpd-client-install.noarch 1.0-2.el8 AppStream libmicrohttpd.i686 1:0.9.59-2.el8 BaseOS libmicrohttpd.x86_64 1:0.9.59-2.el8 BaseOS python3-keycloak-httpd-client-install.noarch 1.0-2.el8 AppStream
▼httpd本体と関連パッケージのインストール
「-y」オプションを指定すると、インストール可否の確認で「yes」となり自動的にインストールが開始します。
command # dnf install -y httpd # dnf install -y httpd-tools # dnf install -y httpd-devel # dnf install -y httpd-manual
▼インストール確認
command # dnf list --installed | grep httpd centos-logos-httpd.noarch 80.5-2.el8 @BaseOS httpd.x86_64 2.4.37-21.module_el8.2.0+494+1df74eae @AppStream httpd-devel.x86_64 2.4.37-21.module_el8.2.0+494+1df74eae @AppStream httpd-filesystem.noarch 2.4.37-21.module_el8.2.0+494+1df74eae @AppStream httpd-manual.noarch 2.4.37-21.module_el8.2.0+494+1df74eae @AppStream httpd-tools.x86_64 2.4.37-21.module_el8.2.0+494+1df74eae @AppStream
command ▼WEB用ユーザー作成 # useradd www # passwd www
▼WEBページ設置のドキュメントルート用ディレクトリ作成
command # mkdir -p /home/www/public_html/cgi-bin # chown -R www.www /home/www # chmod -R 777 /home/www # ls -lrt /home/www drwx------ 7 www www 133 1月 23 2013 Maildir drwxrwxrwx 26 www www 4096 5月 20 21:21 public_html
Apacheのコンフィグ設定
command # vi /etc/httpd/conf/httpd.conf
httpd.conf
▼サーバー管理者のメールアドレスを変更。
ServerAdmin root@localhost
↓
ServerAdmin info@hoge1.com
▼キープアライブの有効化
クライアントからの要求でコンテンツを提供した後もコネクションを閉じずに次の要求に対してすぐに応答できるようにする機能です。
WEBページは画像やHTMLファイルなど多くのファイルで構成されていますが、ファイルごとにTCP接続の開始 / 切断を行うのは非効率のため、KeepAliveを利用して1回のコネクションで複数のファイルを読み込めるようにすることで、サーバーのパフォーマンスを向上させます。
KeepAlive On
▼1回のKeepAliveで受け付けるリクエスト数
MaxKeepAliveRequests 100
ココがポイント
MaxKeepAliveRequestsの設定値を増やすと処理できるリクエスト数が多くなりますが、ほかの接続が割り込むタイミングが遅れることになります。
1ページの読み込みが完了したらKeepAliveを終了するように、1ページあたりの最大ファイル数より少し多い数値で設定するとベストなのです。
▼KeepAliveの維持秒数
Max値と同じようにこちらも1ページあたりのファイル転送秒数より少し多い値で設定しましょう。
KeepAliveTimeout 5
▼HTTP接続で使用するドメインとポートの設定
下記行のコメントアウトを外し、ドメインを入力します。
#ServerName www.example.com:80
↓
ServerName hoge1.com:80
▼WEBサーバーのルートディレクトを設定
最後に「/」スラッシュは入れません。
DocumentRoot "/var/www/html"
↓
DocumentRoot "/home/www/public_html"
▼Apacheの実行ユーザーを変更
デフォルトではApache起動時のUserとGroupはapacheユーザーになっているのでwwwユーザーに変更します。
User www
Group www
▼404発生時の処理を変更
WEBアクセスされた際、ファイルが存在しない場合にディレクトリの一覧が表示されるのを防ぐ設定です。
「-」ハイフンを足す感じです。
Options Indexes FollowSymLinks
↓
Options -Indexes FollowSymLinks
▼CGIの置き場所を設定
最後に「/」スラッシュを入れる。
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
↓
ScriptAlias /cgi-bin/ "/home/www/public_html/cgi-bin/"
▼設置先ディレクトリの設定変更
CGIディレクトリのパスの変更と、OptionにCGIの設定を記入。
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
↓↓↓
<Directory "/home/www/public_html/cgi-bin">
AllowOverride None
Options Indexes FollowSymLinks ExecCGI
Order allow,deny
Allow from all
▼ディレクトリ全体の設定
「Options」を「All」で、全ての機能(SSI等)を使えるように設定。
「AllowOverride」を「All」で、ユーザが自由に「.htaccess」 による 設定変更を許可。
Options FollowSymLinks
AllowOverride None
↓↓↓
Options All
AllowOverride All
▼.htaccessと.htpasswdを許可
<Files ".ht*">
Require all granted
</Files>
▼文字コードを変更
AddDefaultCharset UTF-8
↓
AddDefaultCharset shift_js
▼perlを使えるように「.pl」を追記
#AddHandler cgi-script .cgi
↓
AddHandler cgi-script .cgi .pl
▼MIME(マイム)タイプの設定
拡張子の関連付けの設定だが、ブラウザに応じて音声ファイルを使い分けるなどしない場合は設定しなくても良いです。
AddType audio/mpeg mp3
AddType audio/mp4 m4a
AddType audio/ogg ogg
AddType audio/ogg oga
AddType audio/webm webma
AddType audio/wav wav
AddType video/mp4 mp4
AddType video/mp4 m4v
AddType video/ogg ogv
AddType video/webm webm
AddType video/webm webmv
ココがポイント
「audio/mpeg mp3」の例だとmp3」の拡張子は「audio/mpeg」のMIMEタイプとしてデーターを送信するという意味なのです。
Apacheの起動設定
▼Apache起動
command # systemctl start httpd
▼Apacheの自動起動設定
command # systemctl enable httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
▼自動起動設定の確認
command # systemctl is-enabled httpd enabled
enabled になっていればサーバー再起動で自動で敵にサービスが起動します。
▼Apache起動後確認
command # systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/httpd.service.d └─php-fpm.conf Active: active (running) since Sat 2020-11-14 02:45:56 JST; 1h 4min ago
接続試験
▼ブラウザでアクセス
http://example.com
テストページが表示されればOK。
▼CharaSet確認
command # curl -I 192.168.0.90 HTTP/1.1 200 OK Date: Fri, 13 Nov 2020 19:01:05 GMT Server: Apache/2.4.37 (centos) OpenSSL/1.1.1c Content-Type: text/html; charset=UTF-8