본문 바로가기

웹 기술

Django(장고) aws에서 실행시키기! - aws 배포

c참고 사이트

www.alibabacloud.com/blog/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04_594319

 

How to Set Up Django with Postgres, Nginx, and Gunicorn on Ubuntu 16.04

In this tutorial, we will install and configure Django with PostgreSQL database and Gunicorn on an Alibaba Cloud ECS instance with Ubuntu 16.04.

www.alibabacloud.com

 

pem 으로 된 key 파일이 있는 경우를 base로 한다. 

 

key가 있는 곳으로 가서 

[ssh -i key.pem ubuntu@도메인] 통해 원격으로 접속한다 

: 추천 ssh툴 : mobaxterm! 개인적으로 가장 편리하다고 느낀다. 

다운로드 사이트 : mobaxterm.mobatek.net/download.html

 

MobaXterm free Xserver and tabbed SSH client for Windows

The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more!

mobaxterm.mobatek.net

 

그리고 이후 mobaxterm을 통해 드래그 앤 드롭으로 만들어둔 django 프로젝트를 옮겨준다. 

(// 깃으로 받아오면 쉬울거라고 생각한다..)

이후 cd "플젝"/"플젝" (장고는 보통 두개 생긴다...)으로 manage.py파일이 있는 곳으로 이동한다. 

 

그럼 이제 명령어를 따라 하면 된다. 

sudo apt-get update -y

이 코드로 먼저 update를 해준다.. 나중에 에러를 방지하기 위하여..  sudo를 쳐줘야 관리자 권한으로 실행이 가능한 경우가 많으니 같이 쓰는걸 베이스로 하자. 

sudo apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx -y

그리고 이후 위와 같은 명령어로 nginx 를 설치해준다. postgresql도 설치해주지만, 이전에 mariadb와 같이 깔아 놨다면 그냥 진행하도록 하자. 

이후 이제 가상환경을 설치 해준다. 

sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv

업그레이드는 오류 방지용으로 --upgrade 안쳐도 되지만 혹시나 모를 오류를 위해 그냥 쳐주고 넘어가자.

virtualenv 가상환경이름

그리고 가상환경을 만들어 준다.  그럼 폴더가 옆에 가상환경 이름으로 생성될텐데, 

source 가상환경이름v/bin/activate

을 통해 가상환경을 실행시켜준다. 

(가상환경이름) root@mail:~/내플젝 pip install django gunicorn psycopg2

그리고 디쟁고와 gunicorn을 설치해준다.

설치가 완료되면, 아래와 같이 뜨는데 그럼 완료 된 것이다. 

Installing collected packages: pytz, django, gunicorn, psycopg2
Successfully installed django-2.1.1 gunicorn-19.9.0 psycopg2-2.7.5 pytz-2018.5

그리고 장고에서 settings.py 파일을 보고는 

ALLOWED_HOSTS = ['192.168.43.192']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2(또는 내 디비)',
        'NAME':  '내플젝',
        'USER' : 'testuser',
        'PASSWORD' : 'password',
        'HOST' : 'localhost',
        'PORT' : '',
    }
}

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

로 바꿔준다. 

이후 파일을 옮겨오고 

python manage.py makemigrations
python manage.py migrate

를 통해 해당 manage.py파일이 있는 곳에서 한번 바뀐게 잇나 확인해주고, 

잘 되면

(내가상환경) root@mail:~/내플젝 gunicorn --bind 0.0.0.0:8000 내플젝.wsgi

으로 실행시키면 서버가 구동되는 모습을 확인할 수 있다. 

앞에 nohup이라는 명령어를 함께 붙이면 nohup.out으로 파일로 로그가 기록되서 ssh툴을 꺼논 이후에도 확인이 가능하다. 

(내가상환경)  root@mail:~/내플젝 nohup gunicorn --bind 0.0.0.0:8000 내플젝.wsgi

 

이후 이제 실행중인 서버를 껐다가 다시 돌리고 싶다면. 

(내가상환경)  root@mail:~/내플젝 ps -ef | grep "python"

명령어를 통해 실행중인 포트를 확인하고 

kill -9 장고실행중인포트번호

를 통해 서버를 끈 다음에 다시 

(내가상환경)  root@mail:~/내플젝 nohup gunicorn --bind 0.0.0.0:8000 내플젝.wsgi

명령어를 통해 같은 포트로 실행이 가능하다. 

 

아 그리고 이전에 로컬에서 사용하던 환경에서

pip freeze > requirement.txt

로 환경파일을 텍스트로 저장해두고, 

pip -r install requirement.txt 를 통해 한번에 깔아주면 좋다. 

왜 내 코드블럭 안예쁘지.. 시간 날때 수정해놔야지..

'웹 기술' 카테고리의 다른 글

VueJS로 S3 파일 업로드 , 관리 하기  (0) 2020.08.24