WEBサーバー(Apache)の設定【Rocky Linux 8】

この記事は約5分で読めます。

VirtualHostを前提としたWEBサーバーをApache(httpd)で構築します。

Apache(httpd)のインストール

モジュールインストールが便利です。(バージョンも2.4固定なので、選択の必要もありません)

[root@sv1]# dnf module install httpd

初期設定

素のhttpd(VirtualHost)が動くまでの初期設定(最低限の設定)を行います。
この設定は自身の環境に合った設定にしましょう。

[root@sv1]# vi /etc/httpd/conf/httpd.conf
- Options Indexes FollowSymLinks
+ Options FollowSymLinks
- ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
- AddDefaultCharset UTF-8
+ AddDefaultCharset off
+ ServerTokens Prod
+ TraceEnable Off
+ RequestHeader unset Proxy
+ Header always unset X-Powered-By
+ Header always append X-FRAME-OPTIONS SAMEORIGIN
+ Header always set X-Content-Type-Options nosniff
+ Header always set X-XSS-Protection "1; mode=block"
+ IncludeOptional domain.d/*.conf

[root@sv1]# cd /etc/httpd/conf.d
[root@sv1]# cp autoindex.conf autoindex.conf.org
[root@sv1]# cat /dev/null > autoindex.conf
[root@sv1]# cp welcome.conf welcome.conf.org
[root@sv1]# cat /dev/null > welcome.conf

[root@sv1]# vi userdir.conf
+ #<Directory "/home/*/public_html">
+ #    AllowOverride FileInfo AuthConfig Limit Indexes
+ #    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
+ #    Require method GET POST OPTIONS
+ #</Directory>

#2コアCPUサーバーの場合(WEBサーバー以外に同居するサーバーがある場合)
[root@sv1]# vi mpm_event.conf
<IfModule mpm_event_module>
  ServerLimit              6
  ThreadLimit              30
  ThreadsPerChild          30
  StartServers             3
  MinSpareThreads          5
  MaxSpareThreads          10
  MaxRequestWorkers        180
  MaxConnectionsPerChild   0
</IfModule>

#4コアCPUサーバーの場合(WEBサーバー以外に同居するサーバーがある場合)
[root@sv1]# vi mpm_event.conf
<IfModule mpm_event_module>
  ServerLimit              10
  ThreadLimit              40
  ThreadsPerChild          40
  StartServers             3
  MinSpareThreads          5
  MaxSpareThreads          20
  MaxRequestWorkers        400
  MaxConnectionsPerChild   0
</IfModule>

[root@sv1]# cd /etc/httpd
[root@sv1]# mkdir domain.d

MPM event設定例

  • ServerLimit
    サーバプロセス数の上限
    ※MaxRequestWorkers / ThreadsPerChildの値以上になるようにする。
  • ThreadLimit
    子プロセス毎のスレッド数の上限
    ※MaxRequestWorkers / ServerLimitを目安にする。
  • ThreadsPerChild
    子プロセス毎に作成されるスレッド数
    ※ThreadLimitが同値にする。(割り当てられた共有メモリを無駄にしないため)
  • StartServers
    起動時に作成される子プロセス数
    ※既定値(3)のまま。(起動後の子プロセス数は動的に調整されるから)
  • MinSpareThreads
    アイドルスレッドの最小数
    ※ThreadsPerChildの整数倍にする。
  • MaxSpareThreads
    アイドルスレッドの最大数
    ※ThreadsPerChildの整数倍にする。(自動的に調整される)
  • MaxRequestWorkers
    最大同時接続数
    ※ThreadsPerChildの整数倍にする。
  • MaxConnectionsPerChild
    子プロセスが稼働中に扱う接続数の上限
    ※既定値(0)のまま。(上限なし)

まずは、最大同時接続数(MaxRequestWorkers)とサーバプロセス数の上限(ServerLimit)の値を決めます。
最大同時接続数は、仮想コア×100程度。(WEBサーバのみで他に同居するサービスが無い場合には、×200程度)
サーバプロセス数の上限は、6~16程度。(メモリ次第)

上記2つの値を決めてしまえば、後は計算して入力できるかと思います。
あくまで初期設定値なので、サーバー稼働後の実際の負荷を確認しながら、値は変更していきましょう。

この後は、domain.dの中にVirtualHostの設定を記載していきます。