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

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

目次

Apache(httpd)のインストール

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

[root@server]# dnf module install httpd

初期設定

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

[root@server]# 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@server]# cd /etc/httpd/conf.d
[root@server]# cp autoindex.conf autoindex.conf.org
[root@server]# cat /dev/null > autoindex.conf
[root@server]# cp welcome.conf welcome.conf.org
[root@server]# cat /dev/null > welcome.conf

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

MPMパラメーターの設定

以下、いずれもWEBサーバー以外にDBなど同居するサービスがある場合を想定しています。(WEBサーバー専用であれば、もっと割り振っても良いと思います)

2コアCPUサーバーの場合

[root@server]# vi /etc/httpd/conf.d/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サーバーの場合

[root@server]# vi /etc/httpd/conf.d/mpm_event.conf
<IfModule mpm_event_module>
  ServerLimit              10
  ThreadLimit              40
  ThreadsPerChild          40
  StartServers             3
  MinSpareThreads          5
  MaxSpareThreads          20
  MaxRequestWorkers        400
  MaxConnectionsPerChild   0
</IfModule>

6コアCPUサーバーの場合

[root@server]# vi /etc/httpd/conf.d/mpm_event.conf
<IfModule mpm_event_module>
  ServerLimit              10
  ThreadLimit              60
  ThreadsPerChild          60
  StartServers             3
  MinSpareThreads          5
  MaxSpareThreads          20
  MaxRequestWorkers        600
  MaxConnectionsPerChild   0
</IfModule>

MPMパラメーター解説

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

よかったらシェアしてね!
目次