본문 바로가기
서버 구축·실습

리눅스 웹 서버 구축 실습 기록 – 방화벽과 Apache를 직접 설정해 보며

by joe2026 2026. 1. 24.

멀티클라우드 수업을 들으면서, 리눅스 환경에서 웹 서버를 직접 구성해보는 실습을 진행했다. 그동안 이론으로만 알고 있던 개념들을 실제 서버에 하나씩 적용해 보면서, 리눅스 서버가 어떤 순서와 구조로 동작하는지 조금씩 감이 잡히기 시작했다.

이번 실습은 단순히 명령어를 외우는 것이 아니라, 네트워크 설정 → 보안 → 서비스 실행 → 접근 확인이라는 서버 운영의 기본 흐름을 몸으로 익히는 과정이었다. 이 글에서는 그 과정을 정리하며, 개인 학습 기록으로 남겨보려고 한다.


1. nmcli로 IP 설정을 하며 느낀 점

리눅스 서버에서는 GUI 환경이 없는 경우가 많기 때문에, 네트워크 설정 역시 명령어로 직접 관리해야 한다. 이번 실습에서는 nmcli 명령어를 사용해 IP 주소를 설정했다.

이전에는 IP 설정이 단순히 주소 하나를 입력하는 작업이라고 생각했는데, 실제로 해보니 연결(Connection) 단위로 관리되고, 변경 후에는 반드시 네트워크를 재시작해야 설정이 적용된다는 점이 인상적이었다.

웹 서버 실습을 진행하면서, IP 설정이 제대로 되지 않으면 이후 모든 작업이 무의미해진다는 사실을 자연스럽게 체감할 수 있었다.

2. 방화벽 설정이 왜 중요한지 직접 경험하다

Apache를 설치하고 서비스를 실행했는데도, 브라우저에서 접속이 되지 않아 잠시 당황했던 순간이 있었다. 확인해 보니 방화벽에서 해당 포트가 열려 있지 않은 상태였다.

리눅스에서는 기본적으로 방화벽이 활성화되어 있고, 허용된 포트만 외부 접근이 가능하다는 점을 실습을 통해 확실히 이해하게 되었다. 이번에는 firewall-cmd를 사용해 8080 포트를 열었다.

이 경험을 통해, 웹 서비스 문제처럼 보이는 상황의 원인이 실제로는 방화벽인 경우가 많다는 이야기가 왜 나오는지 알 것 같았다.

방화벽 설정 명령문 이미지

3. Apache(httpd) 설치와 서비스 제어

웹 서버로는 Apache(httpd)를 사용했다. 패키지 관리 도구인 dnf를 통해 설치하고, systemctl 명령어로 서비스를 제어했다.

실습 중 가장 기억에 남았던 부분은 서비스를 시작하는 것과 부팅 시 자동 실행을 설정하는 것이 전혀 다른 개념이라는 점이었다.

  • systemctl start httpd – 서비스 즉시 실행
  • systemctl restart httpd – 설정 변경 후 재시작
  • systemctl status httpd – 상태 확인
  • systemctl enable httpd – 부팅 시 자동 실행

실무 환경에서는 서버가 재부팅된 뒤 웹 서비스가 올라오지 않아 문제가 발생하는 경우도 많다고 한다. 이번 실습을 통해 그 이유를 직접 이해할 수 있었다.

4. 웹 문서 루트를 변경해 보며 배운 점

기본적으로 Apache의 웹 문서 루트는 /var/www/html 경로로 설정되어 있다. 이번 실습에서는 이를 변경해, 특정 사용자(joe)의 홈 디렉토리 하위에 웹 파일을 두는 방식으로 구성했다.

처음에는 단순히 경로만 바꾸면 될 것이라고 생각했지만, 실제로는 권한 설정과 보안 정책까지 함께 고려해야 했다. 이 과정에서 웹 서버 운영이 생각보다 세밀한 작업이라는 점을 느꼈다.

5. 웹 템플릿을 배포하며 이해한 웹 서버의 역할

웹 서버가 정상적으로 동작하는지 확인하기 위해 Bootstrap 기반의 무료 웹 템플릿을 사용했다. zip 파일을 다운로드한 뒤, 필요한 도구를 설치해 압축을 해제했다.

  • dnf install zip unzip
  • unzip 파일명.zip

이 과정을 통해 웹 서버는 결국 HTML, CSS, 이미지 파일을 클라이언트에게 전달하는 역할을 한다는 아주 기본적인 개념을 다시 한 번 정리할 수 있었다.

6. 포트 변경과 접속 확인 과정

Apache의 기본 포트는 80번이지만, 이번 실습에서는 8080 포트를 사용했다. 포트를 변경한 뒤에는 반드시 다음 세 가지를 함께 확인해야 했다.

  1. Apache 설정 파일의 포트 설정
  2. 방화벽에서 해당 포트 허용 여부
  3. 브라우저에서 실제 접속 테스트

브라우저에서 아래 주소로 접속해 웹 페이지가 정상적으로 출력되는 것을 확인하며 실습을 마무리했다.

http://192.168.88.101:8080

7. SELinux 설정에서 막히며 배운 점

파일 권한과 Apache 설정이 모두 정상인데도 웹 페이지가 열리지 않는 상황이 발생했다. 확인해 보니 SELinux 정책이 원인이었다.

vi 에디터를 사용해 설정을 수정하고 나서야 웹 서버가 사용자 홈 디렉토리의 파일에 접근할 수 있었다.

이번 경험을 통해 SELinux가 보안을 강화하는 중요한 장치이면서도, 설정을 이해하지 못하면 가장 먼저 장애를 만드는 요소가 될 수 있다는 점을 알게 되었다.

8. 이번 실습을 통해 정리한 핵심 정리

  • IP 설정은 모든 서버 작업의 출발점이다
  • 웹 접속 문제 발생 시 방화벽을 가장 먼저 확인해야 한다
  • systemctl enable 설정은 운영 환경에서 필수다
  • 웹 문서 루트 변경 시 권한과 보안 정책을 함께 고려해야 한다
  • 포트 변경은 서비스 설정과 방화벽을 항상 함께 점검해야 한다
  • SELinux는 이해하고 다뤄야 할 중요한 보안 요소다

마무리하며

이번 리눅스 웹 서버 구축 실습은 단순히 명령어를 익히는 시간이 아니라, 서버가 실제로 어떻게 동작하고, 어디에서 문제가 발생하는지를 스스로 확인해보는 경험이었다.

아직은 익숙하지 않은 부분도 많지만, 이런 과정을 하나씩 기록해 두는 것이 앞으로 클라우드 환경에서 서버를 다룰 때 큰 도움이 될 것이라 생각한다.


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 클라우드학습기