EC2로 django 서버 배포하기(ubuntu 16.04버전)(2)

2019. 11. 8. 16:25서버 배포

이제 생성된 EC2 인스턴스에 우리가 만들어 놓은 Django 프로그램을 배포해 보겠습니다.

 

인스턴스를 눌러 Connect를 누르면 다음과 같은 화면이 나옵니다,

 

그 전에 key-pair(60decibel.pem)를 다운 받은 위치로 이동해서 먼저 $ chmod 400 키 이름.pem을 칩니다.

($ ex) chmod 400 60Decibel.pem)

 

그 다음 example에 있는 코드를 그대로 복사해서 입력합니다.

( ex) ssh -i "60Decibel.pem" ubuntu@ec2-13-124-233-136.ap-northeast-2.compute.amazonaws.com)

 

yes를 누르면 ubuntu 서버에 들어온 것을 알 수 있습니다. 

 

그럼 먼저 nginx를 설치하겠습니다. 

 

$ sudo apt-get update

 

$ sudo apt-get install nginx

 

$ cd /etc/nginx

 

$ sudo service nginx start(/etc/nginx/ 위치에서)

 

이제 ec2 인스턴스에 있는 Public IP로 이동해서 다음과 같이 화면이 뜨면 nginx가 제대로 실행되고 있는 겁니다.

 

그 다음 nginx를 저희 서버와 연결해보겠습니다.

 

$ cd /etc/nginx/sites-available

 

$ sudo vim 파일 이름( ex) sudo vim django)

 

아래 화면처럼 치시면 됩니다.

 

 server_name 다음에는 여러분의 Public IP를 쓰시면 됩니다.

 

그런 다음 /etc/nginx/sites-enabled로 이동한 다음

 

$ sudo ln -s ../sites-available/파일이름(sites-available에 만들어 놓은 파일 이름)/심볼릭 링크 이름

( ex) sudo ln -s ../sites-available/django django)

 

그럼 다음과 같이 색깔로 표시 된것을 볼 수 있습니다.

 

지금 default도 심볼릭 링크가 되어 있기 때문에 링크를 해제하거나 default 파일을 삭제해줘야 합니다.

 

저는 삭제해보겠습니다.

 

$ rm default

 

이제 가상환경을 설치하고 장고를 깔아보겠습니다. 이번 시간에는 pipenv를 사용하겠습니다.

 

$ sudo apt-get update

$ sudo apt-get install python3-pip

$ export LANG=C.UTF-8 (환경 변수 설정)

$ export LC_ALL=C.UTF-8 (환경 변수 설정)

$ pip3 install pipenv

$ pipenv shell

$ pipenv install django

 

그런 다음 git에 올린 장고 repository를 clone 받습니다.

 

ex) git clone https://github.com/parkjihwanjay/django_comment.git

 

그런 다음 settings.py에 들어가서 ALLOWED_HOSTS에 자기 서버 주소를 추가해줍니다.

 

 

혹시 migrations 폴더를 git에 안 올리신 분들은 migrations 폴더를 만들어 주시고 하위에  __init__.py 파일을 만든 다음 마이그레이션을 해줍니다.

 

$ python manage.py makemigrations

 

$ python manage.py migrate

 

마지막으로 $ python3 manage.py runserver 0.0.0.0:8000

 

이제 여러분들의 서버 주소로 가면 장고로 만든 페이지가 보일 겁니다.

 

이제 gunicorn을 설치하겠습니다.

 

$ pipenv install gunicorn(pipfile이 있는 위치에서 해주세요)

 

그런 다음 settings.py에 들어가 ALLOWED_HOSTS 에 ‘127.0.0.1’ 추가해줍니다.

 

이제 manage.py가 있는 위치에서

 

$ nohup pipenv run gunicorn 프로젝트 이름.wsgi:application --bind
=127.0.0.1:8000&

( ex) nohup pipenv run gunicorn counting.wsgi:application --bind
=127.0.0.1:8000&)

 

그럼 여러분들의 IP로 들어가면 장고로 만든 페이지를 볼 수 있습니다. 

 

ec2를 종료해도 백그라운드에서 계속 실행합니다. 만약 종료시키고 싶다면

 

$ ps -ef | grep python

 

하셔서 pid 번호를 찾고

 

$ kill pid번호

하시면 됩니다.

 

 

고생하셨습니다~