Works/Apache

Apache 2.2에서 2.4로 마이그레이션 시 발생하는 에러 및 해결책 정리

Antamis 2024. 3. 12. 15:55

1. 마이그레이션

1-1. 접근 제어 선언 방식 변경

  • 2.2에서 Order, Allow , Deny 등의 지시자로 하던 접근 제어 설정은 Require 를 이용한 방식으로 변경되어야한다.

1) 모든 요청 거부

# 2.2 설정
Order deny,allow
Deny from all

# 2.4 설정
Require all denied

 

2) 모든 요청 허용

# 2.2 설정
Order allow,deny
Allow from all

# 2.4 설정
Require all granted

 

3) example.org 허용 나머지 거부

# 2.2 설정
Order Deny,Allow
Deny from all
Allow from example.org

# 2.4 설정
Require all denied
Require host example.org

 

4) 127.0.0.1 허용 나머지 거부

# 2.2 설정
Order Deny,Allow
Deny from all
Allow from 127.0.0.1

# 2.4 설정
Require all denied
Require ip 127.0.0.1

 

1-2. 속성/모듈 변경

  • 속성/모듈 변경
    • Httpd의 기존 설정에서 아래 속성/모듈과 관련된 선언이 있다면, 이름을 바꾸어준다.
    • 속성명
      • MaxClients -> MaxRequestWorkers
      • MaxRequestsPerChild -> MaxConnectionsPerChild
    • 모듈명
      • mod_disk_cache -> mod_cache_disk
    • KeepAlive 
      • 속성은 On 이나 Off 중 하나의 값을 가질수 있다. 0,1과 같이 숫자로 선언되어 있는 경우가 있었다면 수정해야 한다.
<IfModule mpm_prefork_module>
    StartServers          30
    MinSpareServers       30
    MaxSpareServers      128
    ServerLimit         1024
    MaxClients          1024 # MaxClients -> MaxRequestWorkers
    MaxRequestsPerChild  100000 # MaxRequestsPerChild -> MaxConnectionsPerChild
</IfModule>

...

KeepAlive Off # 속성은 On 이나 Off 중 하나의 값을 가질수 있다.

 

  • 속성 디폴트 값 변경 확인
    • 아래 속성들은 디폴트값이 바뀌었다.
    • 기존에 암묵적으로 디폴트값에 의존을 했었다면 명시적으로 선언한다.
  • Options 내 -,+ 모두 표시
    • Either all Options must start with + or -, or no Option may.
    • 오류가 발생시 모든 Options 내  +, -  표시를 해주어야 합니다.
<Directory "/home1/irteam/deploy/doc_base">
        Options -Indexes FollowSymLinks MultiViews # Options -Indexes +IncludesNoExec +FollowSymLinks +MultiViews
        AllowOverride None # 명시적으로 선언
        Order allow,deny
        Allow from all
        FileETag None # 명시적으로 선언
</Directory>

 

2. 오류로그 및 해결책

오류 1

# 오류 로그
httpd: Syntax error on line 59 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf: 
Cannot load modules/mod_authz_default.so into server: /home1/irteam/apps/apache/modules/mod_authz_default.so: cannot open shared object file: No such file or directory

# 해결 방법
mod_authz_default 삭제

 

오류 2

# 오류 로그
httpd: Syntax error on line 73 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Cannot load modules/mod_ident.so into server: /home1/irteam/apps/apache/modules/mod_ident.so: cannot open shared object file: No such file or directory

# 해결 방법
mod_ident 삭제

 

오류 3

# 오류 로그
AH00534: httpd: Configuration error: No MPM loaded.

# 해결 방법
추가 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

 

오류 4

# 오류 로그
AH00526: Syntax error on line 106 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'User', perhaps misspelled or defined by a module not included in the server configuration


# 해결 방법
추가 LoadModule unixd_module modules/mod_unixd.so

 

오류 5

# 오류 로그
AH00526: Syntax error on line 214 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration

# 해결 방법
추가 LoadModule access_compat_module modules/mod_access_compat.so

 

오류 6

# 오류 로그
[Thu Aug 01 16:16:15.768125 2019] [core:warn] [pid 29604] AH00117: Ignoring deprecated use of DefaultType in line 281 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf.
AH00526: Syntax error on line 325 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'Require', perhaps misspelled or defined by a module not included in the server configuration

# 해결 방법
추가 LoadModule authz_core_module modules/mod_authz_core.so

 

오류 7

# 오류 로그
[Thu Aug 01 16:17:14.560832 2019] [core:warn] [pid 29690] AH00117: Ignoring deprecated use of DefaultType in line 282 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf.
AH00526: Syntax error on line 353 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'LockFile', perhaps misspel

# 해결 방법
DefaultType text/plain -> ForceType text/plain(모든 응답을 text/plain으로 처리함.) 옵션 제거 할 것

 

오류 8

# 오류 로그
AH00526: Syntax error on line 353 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'LockFile', perhaps misspelled or defined by a module not included in the server configuration

[Mon Aug 05 15:47:04.456821 2019] [core:warn] [pid 26228] AH00117: Ignoring deprecated use of DefaultType in line 280 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf.
AH00526: Syntax error on line 396 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'Allow', perhaps misspelled or defined by a module not included in the server configuration

# 해결 방법
LockFile "logs/accept.lock" -> Mutex file:/home1/irteam/logs default

 

오류 9

# 오류 로그
AH00526: Syntax error on line 521 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
JkWorkersFile: Can't find the workers file specified

# 해결 방법
/home1/irteam/apps/apache/conf/workers.properties 추가

 

오류 10

# 오류 로그
AH00526: Syntax error on line 600 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Either all Options must start with + or -, or no Option may.

# 해결 방법
Options -Indexes FollowSymLinks MultiViews
>> Options -Indexes +FollowSymLinks +MultiViews

 

오류 11

# 오류 로그
AH00548: NameVirtualHost has no effect and will be removed in the next release /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:626
AH00112: Warning: DocumentRoot [/data/images/deploy/doc_base] does not exist
AH00526: Syntax error on line 23 of /home1/irteam/apps/apache/conf/vhost-avatar-static.conf:
Require not allowed in <VirtualHost> context

# 해결 방법
NameVirtualHost 삭제

 

오류 12

# 오류 로그
[Thu Aug 01 16:30:33.693824 2019] [proxy_balancer:emerg] [pid 31012] AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded??
[Thu Aug 01 16:30:33.693839 2019] [:emerg] [pid 31012] AH00020: Configuration Failed, exiting

# 해결 방법
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so 추가.

 

오류 13

# 오류 로그
[Thu Aug 01 16:32:06.814692 2019] [jk:warn] [pid 31220] No JkShmFile defined in httpd.conf. Using default /home1/irteam/apps/apache/logs/jk-runtime-status
[Thu Aug 01 16:32:06.833689 2019] [jk:warn] [pid 31224] No JkShmFile defined in httpd.conf. Using default /home1/irteam/apps/apache/logs/jk-runtime-status

# 해결 방법
JkShmFile /usr/local/apache2/logs/mod_jk.shm

 

출처 : https://ssackssly.tistory.com/14