CONTENTS
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)の関連パッケージを確認
1 2 3 4 5 6 7 8 9 10 11 12 |
# 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本体と関連パッケージのインストール
1 2 3 4 |
# dnf install -y httpd # dnf install -y httpd-tools # dnf install -y httpd-devel # dnf install -y httpd-manual |
▼インストール確認
1 2 3 4 5 6 7 8 |
# 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 |
▼WEB用ユーザー作成
1 2 |
# useradd www # passwd www |
▼WEBページ設置のドキュメントルート用ディレクトリ作成
1 2 3 4 5 6 7 |
# 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のコンフィグ設定
1 |
# vi /etc/httpd/conf/httpd.conf |
httpd.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
▼サーバー管理者のメールアドレスを変更。 ServerAdmin root@localhost ↓ ServerAdmin info@hoge1.com ▼キープアライブの有効化 クライアントからの要求でコンテンツを提供した後もコネクションを閉じずに次の要求に対してすぐに応答できるようにする機能です。 WEBページは画像やHTMLファイルなど多くのファイルで構成されていますが、ファイルごとにTCP接続の開始 / 切断を行うのは非効率のため、KeepAliveを利用して1回のコネクションで複数のファイルを読み込めるようにすることで、サーバーのパフォーマンスを向上させます。 KeepAlive On ▼1回のKeepAliveで受け付けるリクエスト数 MaxKeepAliveRequests 100 [st-minihukidashi fontawesome="" fontsize="80" fontweight="" bgcolor="#3F51B5" color="#fff" margin="0 0 0 -6px"]ココがポイント[/st-minihukidashi] [st-cmemo fontawesome="fa-hand-o-right" iconcolor="#3F51B5" bgcolor="#E8EAF6" color="#000000" iconsize="200"]MaxKeepAliveRequestsの設定値を増やすと処理できるリクエスト数が多くなりますが、ほかの接続が割り込むタイミングが遅れることになります。 1ページの読み込みが完了したらKeepAliveを終了するように、1ページあたりの最大ファイル数より少し多い数値で設定するとベストなのです。[/st-cmemo] ▼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起動
1 |
# systemctl start httpd |
▼Apacheの自動起動設定
1 2 |
# systemctl enable httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. |
▼自動起動設定の確認
1 2 |
# systemctl is-enabled httpd enabled |
▼Apache起動後確認
1 2 3 4 5 6 7 |
# 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確認
1 2 3 4 5 6 |
# 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 |