2019.06.05 EC2에 장고 서버 설정하기
EC2에 장고 서버 설정하기
EC2에 장고 서버 셋팅하기
01. VIM 설치
- sudo apt-get install vim
02. 파이썬 관련 패키지 설치
- sudo apt-get install python3-dev python3-venv python3-pip
03. django 애플리케이션 구동용 계정을 생성합니다.
- sudo useradd -b /home -m -s /bin/bash django
04. www-data 그룹에 django 유저를 추가합니다.
- sudo usermod -a -G www-data django
05. FTP로 업로드 할 때 ubuntu 계정을 사용하기 때문에, 애플리케이션 소스코드 폴더에 쓰기 권한을 얻기 위해 www-data 그룹에 ubuntu 유저를 추가합니다.
- sudo usermod -a -G www-data ubuntu
06. 소스코드를 업로드 하기 위한 폴더를 만듭니다.
- sudo mkdir -p /var/www/django
- -p는 사이경로를 모두 만들어준다.
07. 소스코드 업로드 폴더의 소유자 변경
- sudo chown django:www-data /var/www/django
08. 소스코드 폴더에 그룹 쓰기 권한을 부여
- sudo chmod -R g+w /var/www/django
09. 가상 환경을 소스코드 폴더 밑에 만듭니다.
- sudo python3 -m venv /var/www/django/venv
10. 관리자 모드로 변경 이후 가상 환경 활성화
- sudo -s
- source venv/bin/activate
11. 가상 환경에 장고 설치 및 프로젝트 생성
- pip install django
- django-admin startproject config .
- python manage.py migrate
12. WSGI 모듈 중 하나인 uwsgi 설치
- pip install uwsgi
13. uwsgi 동작확인
- uwsgi –http :8000 –home /var/www/django/venv/ –chdir /var/wwww/django/ –module config.wsgi
- DisallowedHost 확인하기
- DEBUG 상태 및 allow host 조정 필요
14. UWSGI 모듈을 위한 폴더를 만듭니다.
- sudo mkdir /var/www/django/run
- sudo mkdir /var/www/django/logs
sudo mkdir /var/www/django/ini
- 현재 해당 폴더에 있으면
- sudo mkdir sudo mkdir run logs ini
15. 폴더의 소유권 변경
- sudo chown django:www-data rrun
- sudo chown django:www-data logs
16. uwsgi.ini 파일을 작성해줍니다.
- sudo vim /var/www/django/ini/uwsgi.ini
[uwsgi]
uid = django
base = /var/www/django
home = %(base)/venv
chdir = %(base)
module = config.wsgi:application
evn = DJANGO_SETTINGS_MODULE=config.settings
master = true
processes = 5
socket = %(base)/run/uwsgi.sock
logto = %(base)/logs/uwsgi.log
chown-socket = %(uid):www-data
chmod-socket = 660
vaccume = true
17. uwsgi.service 파일 생성 및 작성
- sudo vim /etc/systemd/system/uwsgi.service
[Unit]
Description=uWSGI Emperor service
[Service]
ExecStart=/var/www/django/venv/bin/uwsgi --emperor /var/www/django/ini
User=django
Group=www-data
Restart=on-failure
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all
StandardError=syslog
[Install]
WantedBy = multi-user.target
18. uwsgi.service를 시작하고 시작프로그램으로 등록
- sudo systemctl start uwsgi
- sudo systemctl enable uwsgi
19. 사이트 설정파일을 변경하여 기존의 스테틱 웹 서버에서 장고 애플리케이션이 구동하도록 변경
- sudo vim /etc/nginx/sites-available/staticweb
- 이전에 이미 설정 완료!
upstream django {
server unix:/var/www/django/run/uwsgi.sock;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
charset utf-8;
access_log /var/www/django/logs/access.log;
error_log /var/www/django/logs/error.log;
server_name _;
location = /favicon.ico {access_log off; log_not_found off; }
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
include /etc/nginx/uwsgi_params;
uwsgi_pass django;
}
}
20. 전체 권한 변경
- sudo chown -R django:www-data /var/www/django
소스코드 업데이트 할 때
- sudo chmod -R g+w /var/www/django
- 새로운 폴더에 대해서는 쓰기 권한이 없어서 이후에 올릴 때 올라가지 않을 수도 있다.
- sudo systemctl restart nginx