[Python] Ubuntu+ Django + Gunicorn + Nginx + Postgres
by 담배맛구마CentOS Ubuntu + Django + Gunicorn + Nginx + Postgres
ㅇ ㅈ ㄷ ㅇ !
1. Setting Ubuntu Server 16.04
Image : https://www.ubuntu.com/download/server
1) 어... 인터페이스가 그냥 안잡히네
sudo nano /etc/network/interfaces
auto ens33
iface ens33 inet static
address x.x.x.x
netmask x.x.x.x
gateway x.x.x.x
dns-nameservers 8.8.8.8 168.126.63.1
2) Minimal로 깔아서 ssh 서버도 없네
sudo apt-get install openssh-server
3) 필요한거 다깔아보자
sudo apt-get install python3-pip python3-dev virtualenv
sudo apt-get install postgresql postgresql-contrib libpq-dev
sudo apt-get install nginx
Python3-dev는 Python관련되서 컴파일 할때 쓰는 헤더 같은 정보(#include <Python.h> 요런거)
2. Postgres 9.5.7
postgresSQL 설치하면 posergres 계정이 자동생성됨
1) postgres 계정으로 psql 실행해서 기본적인 설정하자
sudo -u postgres psql
CREATE DATABASE 데이터베이스이름;
CREATE USER 계정명 WITH PASSWORD 'password';
ALTER ROLE 계정명 SET client_encoding TO 'utf8';
ALTER ROLE 계정명 SET default_transaction_isolation TO 'read committed';
ALTER ROLE 계정명 SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE 데이터베이스이름 TO 계정명;
3. Python - Django
1) virtualenv으로 환경 만들고 사용하기
virtualenv -p python3 경로명
source 경로명/env/bin/activate
아래부터는 activate를 실행한 상태로 진행해야 함
2) Django Gunicorn psycopg2를 설치하자
pip3 install django gunicorn
psycopg2
psycopg2는 Django와 PostgresSQL과의 Adapter기능
3) Django 프로젝트를 생성
django-admin startproject 프로젝트명
4) Setting.py 수정 (Database 및 Static 디렉토리 수정)
# setting.py
DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.postgresql_psycopg2',
'NAME' : '데이터베이스명',
'USER' : '유저명',
'PASSWORD': '유저패스워드명',
'HOST' : 'localhost',
'PORT' : '',
}
}
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
5) Database 마이그레이션
./manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying sessions.0001_initial... OK
6) Static 파일들을 아까 Setting.py에서 정의한 경로로 모으기
manage.py collectstatic
4. Gunicorn
1) 시스템 서비스에 등록해서 자동으로 실행되게끔!
sudo vim /etc/systemd/system/gunicorn.service
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=실행할 유저명
Group=www-data
WorkingDirectory=디렉토리경로
ExecStart=gunicorn경로 --access-logfile - --workers 3 --bind unix:프로젝트경로/socket.sock 프로젝트명.wsgi:application
[Install]
WantedBy=multi-user.target
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
5. Nginx
1) Gunicorn으로 프록시 타도록 설정!
sudo nano /etc/nginx/sites-available/프로젝트명
server {
listen 80;
server_name HOST헤더에찍힐IP나도메인;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root Static디렉토리경로;
}
location / {
include proxy_params;
proxy_pass http://unix:프로젝트경로/socket.sock;
}
}
sudo ln -s /etc/nginx/sites-available/프로젝트명 /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
안된다면 방화벽설정보기 ufw 같은 암덩어리가 있을수도
참조
반응형
'Dev-' 카테고리의 다른 글
[Python] DNS Packet 구조 코드화 (0) | 2018.07.29 |
---|---|
[C#] Adobe Flash Player 자동 업데이트 문제와 해결 (0) | 2018.07.29 |
[VBScript] WScript Run과 Exec (2) | 2017.04.10 |
[Python] 나름대로 만들어본 PyV8를 이용한 악성스크립트 분석 (0) | 2016.07.17 |
[Python] Geoip를 통한 IP 별 국가코드 매칭 (2) | 2016.07.09 |
블로그의 정보
정윤상이다.
담배맛구마