2012-10-04 7 views
4

프로덕션 서버에서 우리는 우리의 응용 프로그램이 Python 브루를 사용하여 사용자 정의 파이썬을 컴파일하는 미리 정의 된 일관된 환경에서 실행되는지 확인하기 위해 Ubuntu 12.04를 실행합니다. 우리 API 서버를 실행할 사용자를 만들었습니다. 사용자는 Pythonbrew로 만든 Python 2.7.2 환경을 가지고 있으며, pip를 사용하여 필요한 패키지를 설치했습니다.uwsgi는 파이썬 바이너리를 지정합니다

또한 시스템에 uWSGI를 설치 했으므로 API 응용 프로그램을 포장하여 mod_wsgi를 통해 Apache에서 사용할 수있게 만들 것입니다. 문제는 uWSGI에 올바른 파이썬 바이너리를 사용할 수 없다는 것입니다. 현재 설정은 다음과 같습니다

uwsgi --ini app.ini 

그것은 몇 가지 모듈을 가져올 실패

[uwsgi] 
socket = 127.0.0.1:3031 
processes = 4 
chdir = /home/app/ 
pythonpath = /home/app 
gid = 1002 
uid = 1002 
module = api 
callable = APP 
enable-threads = true 

내가 함께 터미널에서이 설정을 실행하려고 할 때. 이 모듈은 API 사용자가 사용하는 Pythonbrew 환경에만 설치됩니다. 문제는 uWSGI가/usr/bin에있는 기본 파이썬 바이너리를 사용하고 있다는 것입니다.

하나의 해결책은 API 사용자 환경에서 pip를 사용하여 설치된 별도의 uWSGI를 사용하는 것이지만 OS와 더 잘 통합되기 때문에 실제로 시스템의 uWSGI를 사용하려고합니다.

어떤 Python 바이너리 uWSGI를 사용해야 하는지를 지정하는 방법이 있습니까? 그렇다면 별도의 것을 설치하는 방법이 있습니까? uWSGI의 별도 인스턴스를 설치해야하는 경우 시스템 부팅시 가장 좋은 방법은 무엇입니까?

편집 : 방금 파이썬 바이너리를 사용하지 않고 라이브러리에 안감이 있다는 것을 깨달았습니다. 따라서 wsgi의 기본 설치와 기본이 아닌 파이썬을 사용할 방법이 없습니다. 그러나 여전히 사용자 정의 된 uWSGI를 시스템에 통합하는 가장 좋은 방법은 무엇입니까?

답변

2

uWSGI (mod_wsgi와 마찬가지로)는 python 이진 파일을 사용하지 않고 python 공유 라이브러리를 사용하므로 uWSGI python 플러그인을 pythonbrew 사용자의 특정 라이브러리와 연결해야합니다.

합니다 (pythonbrew 파이썬 버전이 시스템의 버전과 일치 expecially에 경우) 트릭을 많이 내 마음에 터지는 첫 번째는

ENV와의 설정 파일에 pythonbrew 사용자의 접두사를 지정하는 것입니다, 그것을 달성하기 위해있다 = PYTHONHOME = path

그런데 전체 Python 설치 대신에 virtualenvs를 사용하는 것이 더 좋지 않습니까?

+0

파이썬 브루를 사용하는 것은 실제로 오래된 것의 유물입니다. 우리는 2.7을 가지고 있지 않은 10.04에서 실행 했었습니다, 그래서 Pythonbrew를 사용하여 그 서버에서 2.7을 얻었습니다. 지금은 virtualenv를 사용할 수 있지만, 우분투가 제공하는 Python 버전에 의존하지 않도록 Pythonbrew로 실행하고 싶습니다. – Blubber

+1

당신은 pythonbrew를 사용할 수 있지만 시스템 전체에 걸쳐, 각 사용자는 특정 python 브루 - 기반 설치에 맵핑 된 virtualenvs 세트를 가질 것입니다. 그 후에는 각 버전에 대해 uwsgi python 플러그인을 생성하기 만하면됩니다. – roberto

관련 문제