아파치 설치 후 웹 문서 경로를 지정할 때 참고할 설정을 정리한 내용이다. EC2 또는 CentOS 환경에서 /home/ec2-user 하위에 프로젝트를 두고 해당 경로를 아파치가 서비스하도록 할 때 사용할 수 있다.
1. 설정 파일 위치
메인 httpd.conf는 수정하지 않고, /etc/httpd/conf.d/에 새 .conf 파일을 추가하는 방식을 권장한다. conf.d에 넣은 설정은 아파치 재시작 시 자동으로 읽히며, 프로젝트 추가·삭제 시에도 메인 설정과 분리하여 관리하기 쉽다.
cd /etc/httpd/conf.d
해당 디렉터리에서 필요한 이름으로 conf 파일을 생성한다. 예를 들어 myproject.conf처럼 프로젝트 이름을 붙여 두면 추후 관리가 편하다.
2. conf 파일에 넣을 내용
필요한 설정은 크게 두 가지이다. 하나는 Directory 블록으로 해당 경로 접근을 허용하는 것이고, 다른 하나는 VirtualHost로 접속 주소(IP/도메인)에 따라 문서 루트를 지정하는 것이다.
Directory 블록 (홈 디렉터리 접근 허용)
/home/ec2-user와 같은 경로를 웹에서 접근 가능하게 하려면, 아파치에 해당 경로 접근을 허용해야 한다. 아래와 같이 작성한다.
<Directory "/home/ec2-user">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Options Indexes FollowSymLinks는 디렉터리 목록 표시(Indexes)와 심볼릭 링크 추적(FollowSymLinks)을 허용한다. AllowOverride All은 해당 디렉터리 내 .htaccess를 적용하며, Require all granted는 접근을 허용한다. 자세한 옵션은 아파치 공식 문서를 참고한다.
VirtualHost 블록 (IP 또는 도메인 → 문서 경로)
접속 주소에 따라 문서 루트를 지정하는 것은 VirtualHost에서 설정한다. ServerName에 서버 IP 또는 도메인을, DocumentRoot에 프로젝트 실제 경로를 넣는다.
<VirtualHost *:80>
ServerName 54.180.138.133
DocumentRoot /home/ec2-user/ez1pay/html
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
DocumentRoot /home/ec2-user/ez1pay/html
</VirtualHost>
위 예시는 IP(54.180.138.133) 또는 도메인(example.com)으로 접속 시 동일한 프로젝트(/home/ec2-user/ez1pay/html)를 제공한다는 의미이다. IP만 사용할 경우 VirtualHost 하나만 두고, 도메인을 추가할 경우 ServerName만 도메인으로 한 블록을 더 추가하면 된다. VirtualHost는 여러 개 둘 수 있으며, 프로젝트별로 도메인과 경로를 다르게 설정할 수 있다.
3. 설정 적용
conf 파일을 저장한 뒤 아파치를 재시작하거나 reload해야 반영된다.
# 재시작 (설정만 변경했을 경우 reload 사용 가능)
sudo systemctl restart httpd
# 또는 reload
sudo systemctl reload httpd
과거 service httpd restart / service httpd reload를 사용하던 환경이라면, systemd 사용 시에는 위와 같이 systemctl을 사용하면 된다.
4. 자주 발생하는 문제와 대처
403 Forbidden이 나오는데 파일은 존재하는 경우
DocumentRoot 경로는 맞는데 403이 발생하면, 대부분 권한 또는 SELinux 때문이다. 아파치 프로세스는 apache(또는 httpd) 사용자로 동작하므로, 해당 사용자가 디렉터리와 파일을 읽을 수 있어야 한다.
대처 방법은 (1) chmod 755로 디렉터리에 실행 권한을 부여하고, (2) SELinux가 활성화된 경우 /home 하위는 기본적으로 httpd가 읽지 못하므로 chcon -R -t httpd_sys_content_t /home/ec2-user/프로젝트경로로 컨텍스트를 맞추거나, 테스트 시에만 setenforce 0으로 원인을 확인한다. DocumentRoot 경로의 권한과 SELinux 컨텍스트를 맞추면 403을 해결할 수 있다.
가상호스트가 적용되지 않고 기본 페이지만 나오는 경우
VirtualHost를 여러 개 두었는데 항상 동일한 페이지만 나오면, 첫 번째 VirtualHost가 기본으로 적용되었을 수 있다. 원하는 도메인으로 접속되게 하려면 ServerName을 정확히 지정하고, 필요 시 기본용 VirtualHost를 맨 위에 두고 그 아래에 도메인별 VirtualHost를 배치하는 식으로 순서를 조정한다. VirtualHost 순서와 ServerName을 정확히 맞추면 원하는 도메인으로 접속할 수 있다.
설정 오류로 아파치가 기동하지 않는 경우
conf 파일에 오타나 꺾쇠괄호 누락이 있으면 httpd 기동이 실패한다. systemctl status httpd에서 failed로 표시되며, journalctl -u httpd -n 30 또는 apachectl configtest로 오류 위치를 확인할 수 있다. configtest로 에러가 나온 부분을 수정한 뒤 재시작하면 된다.
# 설정 문법 검사
sudo apachectl configtest
한 줄 요약
conf.d에 conf 추가 → Directory로 경로 허용, VirtualHost로 ServerName·DocumentRoot 지정 → httpd 재시작. 403 발생 시 권한·SELinux 확인, 가상호스트 미적용 시 VirtualHost 순서·ServerName 확인.
댓글 0