Web 서버는 인터넷 상에서 웹사이트를 제공하기 위한 시스템입니다. Web 서버 소프트웨어에는 Apache, Nginx, LiteSpeed 등이 있지만, Ubuntu에서 가장 널리 사용되는 것은 Apache입니다.
Ubuntu는 경량이고 안정성이 높으며, 오픈소스이기 때문에 개인부터 기업까지 폭넓게 채택되고 있습니다. 특히 LAMP 환경(Linux, Apache, MySQL/MariaDB, PHP)을 구축하기 쉬워 많은 웹사이트와 애플리케이션 운영에 적합합니다.
이 글의 대상 독자
이 글은 Web 서버를 처음 구축하는 초보자를 위한입니다. Ubuntu를 사용해 Web 서버를 시작하고, Apache를 도입하며, 가상 호스트와 SSL 인증서를 설정하면서 최적화 및 보안 강화 방법을 자세히 설명합니다.
Apache(정식 명칭: Apache HTTP Server)는 오픈소스 웹 서버 소프트웨어이며, 안정성·확장성·보안성이 높아 전 세계 서버의 약 30%가 Apache를 사용하고 있습니다.
주요 특징:
무료로 이용 가능(오픈소스)
모듈 구조로 확장이 용이
SSL/TLS 지원으로 HTTPS화 가능
가상 호스트(Virtual Host)를 통해 여러 사이트를 운영 가능
Apache 설치
Ubuntu에서는 Apache를 패키지 관리 시스템 apt를 사용하여 쉽게 설치할 수 있습니다.
Apache 설치하기
다음 명령을 실행하여 Apache를 설치합니다.
sudo apt update
sudo apt install apache2 -y
설치가 성공했는지 확인하기
설치 후, 다음 명령으로 Apache 버전을 확인할 수 있습니다.
apache2 -v
출력 예:
Server version: Apache/2.4.52 (Ubuntu)
Server built: 2023-07-01T12:34:56
이와 같이 버전 정보가 표시되면 정상적으로 설치된 것입니다.
Apache 시작·중지·재시작
Apache는 systemctl 명령을 사용하여 관리합니다.
Apache 시작하기
sudo systemctl start apache2
이렇게 하면 Apache가 시작되어 웹 요청을 처리할 수 있는 상태가 됩니다.
Apache 자동 시작 설정
sudo systemctl enable apache2
Apache 상태 확인
Apache가 정상적으로 동작하는지 확인하려면 다음 명령을 실행합니다.
sudo systemctl status apache2
정상적으로 동작하면 아래와 같은 메시지가 표시됩니다.
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since ...
Apache 재시작·중지
설정을 변경했을 때 Apache를 재시작하려면 아래 명령을 사용합니다.
sudo systemctl restart apache2
Apache를 일시적으로 중지하고 싶을 경우 아래 명령을 실행합니다.
sudo systemctl stop apache2
Apache 동작 확인
Apache가 올바르게 동작하는지 확인하기 위해 서버의 IP 주소에 접근해 봅시다.
1. 자신의 서버 IP 주소 확인
hostname -I
또는 아래 명령을 실행하면 외부 IP를 확인할 수 있습니다.
curl ifconfig.me
2. 웹 브라우저로 확인
브라우저 주소창에 아래를 입력합니다.
http://<서버의 IP 주소>/
또는 로컬 환경인 경우
http://localhost/
Apache의 기본 페이지(/var/www/html/index.html)가 표시될 것입니다. 기본 표시 페이지 예:
Apache2 Ubuntu Default Page
It works!
이 메시지가 표시되면 Apache는 정상적으로 동작하고 있습니다.
방화벽 설정
Ubuntu에서는 UFW(Uncomplicated Firewall)를 사용하여 방화벽을 설정합니다.
Apache를 설치한 직후에는 외부에서의 HTTP(포트 80) 및 HTTPS(포트 443) 접근이 차단될 수 있습니다.
Apache용 방화벽 규칙 설정
sudo ufw allow 'Apache'
또는 HTTPS도 허용하려면 아래 명령을 실행합니다.
sudo ufw allow 'Apache Full'
방화벽 상태 확인
sudo ufw status
출력 예:
Status: active
To Action From
-- ------ ----
Apache ALLOW Anywhere
Apache (v6) ALLOW Anywhere (v6)
이와 같이 표시되면 Apache 통신이 허용된 상태입니다.
정리
여기까지 Ubuntu에 Apache를 설치하고 기본 설정을 완료했습니다.
이 글에서 다룬 주요 내용:
Apache 설치 방법
Apache 시작·자동 시작 설정
Apache 동작 확인(브라우저 접근)
방화벽 설정
Apache 기본 설정 파일 소개
4. 가상 호스트 설정(다중 사이트 관리)
가상 호스트(Virtual Host)란?
가상 호스트는 하나의 Apache 서버에서 여러 도메인(또는 서브도메인)을 운영하기 위한 메커니즘입니다.
예를 들어, 한 대의 서버에서 example.com과 test.com 두 개의 서로 다른 웹사이트를 제공할 수 있습니다. 가상 호스트 종류에는 다음 두 가지가 있습니다。
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html
echo "<h1>Welcome to test.com</h1>" | sudo tee /var/www/test.com/public_html/index.html
4. 가상 호스트 설정 파일 생성
가상 호스트 설정 파일은 /etc/apache2/sites-available/ 디렉터리 내에 생성합니다。
가상 호스트가 정상적으로 동작하는지 확인하기 위해 로컬 PC의 hosts 파일을 편집합니다。
sudo nano /etc/hosts
다음 행을 추가:
127.0.0.1 example.com
127.0.0.1 test.com
저장 후 브라우저에서 http://example.com/에 접속하여 “Welcome to example.com”이 표시되는지 확인합니다. 동일하게 http://test.com/에 접속하여 “Welcome to test.com”이 표시되면 성공입니다。
7. 트러블슈팅
가상 호스트가 정상적으로 작동하지 않을 경우, 다음을 확인하십시오。
1. Apache 오류 로그 확인
sudo tail -f /var/log/apache2/error.log
2. 설정 파일이 올바르게 활성화되었는지 확인
ls /etc/apache2/sites-enabled/
적절히 .conf 파일이 나열되어 있으면 가상 호스트가 활성화된 것입니다。
3. Apache 포트 설정 확인
가상 호스트가 포트 80(HTTP)에서 동작하도록 /etc/apache2/ports.conf를 확인하십시오。
sudo nano /etc/apache2/ports.conf
다음 내용이 있는지 확인:
Listen 80
정리
이 섹션에서는 Ubuntu에서 Apache 가상 호스트를 설정하는 방법을 설명했습니다。
이 글에서 배운 내용:
가상 호스트의 개념과 용도
가상 호스트용 디렉터리 생성
가상 호스트 설정 파일 생성 및 활성화
로컬 환경에서 동작 확인 방법
트러블슈팅
5. SSL/TLS 도입(HTTPS화)
SSL/TLS란?
SSL(Secure Sockets Layer) 및 TLS(Transport Layer Security)는 인터넷에서 안전한 통신을 보장하기 위한 암호화 기술입니다.
SSL/TLS 도입의 장점
✅ 통신 암호화(데이터가 도청·변조될 위험을 감소)
✅ Google SEO 평가 향상(HTTPS 사이트는 검색 결과에서 우대받음)
✅ 브라우저 경고 회피(HTTP 사이트는 “보호되지 않은 통신”이라고 표시됨)
✅ 온라인 결제·로그인 정보 보호 현재는 TLS(TLS 1.2 / 1.3)가 권장되고 있으며, SSL 3.0 이전은 비권장 상태입니다.
Let’s Encrypt로 무료 SSL 인증서를 받기
Let’s Encrypt는 무료로 SSL 인증서를 발급하는 인증 기관(CA: Certificate Authority)입니다. certbot을 사용하여 쉽게 인증서를 받아 Apache에 적용할 수 있습니다.
이 섹션에서는 Ubuntu 웹 서버(Apache)에서 발생하기 쉬운 오류의 원인과 해결책을 설명했습니다.
이 기사에서 배운 내용:
Apache가 시작되지 않을 때의 대처 방법
SSL 인증서 관련 오류 해결
403 / 404 / 500 오류의 원인과 수정
성능 최적화
네트워크 연결 확인
9. 요약
지금까지 배운 내용
각 섹션에서 설명한 내용을 되돌아봅시다.
섹션
내용
1. 시작
Ubuntu 웹 서버의 기본 개념과 이 글의 목적
2. Ubuntu 설치 및 초기 설정
OS 설치, 업데이트, 방화벽 설정
3. Apache 설치 및 기본 설정
Apache 도입, 시작, 동작 확인
4. 가상 호스트 설정
여러 웹사이트를 호스팅하는 설정
5. SSL/TLS 도입
Let’s Encrypt를 사용한 HTTPS 적용
6. 웹 서버 보안 강화
방화벽 설정, SSH 보호, Apache 보안
7. 성능 최적화
캐시, 데이터 압축, Apache 최적화 설정
8. 트러블슈팅
Apache 오류 대응, SSL 문제 수정, 부하 대책
다음 단계
Ubuntu 웹 서버 기본 설정이 완료되면, 다음과 같은 응용 설정 및 기술을 배우면서 더욱 실용적인 서버 환경을 구축할 수 있습니다. ✅ WordPress 및 PHP 애플리케이션 도입 ✅ 데이터베이스 서버(MySQL / MariaDB) 설정 ✅ 리버스 프록시(Nginx + Apache) 구축 ✅ 오토스케일 환경 구축 (AWS, GCP, Azure 활용)
✅ 로그 관리 및 모니터링 (fail2ban 및 logwatch 활용)
자주 묻는 질문(FAQ)
Q1: Ubuntu에서 Nginx와 Apache 중 어느 것을 선택해야 할까요?
A1:정적 콘텐츠 배포가 주된 경우 Nginx, 동적 콘텐츠(PHP 등)가 많은 경우 Apache를 권장합니다.
Nginx는 리버스 프록시로도 사용할 수 있으며, Apache와 결합하는 것도 가능합니다.
Q2: SSL 인증서 갱신을 자동화할 수 있나요?
A2:Certbot을 설치하면 자동 갱신이 가능합니다. 명령 sudo certbot renew --dry-run 로 테스트하고, 스케줄에 cron을 설정하면 좋습니다.
Q3: 웹 서버 보안을 더 강화하려면?
A3:Fail2Ban으로 무차별 공격을 방지하고, Apache 버전 정보를 숨기며, 불필요한 모듈을 비활성화하는 것이 기본 대책입니다.
Q4: Apache 성능을 향상시키는 방법은?
A4:MPM을 적절히 선택(event / worker), 캐시 설정(mod_cache), 데이터 압축(mod_deflate)을 수행합니다.
Q5: 웹사이트가 “403 Forbidden” 오류를 반환하는 원인은?
A5:디렉터리 소유권이 www-data로 설정되어 있는지 확인하고, chmod -R 755 로 적절한 권한을 설정합니다.
요약
Ubuntu 웹 서버 구축은 기본 설정부터 고급 최적화까지 많은 단계가 필요하지만, 한 번 이해하면 매우 강력한 환경을 구축할 수 있습니다. 🚀 이 글을 참고하여 보다 안전하고 빠른 웹 서버를 구축하고, 운영 스킬을 향상시키세요! 🚀