【Rocky Linux 9】07.Apache設定

## Webサーバー構築
* Apacheをeventモジュールで動作させる（デフォルトのまま）
* モジュールは最低限のものしか読み込ませない（必要に応じて読み込ませる）

### Apacheインストール
```shell-session
dnf install httpd
```

### Apache設定
* ```/etc/httpd/conf/httpd.conf```のバックアップを取っておく
```shell-session
mv /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
```

* 不要な設定ファイルは中身を空にしておく（Apacheアップデート時に自動で作られてしまうため）
```shell-session
:> /etc/httpd/conf.d/autoindex.conf
:> /etc/httpd/conf.d/userdir.conf
:> /etc/httpd/conf.d/welcome.conf
```

* 新たに```/etc/httpd/conf/httpd.conf```を作成する
```shell-session:/etc/httpd/conf/httpd.conf
ServerRoot  "/etc/httpd"
Listen      80  
Include     conf.modules.d/*.conf
User        apache
Group       apache

DocumentRoot    "/var/www/html"
<Directory />
    Options         FollowSymLinks
    AllowOverride   All 
    Require         all granted
</Directory>

<IfModule dir_module>
    DirectoryIndex  index.html index.htm
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    SetEnvIf Request_URI "\.(bmp|css|gif|htc|ico|jpe?g|js|mpe?g|png|swf|woff|ttf)$" nolog
    CustomLog "logs/access_log" combined env=!nolog
</IfModule>

<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddHandler cgi-script .cgi .pl 
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>

EnableSendfile on
TraceEnable off

IncludeOptional conf.d/*.conf
```

### 不要なモジュールを読み込まない
```shell-session:/etc/httpd/conf.modules.d/00-base.conf
#
# This file loads most of the modules included with the Apache HTTP
# Server itself.
#

# Required
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule dir_module modules/mod_dir.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule watchdog_module modules/mod_watchdog.so

# Required for SSL
#LoadModule expires_module modules/mod_expires.so
#LoadModule headers_module modules/mod_headers.so
#LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

# Required for Zabbix
#LoadModule authz_host_module modules/mod_authz_host.so
#LoadModule env_module modules/mod_env.so
#LoadModule status_module modules/mod_status.so

# Not Required
#LoadModule access_compat_module modules/mod_access_compat.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule alias_module modules/mod_alias.so
#LoadModule allowmethods_module modules/mod_allowmethods.so
#LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_core_module modules/mod_authn_core.so
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_socache_module modules/mod_authn_socache.so
#LoadModule authz_dbd_module modules/mod_authz_dbd.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule cache_disk_module modules/mod_cache_disk.so
#LoadModule cache_socache_module modules/mod_cache_socache.so
#LoadModule data_module modules/mod_data.so
#LoadModule dbd_module modules/mod_dbd.so
#LoadModule deflate_module modules/mod_deflate.so
#LoadModule dumpio_module modules/mod_dumpio.so
#LoadModule echo_module modules/mod_echo.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule filter_module modules/mod_filter.so
#LoadModule include_module modules/mod_include.so
#LoadModule info_module modules/mod_info.so
#LoadModule logio_module modules/mod_logio.so
#LoadModule macro_module modules/mod_macro.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule remoteip_module modules/mod_remoteip.so
#LoadModule reqtimeout_module modules/mod_reqtimeout.so
#LoadModule request_module modules/mod_request.so
#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
#LoadModule socache_dbm_module modules/mod_socache_dbm.so
#LoadModule socache_memcache_module modules/mod_socache_memcache.so
#LoadModule socache_redis_module modules/mod_socache_redis.so
#LoadModule substitute_module modules/mod_substitute.so
#LoadModule suexec_module modules/mod_suexec.so
#LoadModule unique_id_module modules/mod_unique_id.so
#LoadModule userdir_module modules/mod_userdir.so
#LoadModule version_module modules/mod_version.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
```

```shell-session:/etc/httpd/conf.modules.d/00-brotli.conf
#LoadModule brotli_module modules/mod_brotli.so
```

```shell-session:/etc/httpd/conf.modules.d/00-dav.conf
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_lock_module modules/mod_dav_lock.so
```

```shell-session:/etc/httpd/conf.modules.d/00-lua.conf
#LoadModule lua_module modules/mod_lua.so
```

```shell-session:/etc/httpd/conf.modules.d/00-proxy.conf
# This file configures all the proxy modules:
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_express_module modules/mod_proxy_express.so
#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
#LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so
#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
#LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so
#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
```

```shell-session:/etc/httpd/conf.modules.d/10-h2.conf
#LoadModule http2_module modules/mod_http2.so
```

```shell-session:/etc/httpd/conf.modules.d/10-proxy_h2.conf
#LoadModule proxy_http2_module modules/mod_proxy_http2.so
```

### Apache起動・自動起動
```shell-session
systemctl enable --now httpd
```