제목이 엄청 길지만, 이 글의 내용은 아주 간단합니다. 오늘날 Python 개발에 있어 가상 환경은 필수이지만, 때로는 오늘 이야기할 Flask 애플리케이션 호스팅 문제와 같이 가상 환경이 불필요한 문제나 함정을 가져올 수 있습니다.
Nginx uWSGI는 Python 웹 프로젝트 호스팅을 위한 최고의 선택이라고 할 수 있습니다. 물론 직접 개발하고 테스트하거나 트래픽이 거의 없는 애플리케이션, Gunicorn 또는 웹 서버에 적용하는 경우에도 마찬가지입니다. 웹 프레임워크와 함께 제공되는 것만으로도 충분하지만 오늘 이런 왕쌍을 만나는 상황에서 벗어날 수는 없습니다. 공식 문서에 따라 Nginx와 uWSGI를 각각 구성하고 uwsgi의 명령문을 사용하여 시작하면 문제가 없습니다. 그러나 ini 구성을 사용하여 uWSGI를 시작하려고 하면 502 bad gateway
오류가 발생합니다.
일부 문제 해결 후 - 문제 해결 프로세스가 명확하지 않음 - 문제를 발견했습니다. 내 uWSGI가 프로젝트의 virtualenv 디렉터리에 설치되었지만 ini 구성 파일이 가상 환경 디렉터리를 구성하지 않았으며 기존 온라인 블로그 튜토리얼의 ini 구성에는 이 문제가 언급되어 있지 않으므로 가상 환경의 구성을 추가하고 plugin = python
구성을 추가하는 것이 가장 좋습니다. 물론 이것은 사전에 설치되어야 합니다. 구체적으로 설치하는 것은 이 기사의 초점이 아니므로 지금은 자세히 설명하지 않겠습니다.
그래서 내 최종 ini 구성 파일 내용은 다음과 같습니다.
<code><span>[uwsgi]</span><span>plugins = <span>python</span></span><span>vhost = <span><span>true</span></span></span><span>chdir = <span>/home/k/Documents/demo</span></span><span>venv = <span>/home/k/Documents/demo/venv</span></span>#python module to import <span>app = <span>main</span></span><span>module = <span>%(app)</span></span>#socket file's location <span>socket = <span>/home/k/Documents/demo/%n.sock</span></span>#permissions for the socket file <span>chmod-socket = <span><span>666</span></span></span>#the variable that holds a flask application inside the module imported at line #6 <span>callable = <span>app</span></span>#location of log files <span>logto = <span>/home/k/Documents/demo/%n.log</span></span><span>processes = <span><span>4</span></span></span><span>threads = <span><span>2</span></span></span></code>
내 프로젝트 디렉터리 구조는
<code>demo/ |____venv/ |____main<span>.py</span><span># 这个是应用的启动文件(对应 ini 配置中的 app)</span> |____uwsgi<span>.ini</span> |____uwsgi<span>.sock</span> |____uwsgi<span>.log</span> |____access<span>.log</span><span># 这个是 Nginx 中的 access 日志配置</span> |____error<span>.log</span><span># 这个是 Nginx 中的 error 日志配置</span></code>
위 내용은 몇 가지 측면을 포함하여 Nginx uWSGI를 virtualenv에서 호스팅하도록 구성할 때 Ubuntu 1404에 대한 몇 가지 주의 사항을 소개합니다. 이 내용이 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.