
저는 Django/Python/mod_wsgi를 처음 접하는데, 메모리 사용량을 줄이기 위해 이 파일을 최적화할 수 있는지 궁금합니다.
ServerRoot "/home/<foo>/webapps/django_wsgi/apache2"
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule wsgi_module modules/mod_wsgi.so
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /home/<foo>/logs/user/access_django_wsgi.log combined
ErrorLog /home/<foo>/logs/user/error_django_wsgi.log
KeepAlive Off
Listen 12345
MaxSpareThreads 3
MinSpareThreads 1
MaxClients 5
MaxRequestsPerChild 300
ServerLimit 4
HostnameLookups Off
SetEnvIf X-Forwarded-SSL on HTTPS=1
ThreadsPerChild 5
WSGIDaemonProcess django_wsgi processes=5 python-path=/home/<foo>/webapps/django_wsgi:/home/<foo>/webapps/django_wsgi/lib/python2.6 threads=1
WSGIPythonPath /home/<foo>/webapps/django_wsgi:/home/<foo>/webapps/django_wsgi/lib/python2.6
WSGIScriptAlias /auctions /home/<foo>/webapps/django_wsgi/auctions.wsgi
WSGIScriptAlias /achievers /home/<foo>/webapps/django_wsgi/achievers.wsgi
답변1
별도의 데몬 프로세스 그룹을 생성하기 위해 WSGIDaemonProcess 지시문을 정의했지만 실제로는 이를 사용하지 않습니다. 데몬 모드를 사용하려는 경우 WSGIPythonPath를 삭제하고 대신 다음을 추가해야 합니다.
WSGIProcessGroup django_wsgi
또한 데몬 모드를 사용하려고 하는데 기본 Apache 프로세스에서 정적 파일을 제공하는 일만 발생하는 경우 ThreadsPerChild를 다음과 같이 다시 변경할 수 있습니다.
MaxRequestsPerChild 0
Apache 서버 하위 프로세스를 주기적으로 재활용할 필요가 없기 때문입니다.
그런데, 전체 기본 Apache 구성을 버리고 필요하다고 생각되는 것만 추가하는 것은 나쁜 습관입니다. 이는 기본 액세스 보안을 모두 버리기 때문입니다. 즉, 파일에 액세스할 수 있는 URL 매핑이 있는 경우 기술적으로 시스템의 모든 파일을 제공할 수 있기 때문입니다.