기본 문법
httpd [-t] [-v] [-V] [-l] [-M] [-S] [-f 설정파일] [-D 이름] [-k start|restart|graceful|stop]
httpd는 Apache HTTP Server의 실행 파일입니다. Rocky Linux 8에서는 httpd 패키지를 설치하면 /usr/sbin/httpd에 놓이며, 주 설정 파일은 /etc/httpd/conf/httpd.conf, 추가 설정은 /etc/httpd/conf.d/, 모듈 로드 설정은 /etc/httpd/conf.modules.d/ 아래에 있습니다.
서비스 기동과 중지는 systemd(systemctl start|stop|reload httpd)가 담당하므로, httpd 명령은 데몬을 직접 띄우기보다 설정을 점검하는 용도로 더 자주 사용합니다. -t로 설정 파일의 문법을 검사하고, -M으로 현재 로드된 모듈 목록을 확인하며, -S로 가상호스트와 주요 경로 설정을 요약해서 봅니다. -V는 컴파일 시 지정된 기본 설정 파일 경로와 MPM 종류를 알려 줍니다.
리눅스마스터·RHCSA·LPIC 실기에서는 ErrorDocument로 404 페이지를 바꾸거나(#206) UserDir로 사용자 홈 디렉터리 공개 범위를 조정한 뒤(#207), httpd -t가 Syntax OK를 내는지 확인하는 흐름으로 자주 출제됩니다.
자주 쓰는 옵션
| 옵션 | 의미 | 예 |
|---|---|---|
-t | 설정 파일 문법만 검사하고 종료. 문제가 없으면 마지막 줄에 Syntax OK 출력 | httpd -t |
-S | 가상호스트 구성과 ServerRoot·DocumentRoot·로그 경로 등 실행 설정 요약 출력 (-t -D DUMP_VHOSTS -D DUMP_RUN_CFG와 같음) | httpd -S |
-M | 정적·동적으로 로드된 모듈 목록 출력 | httpd -M |
-v | 서버 버전과 빌드 시점 출력 | httpd -v |
-V | 버전과 컴파일 설정값(기본 설정 파일 경로, MPM 등) 출력 | httpd -V |
-l | 정적으로 컴파일된 모듈 목록 출력 | httpd -l |
-f 파일 | 사용할 설정 파일을 직접 지정 (상대 경로는 ServerRoot 기준) | httpd -t -f /tmp/demo/test.conf |
-D 이름 | IfDefine에서 참조할 파라미터를 정의한 상태로 처리 | httpd -t -D DUMP_VHOSTS |
-k 동작 | start/restart/graceful/stop 등 서버 제어. root 권한이 필요하며, Rocky 8에서는 systemctl 사용을 권장 | httpd -k graceful |
-h | 사용 가능한 옵션 도움말 출력 | httpd -h |
실무 예시
버전 확인
$ httpd -v
Server version: Apache/2.4.37 (rocky)
Server built: <패키지 빌드 일시>
설치된 아파치의 버전과 빌드 시점을 확인합니다. 빌드 날짜는 설치된 패키지 버전에 따라 달라집니다. 실습 컨테이너에서는 실행되지 않는 명령이라 대표 출력을 표시했습니다.
설정 문법 검사
$ httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using ::1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
현재 적용 중인 설정 파일 전체의 문법을 검사합니다. 마지막 줄이 Syntax OK면 문법 오류는 없습니다. ServerName이 설정돼 있지 않으면 AH00558 경고가 함께 나오지만 문법 오류는 아닙니다. 실습 컨테이너에서는 실행되지 않는 명령이라 대표 출력을 표시했습니다.
UserDir 모듈 로드 여부 확인
$ httpd -M | grep userdir
userdir_module (shared)
UserDir 지시자를 쓰려면 mod_userdir이 로드돼 있어야 합니다. 출력이 없으면 모듈이 로드되지 않은 상태이며, 이때 grep의 종료 상태는 1입니다. 실습 컨테이너에서는 실행되지 않는 명령이라 대표 출력을 표시했습니다.
사본 설정 파일로 ErrorDocument 문법 검사
준비: mkdir -p /tmp/demo; cp /etc/httpd/conf/httpd.conf /tmp/demo/test.conf; echo 'ErrorDocument 404 /custom_404.html' >> /tmp/demo/test.conf
$ httpd -t -f /tmp/demo/test.conf
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using ::1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
원본을 그대로 두고 사본에 지시자를 추가해 문법만 검사합니다. 사본이 ServerRoot(/etc/httpd) 기준의 Include 경로를 그대로 쓰므로 검사가 진행되며, 검사 후에는 /tmp/demo 디렉터리를 정리하면 됩니다. 실습 컨테이너에서는 실행되지 않는 명령이라 대표 출력을 표시했습니다.
가상호스트와 기본 경로 요약
$ httpd -S
VirtualHost configuration:
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex default: dir="/run/httpd/" mechanism=default
PidFile: "/run/httpd/httpd.pid"
User: name="apache" id=48
Group: name="apache" id=48
가상호스트 구성과 ServerRoot, DocumentRoot, 로그 경로, 실행 사용자·그룹을 요약해서 확인합니다. 가상호스트를 따로 정의하지 않았다면 VirtualHost 목록은 비어 있습니다. 실습 컨테이너에서는 실행되지 않는 명령이라 대표 출력을 표시했습니다.
주의할 점
- httpd -t는 문법만 검사합니다. ErrorDocument가 가리키는 파일이 실제로 있는지, 읽기 권한이 맞는지는 확인해 주지 않습니다.
- 권한 문제를 777로 푸는 것은 권장하지 않습니다. 콘텐츠 파일은 644, 디렉터리는 755 수준으로 두고 SELinux 컨텍스트(httpd_sys_content_t)를 확인하세요.
- ErrorDocument 404 뒤에 URL 경로를 쓸 때는 따옴표 없이 쓰고, 오류 메시지 문자열을 직접 출력할 때만 큰따옴표로 감쌉니다.
- UserDir disabled는 UserDir public_html과 함께 쓰이며, 두 줄 모두 주석(#)이 없는 활성 라인이어야 적용됩니다. 순서와 적용 범위는 /etc/httpd/conf.d/userdir.conf에서 확인하세요.
- 설정 파일을 수정하기 전에 사본을 만들어 두고, 수정 후에는 httpd -t로 검사한 뒤 systemctl reload httpd 또는 restart로 반영해야 실행 중인 서버에 적용됩니다.
- httpd -k는 root 권한이 필요하고 systemd가 관리하는 프로세스 상태와 어긋날 수 있으므로, Rocky 8에서는 systemctl을 사용하는 편이 안전합니다.
이 명령어로 풀 수 있는 실습 문제
브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.
관련 명령어
마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.
