Ubuntu 14.04 LTS 버전 기준입니다. 사용자 환경에 따라 세부 경로는 다소 다를 수 있습니다.
(ex: /usr/share/nginx/html/ 혹은 /usr/share/nginx/www/ 일수 있습니다)
기초 준비작업
sudo hostname localhost
sudo apt-get update
sudo apt-get upgrade
Python 설치
sudo apt-get install python
sudo apt-get install python-virtualenv
sudo apt-get install python2.7-dev
nginx + uwsgi 설치
sudo apt-get install nginx
sudo service nginx start
sudo apt-get install uwsgi
---------------------------------------------------------------------------------------------------------------------------
PHP 설치 ( Phpmyadmin 을 사용하기 위해서 설치합니다. Sequel Pro 같은 다른 클라이언트를 사용하시면 설치 안하셔도 무방합니다)
sudo apt-get install php5-fpm
sudo nano /etc/php5/fpm/php.ini
cgi.fix_pathinfo=1 을 cgi.fix_pathinfo=0 로 수정
(숫자를 1로 해놓으시면 유저가 요청했을때 php interpreter 가 요청한 파일과 비슷한 파일을 보여 줄수도 있습니다. 보안상의 문제때문에 가장 보수적인 0으로 설정하는게 좋습니다)
sudo service php5-fpm restart
sudo nano /etc/nginx/sites-available/default
Nginx 의 서정 파일의 php 관련 부분의 주석을 다음과 같이 해제해 줍니다.
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Nginx 재시작 및 권한 변경
sudo service nginx restart
sudo chown -R ubuntu:www-data /usr/share/nginx/html/
Nginx 의 default folder 의 권한이 root:root 로 되어있으므로 해당 부분을 user-group:www-data 로 변경해줍니다.
user는 본인이 주로 사용하는 user 의 그룹 이름이면 무방합니다. (보통 로그인 user name)
Maria DB 설치
https://downloads.mariadb.org/mariadb/repositories/#mirror=syringa&distro=Ubuntu&version=10.0&distro_release=trusty
위의 링크에 가서 본인의 OS를 선택하고 설명대로 실행하됩니다.
sudo mysql_secure_installation
MySQL 설치
sudo apt-get install mysql-server
sudo mysql_secure_installation
PhpMyAdmin 설치
sudo apt-get install phpmyadmin
sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html
sudo service nginx restart
덧! 혹시 MariaDB 10.x 버전을 설치했다면 myphpadmin 에서 error flag가 뜹니다. 아래의 명령어를 실행하면 문제 해결
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service php5-fpm restart
sudo service mysql restart
sudo service nginx restart
---------------------------------------------------------------------------------------------------------------------------
Django + uWSGI 환경 설정하기
디렉토리 생성 및 권한 변경
sudo mkdir /var/www
sudo mkdir /var/www
sudo chown -R ubuntu:www-data /var/www/
mkdir /var/www/example.com
cd /var/www/example.com
mkdir venv conf src logs
Python Virtualenv 설정
sudo virtualenv /var/www/example.com/venv
source /var/www/example.com/venv/bin/activate
[Virtualenv 는 Python 개발 환경에서 라이브러를 여러개 설치할경우 프로젝트별로 버전 및 라이브러간의 충동을 방지하기위해 가상으로 독립적 개발 환경을 보장합니다]
장고 설치 및 프로젝트 생성
sudo var/www/example.com/venv/bin/pip install django
cd /var/www/example.com/src
django-admin.py startproject example_project
Config 파일 설정
:nginx.conf
sudo nano /var/www/example.com/conf/nginx.conf
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/src/example_project;
access_log /var/www/example.com/logs/access.log;
error_log /var/www/example.com/logs/error.log;
location /static/ { # STATIC_URL
alias /var/www/example.com/src/static/; # STATIC_ROOT
expires 30d;
}
location /media/ { # MEDIA_URL
alias /var/www/example.com/src/media/; # MEDIA_ROOT
expires 30d;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8889;
}
}
:uwsgi.ini
sudo nano /var/www/example.com/conf/uwsgi.ini
[uwsgi]
# variables
projectname = example_project
projectdomain = example.com
base = /var/www/example.com
# config
plugins = python
master = true
protocol = uwsgi
env = DJANGO_SETTINGS_MODULE=%(projectname).settings
pythonpath = %(base)/src/%(projectname)
module = %(projectname).wsgi
socket = 127.0.0.1:8889
logto = %(base)/logs/uwsgi.log
#below line runs it as a daemon in background
daemonize = /var/log/uwsgi/example_project.log
[덧! 프로젝트 및 설치 환경에 따라 경로가 다를 수 있습니다. 빨간색으로 하이라이트 된 부분 주의]
nginx 기본 설정 변경 (추가한 nginx.conf 추가)
sudo nano /etc/nginx/nginx.conf
user www-data;
# ...
http {
# ...
include /var/www/*/conf/nginx.conf;
# ...
}
MySQL 및 uWSGI plugins 설치 [MariaDB 공통]
sudo apt-get install python-mysqldb
sudo apt-get install uwsgi-plugin-python
sudo pip install south ( 옵션 )
ini 파일 추가
sudo uwsgi --ini /var/www/example.com/conf/uwsgi.ini
sudo nano /etc/init/uwsgi.conf
# Emperor uWSGI script
description "uWSGI Emperor"
start on runlevel [2345]
stop on runlevel [06]exec uwsgi --master --die-on-term --emperor /var/www/example.com/conf/uwsgi.ini
시스템 재시작
sudo reboot
[덧!]
MariaDB 10.x 를 설치할경우 python 에서 MySQL (or MariaDB)에 접속 가능하게 해주는 MySQLdb 라이브러가 pip 로는 인스톨이 안됩니다.
sudo apt-get install python-mysqldb 으로 메인 시스템 라이브러리에 설치 후에 virtualenv 를 생성할때 --system-site-packages 옵션을 주시면 됩니다.
ex) sudo virtualenv /var/www/example.com/venv --system-site-packages
즐코딩~