처음엔 뭣도 모르고 구니콘 구니콘 했는데, G-Unicorn이였다...
지유니콘이란 Green Unicorn의 약자로 UNIX 용 Python WSGI HTTP 서버다. 프리포크 방식의 작업자 모델이다. Gunicorn 서버는 다양한 웹 프레임 워크와 광범위하게 호환되며 간단하게 구현되고 서버 리소스가 가볍고 상당히 빠르다.
(Prefork 방식 : 한 자식프로세스당 하나의 쓰레드를 사용하는 방법 기본 사용 메모리가 worker보다 높으며 프로세스 간 메모리를 공유하지 않는 독립 형태이므로 안정적임.)
백엔드로서 프로젝트를 진행하며 프론트엔드를 위해 서버를 지속적으로 열어놔야하는 수고로움이 있다. Gunicorn과 AWS를 활용해서 간단하게 24시간 돌아가는 서버를 만들 수 있다.
(다음은 AWS, Django를 활용하는 예시다)
[선행조건]
[미니콘다 설치법]
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
source. bashrc
sudo apt-get update
과 sudo apt-get upgrade
명령어를 통해 패키지 업데이트 및 업그레이드를 실행시켜준다.[프로세스]
1) SSH 실행 : aws_pem파일이 있는 디렉토리에서 다음과 같이 EC2 인스턴스 주소에 맞는 ssh 실행 명령어를 실행시킨다.
(ssh -i KeywookKim.pem ubuntu@3.34.178.191)
2) gcc 설치 : sudo apt-get install gcc
3) mysql client 설치 : `sudo apt-get install libmysqlcilent-dev``
4) git clone을 통해 ProjectRepository를 복사
5) requirement 목록에 있는 모든 파일을 한번에 설치 : pip install -r requirements.txt
6) AWS -> EC2인스턴스에서 public IP확인 :
상단의 화면에서 IPv4퍼블릭 IP라 부르는 항목에 쓰여져있는 아이피주소가 pulbic IP다.
7) RDS엔드포인트를 확인 :
my sql -u root -h '엔드포인트주소' -p
로 RDS를 로드를해보며 RDS가 정상적으로 구동되는지 확인
8) pip install gunicorn
으로 지유니콘 설치
9) 프로젝트 디렉토리에서 wsgi파일을 찾아서 해당 wsgi파일이 있는 디렉토리명을 지유니콘에 기입한다.(처음 django startproject할 때 이름이다) 이후 다음과 같은 명령어로 실행하면 SSH세션이 끊어져도 랩탑을 꺼도 24시간 돌아가는 서버를 구축할 수 있다.
nohup gunicorn --bind=0.0.0.0:8000 devx.wsgi&
10) ps -ef | grep python
을 통해 정상적으로 지유니콘 실행상태와 PID넘버!를 확인해 볼 수 있다.(띄어쓰기 잘 맞춰야 실행된다)
11) 정상적으로 실행된 모습이다.
PID 넘버는 5571과 24746이다. (wsgi가 어디 라인에서 실행되는지 잘 살펴보자)
지유니콘을 종료하고 싶다면 명령어 kill 5571
kill 24746
을 써주면 종료가 된다. (Kill 뒤에 PID 넘버를 입력하면 된다.)