Server WEB (Apache)

CentOS 8にWEBサーバー(Apache)を構築

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

 

 

おすすめ

1

Windows10で構築するサーバー構成の例 知らない人も多いかと思いますが、Windows8のころからWindowsは Hyper-v(ハイパーブイ)と呼ばれるハイパーバイザ型の仮想化システムと、 ...

2

記憶域について この記事ではWindows 10 の記憶域によるストレージの作成方法について解説します。 そもそも記憶域について詳しく知りたい方は、下記の記事で解説していますので、ご覧ください。 St ...

3

概要 WordPressとAFFINGER5についての解説記事でも少し紹介しましたが、AFFINGER5には270以上のタグ機能があります。 あまりにも数が多く探すのが大変なので、効果一覧を作っておき ...

4

ディレクションを担当した世界遺産のガイドアプリより、ムービー用のBGMを1曲担当しました。 Misumi-nishikou It is BGM created for app video. sound ...

5

こちらはプライベートで作成したYoutube投稿用サイクリングムービーのBGMです。 EDM Sound-2 EDM sound for my Youtube. soundcloud.com

-Server, WEB (Apache)