
Apache 웹서버 설치와 기본 설정 초보 가이드: 2026년 최신 버전!
솔직히 처음에 웹서버 설치라고 하면 머리가 지끈거렸어요. 뭔가 거창하고 어려운 프로그래밍 지식이 있어야 할 것 같은 느낌? 저만 그랬나요? 그런데 막상 제가 직접 해보니 생각보다 어렵지 않더라고요! 특히 Apache(아파치)는 워낙 오랫동안 사랑받아온 웹서버라서 자료도 많고, 초보자도 쉽게 따라 할 수 있게 잘 정돈되어 있습니다. 오늘은 2026년 7월 28일 기준으로, 제가 직접 경험하면서 알게 된 아파치 웹서버 설치와 기본 설정 팁들을 아낌없이 풀어볼까 합니다. 서버 세팅, 이제 더 이상 무서워하지 마세요!
왜 아직도 Apache를 선택할까요? Nginx는요?
요즘 웹서버 시장을 보면 Nginx(엔진엑스) 이야기가 정말 많이 들리죠. 저도 처음에는 ‘엔진엑스가 대세인가?’ 싶어서 둘 중에 뭘 써야 할지 고민을 많이 했어요. 그런데 결국 제 선택은 아파치였습니다. 왜냐고요? 안정성과 방대한 자료 때문이었어요. 아파치는 거의 30년 가까이 웹서버 시장을 지켜온 전통의 강자입니다. 그만큼 버그도 적고, 문제가 생겼을 때 구글링 한 번이면 해결책이 쏟아져 나오죠. 초보자에게 이보다 더 좋은 환경은 없다고 생각해요.
개인적으로는 처음 배우는 단계에서는 아파치가 훨씬 직관적이고 친숙하게 느껴졌어요.
.htaccess파일 같은 기능들도 매력적이고요. 트래픽이 어마어마한 서비스가 아니라면, 아파치로도 충분히 훌륭한 성능을 낼 수 있습니다. 오히려 Nginx보다 설정이 간단하다고 느낄 때도 많았어요.
물론 Nginx도 훌륭한 웹서버입니다. 특히 동시접속 처리나 리버스 프록시 기능에서는 강점을 보이죠. 둘의 차이점을 간단하게 표로 정리해볼게요.
| 구분 | Apache (아파치) | Nginx (엔진엑스) |
|---|---|---|
| 동작 방식 | 프로세스/스레드 기반 | 이벤트 기반 |
| 설정 용이성 | 초보자에게 친숙, .htaccess 지원 |
초기 설정 다소 복잡, 학습 곡선 있음 |
| 모듈 지원 | 다양한 동적 모듈 지원 | 주로 정적 모듈, 컴파일 필요 |
| 성능 (고트래픽) | 대규모 동시접속 시 자원 소모↑ | 동시접속 처리 효율적, 자원 소모↓ |
| 주요 용도 | 다목적 웹서버, CMS (WordPress 등) | 리버스 프록시, 로드 밸런서, 정적 파일 서빙 |
보시면 아시겠지만, 각자의 장단점이 명확해요. 저는 블로그나 작은 프로젝트를 운영하는 입장이라 아파치의 유연성과 쉬운 관리가 더 와닿았답니다. 여러분의 상황에 맞춰 선택하는 게 가장 중요해요!
Apache 웹서버 설치, 이제 시작해볼까요? (Ubuntu 24.04 기준)
저는 요즘 Ubuntu 24.04 LTS 버전을 주로 사용합니다. 안정적이고 최신 패키지 지원도 빨라서 정말 만족스러워요. 이 가이드도 우분투 24.04 기준으로 설명할게요. 다른 리눅스 배포판(CentOS, Fedora 등)도 큰 틀은 비슷하니 참고하시면 됩니다.
1단계: 시스템 업데이트 및 필수 패키지 설치
어떤 소프트웨어를 설치하든, 가장 먼저 할 일은 시스템을 최신 상태로 유지하는 겁니다. 이거 안 하고 진행했다가 나중에 의외의 오류를 만나서 시간 버린 적이 한두 번이 아니에요.
sudo apt update
sudo apt upgrade -y
업데이트가 끝나면 이제 아파치2 패키지를 설치합니다. 간단하죠?
sudo apt install apache2 -y
-y 옵션은 모든 질문에 ‘예’로 자동 응답하는 명령어입니다. 편하지만, 가끔 중요한 설정이 있을 때는 직접 확인하는 게 좋아요.
2단계: 방화벽 설정 (UFW)
아파치를 설치했다고 바로 웹에 노출되는 건 아니에요. 서버에 방화벽이 있다면 웹 트래픽을 허용해줘야 합니다. 저는 UFW (Uncomplicated Firewall)를 사용하는데, 정말 이름처럼 간단해서 좋아요.
sudo ufw app list
이 명령어를 실행하면 UFW에서 인식하는 애플리케이션 목록이 나옵니다. 여기에 ‘Apache’ 관련 항목이 보일 거예요.
Output 예시:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
- Apache: 80 포트 (HTTP)만 허용합니다.
- Apache Full: 80 포트 (HTTP)와 443 포트 (HTTPS) 모두 허용합니다.
- Apache Secure: 443 포트 (HTTPS)만 허용합니다.
저는 보통 Apache Full을 선택해서 나중에 HTTPS 설정할 때 따로 건드리지 않도록 합니다. 지금은 HTTP만 쓸 예정이라도, Apache Full로 열어두는 걸 추천해요. 요즘은 SSL/TLS가 거의 필수니까요.
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status
ufw enable 명령은 방화벽을 활성화하는 것이고, ufw status로 현재 상태를 확인할 수 있어요. ‘active’라고 뜨고 ‘Apache Full’이 허용되어 있다면 성공입니다!
3단계: Apache 서비스 확인
설치가 제대로 됐는지 확인해야겠죠? systemctl 명령어를 사용합니다.
sudo systemctl status apache2
‘active (running)’이라고 초록색으로 표시되면 정상적으로 작동하고 있는 겁니다. 만약 아니라면, 어디서 문제가 생겼는지 메시지를 잘 읽어봐야 해요.
이제 웹 브라우저를 열고 서버의 IP 주소를 입력해보세요 (예: http://서버IP주소). 다음과 같은 기본 아파치 페이지가 보인다면 성공적으로 설치된 겁니다!

Apache2 Ubuntu 기본 페이지 (2026년 버전)
Apache 기본 설정: 내 웹사이트를 띄워보자!
기본 페이지가 나왔다고 다 끝난 건 아니죠. 이제 내 웹사이트 파일을 아파치가 서빙하도록 설정해야 합니다. 이게 바로 가상 호스트(Virtual Host) 설정인데요, 하나의 서버에서 여러 웹사이트를 운영할 수 있게 해주는 아주 유용한 기능이에요.
Apache 주요 설정 파일 위치
/etc/apache2/apache2.conf: 아파치의 전반적인 설정을 담당하는 메인 설정 파일입니다. 중요한 설정들이 많으니 주의해서 다뤄야 해요./etc/apache2/ports.conf: 아파치가 어떤 포트에서 리스닝할지 설정하는 파일입니다. 기본적으로 80(HTTP)과 443(HTTPS)이 설정되어 있어요./etc/apache2/sites-available/: 가상 호스트 설정 파일들을 저장하는 디렉터리입니다. 여기에 내 웹사이트 설정을 만듭니다./etc/apache2/sites-enabled/: 활성화된 가상 호스트 설정 파일들이 심볼릭 링크로 연결되는 디렉터리입니다./var/www/html/: 아파치의 기본 웹 문서 루트 디렉터리입니다. 여기에 웹사이트 파일을 넣습니다.
새로운 웹사이트를 위한 가상 호스트 설정
저는 mywebsite.com이라는 가상의 도메인으로 설명해볼게요. 실제 도메인이나 IP 주소로 대체해서 사용하시면 됩니다.
1단계: 웹사이트 루트 디렉터리 생성
기본 /var/www/html/ 대신, 내 웹사이트 전용 디렉터리를 만들어 관리하는 것이 일반적이고 훨씬 깔끔해요.
sudo mkdir -p /var/www/mywebsite.com/html
이제 이 디렉터리의 소유권을 웹서버 프로세스에 맞게 변경해줍니다. 보안을 위해 웹서버 프로세스는 www-data 계정으로 실행됩니다.
sudo chown -R $USER:$USER /var/www/mywebsite.com/html
sudo chmod -R 755 /var/www/mywebsite.com
$USER는 현재 로그인한 사용자 이름입니다. 이렇게 하면 내가 파일을 업로드하고 수정하는 데 편리해요. 혹시 권한 문제가 발생하면 www-data:www-data로 아예 변경해주는 경우도 있습니다만, 저는 $USER로 해두는 편입니다.
2단계: 샘플 HTML 파일 생성
웹사이트가 잘 작동하는지 확인하기 위해 간단한 index.html 파일을 만들어봅시다.
sudo nano /var/www/mywebsite.com/html/index.html
나노 에디터가 열리면 다음 내용을 붙여넣고 저장하세요 (Ctrl+O, Enter, Ctrl+X).
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<title>My Awesome Website!</title>
</head>
<body>
<h1>와! 내 첫 번째 Apache 웹사이트!</h1>
<p>mywebsite.com에 오신 것을 환영합니다.</p>
</body>
</html>
3단계: 가상 호스트 설정 파일 생성
이제 아파치가 이 디렉터리를 인식하도록 설정 파일을 만들어야 합니다. sites-available 디렉터리에 파일을 생성합니다.
sudo nano /etc/apache2/sites-available/mywebsite.com.conf
다음 내용을 붙여넣고 저장합니다.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName mywebsite.com
ServerAlias www.mywebsite.com
DocumentRoot /var/www/mywebsite.com/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/mywebsite.com/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
ServerAdmin: 관리자 이메일입니다.ServerName: 이 가상 호스트가 응답할 도메인 이름입니다.ServerAlias:www.mywebsite.com처럼 별칭을 추가할 수 있습니다.DocumentRoot: 웹사이트 파일들이 있는 디렉터리입니다.ErrorLog,CustomLog: 에러 로그와 접근 로그 파일 위치를 지정합니다.<Directory>블록: 해당 디렉터리에 대한 접근 권한과 옵션을 설정합니다.Options Indexes FollowSymLinks: 디렉터리 목록 보기 허용 및 심볼릭 링크를 따르도록 합니다.AllowOverride All:.htaccess파일 사용을 허용합니다. 이거 정말 중요해요! WordPress 같은 CMS는.htaccess를 많이 사용하거든요.Require all granted: 모든 접근을 허용합니다.
4단계: 가상 호스트 활성화 및 Apache 재시작
이제 방금 만든 설정 파일을 아파치에 알려주고 활성화해야 합니다. a2ensite 명령어를 사용해요.
sudo a2ensite mywebsite.com.conf
그리고 기존에 활성화되어 있던 기본 사이트 000-default.conf는 비활성화해주는 것이 좋습니다. 충돌을 방지하고 깔끔하게 관리하기 위함이죠.
sudo a2dissite 000-default.conf
설정 변경 후에는 항상 Apache 서비스를 재시작해야 적용됩니다. 그전에 설정 파일에 문법 오류가 없는지 확인하는 습관을 들이세요. apachectl configtest 명령이 그 역할을 합니다.
sudo apachectl configtest
‘Syntax OK’가 뜨면 성공입니다. 이제 재시작!
sudo systemctl restart apache2
자, 이제 웹 브라우저에서 http://mywebsite.com (또는 설정한 도메인)으로 접속해보세요. 앞서 만든 ‘와! 내 첫 번째 Apache 웹사이트!’라는 페이지가 보인다면 완벽하게 성공한 겁니다! 의외로 간단하죠? 이 뿌듯함… 직접 해봐야 알 수 있어요.
Apache 성능 튜닝과 보안 팁 (초보도 따라하기 쉽게!)
아파치 설치와 기본 설정은 끝났지만, 좀 더 안정적이고 안전하게 사용하려면 몇 가지 팁을 알아두면 좋아요. 저는 처음에 이 부분을 놓쳤다가 나중에 후회한 적이 많습니다.
1. 필요 없는 모듈 비활성화
아파치는 수많은 모듈을 지원하지만, 모든 모듈이 다 필요한 건 아닙니다. 불필요한 모듈은 서버 자원을 낭비하고 보안 취약점을 만들 수도 있어요. 어떤 모듈이 활성화되어 있는지 확인해보고, 사용하지 않는 것은 a2dismod 명령으로 비활성화하는 걸 추천합니다. 제 경험상 autoindex 같은 모듈은 보안상 비활성화하는 게 좋아요.
sudo a2dismod autoindex
sudo systemctl restart apache2
나중에 필요하면 언제든지 a2enmod로 다시 활성화할 수 있으니 걱정 마세요.
2. KeepAlive 설정
KeepAlive는 클라이언트와 서버 간의 연결을 유지할지 여부를 설정하는 기능이에요. 짧은 시간 동안 여러 요청을 보낼 때, 연결을 계속 유지하면 매번 새로 연결하는 오버헤드를 줄일 수 있어서 성능에 도움이 됩니다.
sudo nano /etc/apache2/apache2.conf
파일을 열어서 KeepAlive 부분을 찾아보세요. 보통 다음과 같이 설정되어 있을 겁니다.
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
KeepAlive On: KeepAlive 기능을 활성화합니다.MaxKeepAliveRequests: 한 번의 연결에서 처리할 수 있는 최대 요청 수입니다. 기본 100도 괜찮지만, 트래픽에 따라 조절할 수 있습니다.KeepAliveTimeout: 연결을 유지할 시간(초)입니다. 너무 길게 설정하면 불필요한 연결이 오래 유지될 수 있으니 5~10초 사이가 적당하다고 생각해요.
이 설정들은 서버의 사양과 웹사이트의 트래픽 패턴에 따라 최적값이 달라져요. 섣불리 막 바꾸기보다는 조금씩 테스트해가면서 조절하는 게 중요합니다. 저도 처음엔 막무가내로 바꿨다가 서버 부하만 늘린 적이 있어요.
3. 서버 시그니처 숨기기 (보안 강화)
기본적으로 아파치는 에러 페이지 등에서 자신의 버전 정보와 OS 정보를 노출합니다. 이는 잠재적인 공격자에게 서버 정보를 알려주는 것이나 다름없어요. apache2.conf 파일에서 이 정보를 숨길 수 있습니다.
sudo nano /etc/apache2/apache2.conf
파일 내에서 다음 두 줄을 찾아서 수정하거나 추가합니다.
ServerTokens Prod
ServerSignature Off
ServerTokens Prod: 서버가 내보내는 정보의 양을 ‘Prod'(제품) 수준으로 줄여서 아파치 버전만 표시하고 OS 정보는 숨깁니다.ServerSignature Off: 에러 페이지 하단에 표시되는 서버 정보를 완전히 제거합니다.
수정 후에는 역시 아파치를 재시작해야 합니다.
sudo systemctl restart apache2
어떠셨나요? 오늘은 2026년 7월 28일 기준으로 아파치 웹서버를 설치하고, 간단한 가상 호스트를 설정하는 방법, 그리고 초보자를 위한 몇 가지 튜닝/보안 팁까지 알아봤습니다. 제가 직접 겪어보니, 웹서버 설치는 한 번만 제대로 익혀두면 두고두고 쓸모가 많더라고요. 특히 요즘처럼 개인 웹사이트나 프로젝트가 많아지는 시대에는 더더욱이요. 이 글이 여러분의 첫 웹서버 구축에 작은 도움이 되었기를 바랍니다!
자주 묻는 질문 (FAQ)
- Q1: Apache 설치 후 웹 브라우저에서 접속이 안 돼요. 뭐가 문제일까요?
- A1: 몇 가지 원인이 있을 수 있습니다. 가장 흔한 경우는 방화벽 설정입니다. 서버의 방화벽(UFW 등)에서 80 포트(HTTP)와 443 포트(HTTPS)가 허용되어 있는지 확인해보세요.
sudo ufw status명령으로 확인할 수 있습니다. 또한, Apache 서비스가 정상적으로 실행 중인지sudo systemctl status apache2명령으로 확인해보세요. 서버 IP 주소 또는 도메인 설정이 올바른지도 중요합니다. - Q2:
.htaccess파일이 적용이 안 돼요. 어떻게 해야 하나요? - A2: 가상 호스트 설정 파일(예:
/etc/apache2/sites-available/mywebsite.com.conf)에서 해당 웹사이트의<Directory>블록 안에AllowOverride All지시어가 있는지 확인해보세요. 이 설정이None으로 되어 있거나 없으면.htaccess파일이 무시됩니다. 수정한 후에는 반드시sudo systemctl restart apache2명령으로 아파치를 재시작해야 합니다. - Q3: 하나의 서버에 여러 웹사이트를 운영하고 싶으면 어떻게 해야 하나요?
- A3: 가상 호스트(Virtual Host) 기능을 사용하면 됩니다. 각 웹사이트마다 별도의 루트 디렉터리를 만들고,
/etc/apache2/sites-available/디렉터리 안에 해당 웹사이트의 가상 호스트 설정 파일(예:yourdomain.com.conf)을 생성합니다. 각 설정 파일에ServerName과DocumentRoot를 해당 웹사이트에 맞게 지정하고,sudo a2ensite yourdomain.com.conf명령으로 활성화한 뒤 아파치를 재시작하면 됩니다.