[uWSGI] ini파일을 통해 uWSGI 실행하기

ini 파일을 통해서 쉽게 uWSGI를 실행하자


환경


사전 준비사항


uWSGI ini 파일 작성

사용하고자하는 프로젝트 root 폴더에 ini파일을 하나 생성합니다.

Django와 같은 경우 manage.py가 있는 폴더에 생성해주시면 됩니다.

$ touch ini_file_name.ini

지금 진행하는 프로젝트의 경우 파일 이름을 linku_uwsgi.ini로 하였습니다.

$ touch linku_uwsgi.ini


uWSGI ini 파일 작성

LinkU 프로젝트 ini파일 예시

linku_uwsgi.ini

#linku_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /home/linku/LinkU/linku_backend
# Django's wsgi file
module          = linku.wsgi
# the virtualenv (full path)
home            = /home/linku/.pyenv/versions/LinkU/
virtualenv = /home/linku/.pyenv/versions/LinkU/

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 4
# the socket (use the full path to be safe
socket=/home/linku/LinkU/linku_backend/linku.sock

# ... with appropriate permissions - may be needed
chmod-socket    = 666
# clear environment on exit
vacuum          = true
# daemonize the process
daemonize=/home/linku/LinkU/linku_backend/linku.log
# process pid
pidfile=/tmp/linku_backend.pid

# newrelic settings
enable-threads = true
single-interpreter = true
lazy-apps = true

  • chdir: 프로젝트 기본 경로입니다. django의 경우 manage.py가 위치는 곳을 경로로 잡아주면 됩니다.
  • module: django 프로젝트를 생성하면 해당 프로젝트 이름으로 생성되는 wsgi.py가 생성되는데 해당 파일을 모듈로 불러옵니다. 프로젝트이름.wsgi로 해주시면됩니다.
  • home, virtualenv: 파이썬 가상환경이 위치한 폴더의 경로를 잡아주면 됩니다.
  • master: uWSGI 프로세스를 master로 돌아가게 해줍니다.
  • processes: 프로세스 수 입니다.
  • socket: UNIX socket 파일의 위치입니다. socket file의 위치를 잡아줘도 되며 localhost와 port를 명시해줘도 됩니다.
  • chmod-socket: UNIX socket에 대한 권한 설정입니다. 666을 해야 실행이 가능합니다.
  • vacuum: uWSGI를 통해서 생성된 파일들은 삭제하는 옵션입니다.
  • daemonize: 백그라운드로 돌리기 위한 설정이며 log파일을 남길 경로를 지정해주면 됩니다.
  • pidfile: 생성할 pid 파일의 위치입니다.
  • enable-threads: thread 사용을 앱(uWSGI) 내에서 가능하게 해줍니다.
  • single-interpreter: 단일한 python interpreter를 사용하게 하는 옵션입니다.
  • lazy-apps: master말고 각각의 worker에(master에서 spawn한 자식들) 앱을 로드하는 설정입니다.


uWSGI 실행하기

uWSGI가 pip를 통해 설치되어 있는 환경이라 한다면 다음과 같은 명령어로 실행이 가능합니다.

$ uwsgi --ini [ini filename or path]

예시

$ uwsgi --ini linku_uwsgi.ini


참고자료