- sudo apt-get -y install openssh-server
- sudo apt-get update
- sudo apt-get -y upgrade
- sudo apt-get -y install python-virtualenv
- install python 3.4.2 => setuptools 및 pip는 자동 설치. (python 3.4에 포함.)
sudo apt-get install libssl-dev openssl
wget https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz
tar -xvf Python-3.4.2.tgz
cd Python-3.4.2
./configure
make
sudo make install
./python
- sudo apt-get install nginx
- Python2 => python3 변경
python -V
python3 -V
which python
which python3
sudo mv /usr/bin/python /usr/bin/python -2.7.x
sudo ln -s /usr/bin/python3 /usr/bin/python
python -V
python3 -V
- sudo pip3 install uwsgi python2.x 버전을 사용하려면 pip install uwsgi
- sudo mkdir /www/func.dev func = 내 폴더 이름
- sudo chown func:func /www/django/func
- cd /www/django/func
- mkdir conf extras
- virtualenv -p python3 venv
- cd venv
- source bin/activate
- cd /www/django/func
- pip3 install django
- django-admin.py startprojcet mysite mysite = django 프로젝트 이름
- sudo chown func:func /www/func/django/mysite
- sudo chmod 755 /www/func/django/mysite
- cd mysite
- mkdir db
- deactivate
- sudo nano /etc/init/uwsgi.conf pip3 install uwsgi를 할 경우 sudo service uwsgi start|stop|restart|reload 를 가능하게 하기 위한 작업
description "uWSGI Emperor"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
exec /usr/local/bin/uwsgi --master --die-on-term --emperor /etc/uwsgi/vassals/
- nano /www/func/django/conf/mysite.ini mysite = django 프로젝트 이름 sudo service uwsgi start|stop|restart|reload 하기위한 작업 %n는 ini 파일이름을 자동으로 불러옴
https://uwsgi-docs.readthedocs.org/en/latest/Configuration.html
py-autoload는 개발 후 주석처리 할것!
[uwsgi]
#variables
base = /www/django/func
#config
uid = www-data
gid = www-data
chmod-socket = 664
chown-socket = www-data
;die-on-term = true
;emperor = true
;no-site = true
;protocol = uwsgi
;master = true
py-autoreload = 10
enable-threads = true
limit-as = 512
processes = 5
vacuum = true
chdir = %(base)/%n
module = %n.wsgi:application
virtualenv = %(base)/venv
socket = /dev/shm/%n.sock
pidfile = %(base)/extras/%.pid
touch-reload = %(base)/extras/%n.pid
logto = %(base)/extras/uwsgi.log
- sudo mkdir /etc/uwsgi
- sudo mkdir /etc/uwsgi/vassals
- sudo ln -s /www/func/django/conf/mysite.ini /etc/uwsgi/vassals/ emperor = /etc/uwsgi/vassals/mysite.ini 처럼 symlink 해주면 다수의 프로젝트를 로드할 수 있음
- nano /www/func/django/conf/mysite.conf mysite = django 프로젝트 이름
server {
listen 80;
server_name 127.0.0.1;
charset utf-8;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
access_log /www/func/django/extras/access.log;
error_log /www/func/django/extras/error.log;
location /static {
alias /www/func/django/mysite/static;
}
location / {
try_files $uri @django;
}
location @django {
uwsgi_pass unix:/dev/shm/mysite.sock;
include uwsgi_params;
}
}
- sudo ln -s /www/func/django/conf/mysite.conf /etc/nginx/sites-enabled/mysite.conf
- sudo service nginx restart
- sudo service uwsgi restart
- mkdir /www/func/django/mysite/db
- sudo chown www-data:func db
- sudo chmod 755 db
- virtualenv에서 python manage.py startapp 이름
- settings.py db/ 경로추가
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db/db.sqlite3'),
}
}
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = (
('css', os.path.join(BASE_DIR, 'static', 'css')),
('js', os.path.join(BASE_DIR, 'static', 'js')),
('img', os.path.join(BASE_DIR, 'static', 'img')),
)
- templates 폴더 생성
base.html
<!DOCTYPE html>
{% load staticfiles %}
<html>
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
<link rel="stylesheet" href="{% static 'css/base.css' %}" />
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
home.html
{% extends 'base.html' %}
{% load staticfiles %}
{% block content %}
<h1>{{ title }}</h1>
<img src="{% static 'img/bomi.gif'%}" alt="보미" />
{% endblock %}
- settings.py 에 있는 static 폴더와 같게 업로드
- python manage.py collectstatic
- python manage.py syncdb
- models.py 작업, views.py작업
- python manage.py makemigrations 앱이름
- python manage.py migrate
- sudo chown www-data:func /www/func/django/mysite/db/db.sqlite3
- sudo chmod 664 /www/func/django/mysite/db/db.sqlite3
- python manage.py createsuperuser => 관리자계정 만들 경우...