AWS Lightsail(Nginx - Gunicorn - Django) 구축(4)

흑이·2022년 2월 2일
0

Nginx란 무엇인지?
Nginx 과 Gunicorn 연결

  • Nginx는 웹 서버(Web Server) 이다.
  • 웹 서버(Web Server)는 브라우저의 정적 페이지 요청을 처리하고 동적 페이지 요청인 경우 WSGI 서버를 호출하여 응답한다.
  • Apache는 하나의 쓰레드에서 하나의 클라이언트를 처리하기 때문에 지연시간이 존재
  • Single Thread 기반으로 context switching을 하지 않는다.
  • Nginx는 이벤트 지향 아키텍쳐(Event-driven Architecture) 방식을 이용하여, 메모리 생성속도가 빠르고 더 작은 쓰레드로 많은 클라이언트를 처리
  • 환경설정을 수정하고 서버 데몬을 재시작할 필요 없이 리로드 시그널을 보낸다.
  • Load balancing, TLS/SSL 보안, 프록시 기능을 제공

Nginx 설치

yum 저장소에는 nginx가 없기 때문에 외부 저장소를 추가 해야한다.
$ cd /etc/yum.repos.d
$ vi sudo nginx.repo

$ yum install -y nginx

설치 완료 후 실행해보면 http://127.0.0.1:포트번호를 통해서 장고 서버에 접속하게 된다.

이를 http://127.0.0.1 으로 포트번호 없이 접속하도록 변경할 것이다.

Nginx Proxy 설정하기

  • 다른 블로그들을 참고 할때 nginx를 설치하면 sites-available와 sites-enabled 디렉토리가 생성되는데.. 나는 없었다.... 구글링을 통해 해결 하였다... 엄청 삽질함...

nginx sites-available folder not found

  • 디렉토리 생성
    $sudo mkdir /etc/nginx/sites-available
    $sudo mkdir /etc/nginx/sites-enabled
  • /etc/nginx/nginx.conf 설정 추가
    include /etc/nginx/sites-enabled/*;

  • create a default sample server configuration
    cd /etc/nginx/sites-available
    sudo touch default

  • nginx 설정 추가하기

server {
    listen 80;
    server_name [IP주소];

    charset utf-8;

    location / {
        proxy_pass http://[IP주소]:8000;
    }
}

  • 링크 설정
    $ sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

  • sites-enabled 디렉터리는 site-available 디렉터리에 있는 설정 파일 중에서 활성화하고 싶은 것을 링크로 관리하는 디렉터리이다.

  • nginx 설정 문법 검사 및 재기동
    sudo nginx -t
    sudo systemctl restart nginx


근데 에러가 발생한다..!!!

  • 권한 관련 거부 발생 ...
    failed (13: Permission denied) while connecting to upstream

  • 구글링을 해보니 SELinux의 httpd 관련 허용 설정이 필요했다.

  • CentOS 5.6인가부터 OS 차원에서 네트워크를 사용하는걸 막아 놨다고 한다...

  • 해결 방법
    setsebool -P httpd_can_network_connect on

  • SELinux 자세한 내용은
    https://www.lesstif.com/system-admin/centos-selinux-6979732.html

  • 이후 정상적으로 Proxy가 완료되었다.

0개의 댓글