DevOps 환경에서 정적 웹사이트를 배포하는 방법은 점점 더 간편해지고 있습니다. 특히 AWS(Amazon Web Services)와 Nginx를 활용하면 효율적으로 정적 웹사이트를 호스팅할 수 있습니다. 하지만 이 과정에서 여러 가지 문제에 직면할 수 있습니다. 이번 포스팅에서는 AWS에서 Nginx를 통한 정적 웹사이트 배포의 문제와 그 해결법에 대해 알아보겠습니다.
AWS EC2 인스턴스 설정
AWS에서 Nginx를 사용하여 정적 웹사이트를 호스팅하기 위해서는 먼저 EC2 인스턴스를 설정해야 합니다. 다음은 EC2 인스턴스를 생성하는 기본적인 단계입니다.
- AWS Management Console에 로그인합니다.
- EC2 대시보드로 이동하여 인스턴스 시작을 클릭합니다.
- 원하는 AMI(Amazon Machine Image)를 선택합니다. 예를 들어, Ubuntu Server를 선택할 수 있습니다.
- 인스턴스 유형을 선택하고, 필요한 경우 추가 설정을 합니다.
- 키 페어를 생성하거나 기존 키 페어를 선택하여 인스턴스를 시작합니다.
- 방화벽 설정: Nginx가 제공하는 포트(기본적으로 80번 포트)가 열려 있는지 확인해야 합니다. AWS 보안 그룹에서 HTTP 포트가 허용되어야 합니다.
- 도메인 연결 문제: 도메인을 사용하고 있다면 DNS 설정이 올바르게 되어 있는지 확인합니다. 도메인이 AWS EC2 인스턴스의 공인 IP 주소를 가리키고 있어야 합니다.
- 404 오류: Nginx 설정에서
try_files지시어가 올바르게 설정되어 있는지 확인하고, 웹사이트 파일이 올바른 경로에 위치해 있는지 점검합니다. - 퍼미션 문제:
/var/www/html/mywebsite디렉토리의 권한이 올바르게 설정되어 있는지 확인합니다. Nginx가 파일에 접근할 수 있는 권한이 필요합니다.
Nginx 설치
인스턴스에 SSH로 접속한 후 Nginx를 설치합니다.
sudo apt update
sudo apt install nginx
Nginx가 성공적으로 설치되면, 다음 명령어로 Nginx 상태를 확인할 수 있습니다.
sudo systemctl status nginx
정적 웹사이트 파일 준비
정적 웹사이트 파일을 준비합니다. HTML, CSS, JavaScript 파일을 포함한 폴더를 생성하고, 이를 /var/www/html 디렉토리로 복사합니다.
sudo mkdir -p /var/www/html/mywebsite
sudo cp -r /path/to/your/website/* /var/www/html/mywebsite/
이제 Nginx가 이 파일을 제공할 수 있도록 설정해야 합니다.
Nginx 설정
Nginx의 기본 설정 파일을 수정하여 정적 파일을 제공할 수 있도록 합니다.
sudo nano /etc/nginx/sites-available/default
기본 설정을 다음과 같이 수정합니다.
server {
listen 80;
server_name your_domain.com; # 도메인 이름 또는 서버 IP
location / {
root /var/www/html/mywebsite; # 웹사이트 파일 경로
index index.html; # 기본 인덱스 파일
try_files $uri $uri/ =404; # 요청 파일이 없을 경우 404
}
}
설정을 저장한 후, Nginx를 다시 시작합니다.
sudo systemctl restart nginx
문제 해결
sudo chown -R www-data:www-data /var/www/html/mywebsite
sudo chmod -R 755 /var/www/html/mywebsite
마무리
AWS에서 Nginx를 통해 정적 웹사이트를 배포하는 과정은 비교적 간단하지만, 다양한 문제에 직면할 수 있습니다. 위에서 설명한 단계와 해결책을 통해 이러한 문제를 사전에 예방하고, 효과적으로 웹사이트를 배포할 수 있습니다. Nginx는 성능이 뛰어나고 다양한 설정을 통해 유연하게 대응할 수 있는 웹 서버이므로, 이를 활용하여 효율적인 웹사이트 운영을 기대할 수 있습니다.