본문 바로가기
OS/Linux

[AWS] EC2 우분투(Ubuntu) 20.04 Nginx 서버 추가

by 8ugust 2022. 2. 2.

 Nginx를 설치하면 default 서버는 80포트로 잡혀있다. 간혹 Nginx가 말썽을 부릴 때가 있어서, 테스트 용도로 default 80포트 서버는 건드리지 않고, 새로운 서버를 추가하여 사용할 것이다. 필자는 라라벨(Laravle) 프로젝트를 사용하였다. 여러 게시글을 보고 설정을 따라하는데 진행이 되질 않는다면 다음의 사항을 확인해보자. Nginx의 서버 파일을 새롭게 추가하고, 심볼릭 링크를 생성하여 할당하는 등 다소 복잡한 면이 있으니 천천히 따라해보길 바란다.

 

 

 


1. Nginx 서버 파일 추가

// 서버 파일 생성
$ vi /etc/nginx/site-available/YOUR_SERVER_FILE_NAME


// 편집기로 아래 내용 작성
// 소켓의 경우 php버전에 맞게 작성
server { 
    listen YOUR_PORT;
    listen [::]:YOUR_PORT; 
    root YOUR_PROJECT_DIR/public; 
    index index.html index.htm index.nginx-debian.html; 

    location / { 
        try_files $uri $uri/ /index.php?$query_string =404; 
    } 
    
    location ~ \.php$ { 
        include snippets/fastcgi-php.conf; 
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; 
    } 
    
    location ~ /\.ht { 
        deny all; 
    }
}

  /etc/nginx/site-available/test_server_file  처럼 임의로 서버파일을 해당 경로에 생성한다. 이후 위에 적힌 내용 그대로 편집기를 사용해서 작성하는데, 사용할 포트를 지정하고, 프로젝트의 경로를 설정해준 뒤, PHP-FPM 연동을 위해 소켓을 연결해준다. 저장하고 나오면 성공.

 

 

// Nginx 설정파일 심볼릭 링크 생성
$ ln -s /etc/nginx/sites-available/test_server_file /etc/nginx/sites-enabled/


// 프로젝트 심볼릭 링크 생성
$ ln -s YOUR_PROJECT_DIR /var/www

 Nginx 설정파일과 프로젝트의 심볼릭 링크를 생성해준다. 만약 프로젝트의 경로가 /app/test_project 라고 한다면, 프로젝트 심볼릭 링크 생성은 ln -s /app/test_project /var/www  명령어를 입력하면 된다. 심볼릭 링크가 생성되지 않으면 해당 프로젝트를 찾아내지 못하는 경우가 있으므로 반드시 생성해주도록 하자.

 

 

 


2. 프로젝트 권한 확인

// 프로젝트 상위 경로 권한 확인
$ ls -al YOUR_PROJECT_PARENT_DIR


// Nginx의 사용자:사용그룹 확인
$ vi /etc/nginx/nginx.conf
vi(line 1)> user www-data


// 프로젝트 사용자:사용그룹 Nginx로 변경
$ chown -R www-data:www-data YOUR_PROJECT_PARENT_DIR


// 프로젝트 권한 변경
$ chmod -R 777 YOUR_PROJECT_PARENT_DIR

 당연한 이야기지만, 프로젝트 생성을 Nginx 내부 폴더 밖에다가 생성했다면 Nginx가 해당 프로젝트를 확인하기 위해 권한을 설정해줘야만 한다. Nginx.conf 파일을 확인해서 사용자 및 사용자그룹을 확인한 뒤, 프로젝트 폴더의 권한을 변경해주자. Parent_dir로 표현한 이유는, 상위 폴더에 -R 옵션을 통해 전체 권한을 적용해버리기 위해서이다.

 

 

 


3. AWS EC2 보안그룹 TCP 포트 설정

 여기까지 따라했는데도 서버가 열리지 않는다면 거의 100% 확률일 정도로 이 문제일 것이다. AWS EC2는 보안그룹을 통해 포트를 직접 할당해줘야만 하는데, AWS를 처음 사용하는 사용자들은 이 내용을 인지하지 못하는 편이 많다. 내가 그랬다. 그래서 이 글을 적는 중이다. 설정은 간단하다.

 

 

인스턴스 하단 보안 탭 > 보안 그룹 클릭

 

 

보안 그룹 하단 인바운드 규칙 탭 > 인바운드 규칙 편집 버튼 클릭

 

 

1. 규칙추가 버튼 클릭

2. 유형 사용자 지정 TCP 설정

3. 포트 범위 설정

4. 소스 Anywhere IPv4 설정

5. 규칙 저장 버튼 클릭

 

 

 

이제 내 서버에 접속이 되었을 것이다.

댓글