내용으로 건너뛰기
GaramX
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
현재 위치:
home
»
python
»
django
»
ubuntu
추적:
•
csrf
•
django
python:django:ubuntu
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== Ubuntu 24.04 에서 uWSGI와 아파치 ====== 가상환경 python3-venv <code bash> python3 -m venv marovenv </code> [[linux:django:ubuntu:uwsgi|삽질]] ===== uWSGI ===== [[http://uwsgi-docs.readthedocs.io/en/latest/|공식페이지]] WSGI란 Web Server Gateway Interface의 약자로, 웹서버와 웹어플리케이션이 어떤 방식으로 통신하는가에 관한 인터페이스를 의미, 이 WSGI 규격에 맞춘 코드를 실행해주는 프로그램이 uWSGI임. 이 외에 Gunicorn 같은 프로그램 또한 WSGI 규격 웹 애플리케이션을 배포할 때 쓰임 * 환경 변수를 적절히 변경하여 대상 URL에 따라 다른 애플리케이션 개체에 요청을 라우팅 * 동일한 프로세스에서 여러 애플리케이션 또는 프레임워크를 나란히 실행할 수 있도록 허용 * 네트워크를 통해 요청 및 응답을 전달하여 로드 밸런싱 및 원격 처리 * XSLT스타일을 적용하는 등의 콘텐츠 처리 수행 ==== uWSGI 설치 ==== build-essential gcc <code bash> apt install uwsgi # uwsgi plugins - 잘은 모르겠으나 필요함.ㅠ.ㅠ sudo apt-get install uwsgi-plugin-python3 </code> ==== uWSGI 실행 ==== 서버 실행은 uwsgi 명령어를 통해 실행 가능하지만 간단한 스크립트를 만들어 실행해 보자. /etc/init 디렉토리에 있는 선언적 구성 파일을 기반으로 실행한다 === ini파일은 /etc/uwsgi/apps-enabled === <code conf maro_uwsgi.ini> [uwsgi] uid=akfd base=/home/akfd/pro # the virtualenv (full path) home=/home/akfd/venb chdir=/home/akfd/pro/akfdro module=conf.wsgi:application env=DJANGO_SETTINGS_MODULE=conf.settings.develop autoload=true # process-related settings # uWSGI 프로세스를 master로 돌아가게 해줍니다. master=true # maximum number of worker processes processes=5 max-requests=5000 daemonize=/var/log/pro/uwsgi.log # HTTP-PORT http-socket=:8000 # UNIX socket 파일의 위치입니다. socket file의 위치를 잡아줘도 되며 localhost와 port를 명시해줘도 됩니다. socket=/var/log/_uwsgi.sock # UNIX socket 소유자 chown-socket=%(uid):www-data # UNIX socket에 대한 권한 설정입니다. 666을 해야 실행이 가능합니다. chmod-socket=660 # uWSGI를 통해서 생성된 파일들은 삭제하는 옵션입니다. vacuum=true # thread 사용을 앱(uWSGI) 내에서 가능하게 해줍니다. enable-threads = true # 단일한 python interpreter를 사용하게 하는 옵션입니다. single-interpreter = true # master말고 각각의 worker에(master에서 spawn한 자식들) 앱을 로드하는 설정입니다. lazy-apps = true </code> ==== uWSGI 설정 ==== <code> uWSGI는 여러가지 포맷(ini,xml, yaml, json)을 지원한다. uwsgi --ini http://uwsgi.it/configs/myapp.ini # HTTP uwsgi --xml - # standard input uwsgi --yaml fd://0 # file descriptor uwsgi --json 'exec://nc 192.168.11.2:33000' # arbitrary executable </code> <code> .INI 파일은 많은 응용 프로그램에서 사용되는 사실상 표준 구성 형식이다. [section] key = value 쌍으로 구성된다. [uwsgi] socket = /tmp/uwsgi.sock socket = 127.0.0.1:8000 workers = 3 master = true 기본적으로 uWSGI는 [uwsgi] 섹션을 사용하지만 filename : section 구문과 함께 INI 파일을 로드하는 동안 다른 섹션 이름을 지정할 수 있다. uwsgi--ini myconf.ini:app1 </code> ==== 로깅 ==== <code> uWSGI에서 가장 기본적인 형태의 로깅은 요청, 오류 및 정보 메시지를 stdout / stderr 으로 생성한다. 로그 리다이렉션의 가장 기본적인 형태는 --logto / --logto2 / --daemonize 옵션으로, 로그를 파일로 정할 수 있다. ./uwsgi -s :3031 -w simple_app --daemonize /tmp/mylog.log ./uwsgi -s :3031 -w simple_app --logto /tmp/mylog.log ./uwsgi -s :3031 -w simple_app --uid 1001 --gid 1002 --logto2 /tmp/mylog.log stdout / stderr 대신 파일에 기록하려면 --logto를 사용하거나 uWSGI, - daemonize를 동시에 데몬을 실행하면 된다. </code> 로그 포맷 <code> uWSGI에는 사용자 정의 요청 로그 라인을 작성하기 위한 --logformat 옵션이 있다. • %(uri) -> REQUEST_URI • %(method) -> REQUEST_METHOD • %(user) -> REMOTE_USER • %(addr) -> REMOTE_ADDR • %(host) -> HTTP_HOST • %(proto) -> SERVER_PROTOCOL • %(uagent) -> HTTP_USER_AGENT (starting from 1.4.5) • %(referer) -> HTTP_REFERER (starting from 1.4.5) 다음 로그 형식을 사용하면 코드 정의 logvars에 액세스 할 수 있다. uwsgi --logformat 'worker id = %(worker_id) for request "%(method) %(uri) %(proto)" test = %(foo)' </code> ===== Apache2 설정 ===== Apache에서는 proxy_uwsgi를 이용하여 접속한다. <code conf zaro.conf> # create new ProxyPass /nakkko unix:/var/log/_uwsgi.sock|uwsgi://localhost:8000/nakkko Alias /grrr /var/ggggg/grrr <Directory "/var/ggggg/grrr"> Require all granted </Directory> Alias /static /var/ggggg/static <Directory "/var/ggggg/static"> Require all granted </Directory> </code>
python/django/ubuntu.txt
· 마지막으로 수정됨: 2025/04/20 00:51 저자
taekgu
문서 도구
문서 보기
이전 판
역링크
맨 위로