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번호
하시면 됩니다.
고생하셨습니다~
'서버 배포' 카테고리의 다른 글
EC2로 node.js (express)배포하기(pm2, nginx 사용) (0) | 2019.11.05 |
---|---|
EC2로 django 서버 배포하기(ubuntu 16.04버전)(1) (0) | 2019.08.02 |