Debian 에서 Python + Django + Nginx + uWSGI + MySQL 의 튜 토리 얼 을 설정 합 니 다.

5964 단어
최근 에 Python 환경 으로 프로젝트 를 옮 기 려 고 시 도 했 습 니 다. 특히 깨끗 한 데 비 안 시스템 을 새로 설치 하여 환경 을 재 설정 하려 고 했 습 니 다. 인터넷 에서 Python Web 을 실행 하 는 환경 방안 을 찾 았 습 니 다. 마지막 으로 Nginx + uWSGI 조합 을 결 정 했 습 니 다. Nginx 는 비교적 많이 사용 하고 숙련 되 었 습 니 다.uWSGI 는 성능 이 좋다 고 하 는데 한번 해 보고 싶 어 요.
인터넷 의 대부분 튜 토리 얼 은 uWSGI 공식 사이트 에 소스 패 키 지 를 다운로드 한 다음 에 컴 파일 을 통 해 설치 해 야 한다. 예 를 들 어 새로운 데 비 안 시스템 에 대해 다음 명령 을 통 해 설치 할 수 있다.

apt-get update
apt-get upgrade
apt-get install build-essential psmisc
apt-get install python-dev libxml2 libxml2-dev
apt-get install python-setuptools
cd /opt/
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar -zxvf uwsgi-latest.tar.gz
mv uwsgi-latest/ uwsgi/
cd uwsgi/
python setup.py install


그리고 일부 설정 은 소개 하지 않 겠 습 니 다. 여러분 은 Linode Library 의 'Deploy Python Code with WSGI using uWSGI and nginx on Debian 6 (Squeeze)' 소 개 를 참고 하 실 수 있 습 니 다.
오늘 소개 할 것 은 APT 소스 를 이용 하여 직접 apt - get install 설치 설정 입 니 다. 먼저 관례 에 따라 MySQL 과 Nginx 를 설치 합 니 다.
그리고 Debian Packages 사 이 트 를 통 해 우리 가 필요 로 하 는 uWSGI 가 sid 에 있 는 것 을 찾 았 습 니 다. sid 판 에 있 는 것 은 아직 개발 테스트 중 이 며 최종 안정 판 은 아니 지만 우리 테스트 에 있어 서 는 충분 합 니 다. sid 안의 패 키 지 를 사용 하기 위해 서 는 우리 의 / etc / apt / sources. list 소스 를 수정 해 야 합 니 다.deb 추가http://ftp.tw.debian.org/debian sid main non - free contrib 줄 이나 명령 을 직접 입력 하 십시오:

echo "deb http://ftp.tw.debian.org/debian sid main non-free contrib" >> /etc/apt/sources.list


원본 목록 을 설정 하면 다음 명령 을 통 해 설치 할 수 있 습 니 다:

apt-get update
apt-get install uwsgi uwsgi-core uwsgi-plugin-python


설치 가 끝 난 후 설정 파일 은 관례 에 따라 / etc / uwsgi 에 놓 여 있 습 니 다. 서비스 통 제 는 invoke - rc. d uwsgi 뒤에서 명령 매개 변수 와 함께 이 루어 질 수 있 습 니 다. 그러나 여기에 작은 에피소드 가 있 습 니 다. 설치 할 때 이러한 오 류 를 보고 할 수 있 습 니 다.

The following packages have unmet dependencies: 
libc6-dev : Breaks: gcc-4.4 (< 4.4.6-4) but 4.4.5-8 is to be installed. 
E: Broken packages


보아하니 패키지 gcc 버 전이 일치 하지 않 는 것 같 습 니 다. 저 는 나중에 다음 과 같은 방식 으로 해 결 했 습 니 다.

apt-get update
apt-get upgrade #           
 
apt-get install libc6-dev


다음은 django 와 Python 을 설치 한 MySQL 지원 입 니 다. APT 명령 을 계속 진행 합 니 다.

apt-get install python-django python-mysqldb


위의 절 차 를 통 해 Python 환경 이 시스템 에 설치 되 어야 합 니 다. / usr / lib 로 전환 합 니 다.

cd /usr/lib
ls -l | grep python


시스템 에 기본적으로 몇 가지 버 전의 Python 이 설치 되 어 있 는 것 을 발견 할 수 있 습 니 다. 예 를 들 어 저 에 게 는 세 가지 버 전이 설치 되 어 있 습 니 다.

/usr/lib/python2.6
/usr/lib/python2.7
/usr/lib/python3


현재 Python 기본 버 전 을 어떻게 확인 합 니까?아주 쉬 워 요. 바로 아래 명령 을 통과 하면 돼 요.

python --version


django 는 python 디 렉 터 리 에 설 치 된 site - packages 에 설 치 된 것 으로 알려 져 있 습 니 다. 그러나 이 몇 개의 python 디 렉 터 리 에는 site - packages 라 는 폴 더 가 없습니다. 사실 우 리 는 아래 명령 을 통 해 먼저 위 치 를 정할 수 있 습 니 다.

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"


위의 명령 은 콘 솔 에 Python 패키지 경 로 를 인쇄 합 니 다. 예 를 들 어 dist - packages 라 는 디 렉 터 리 를 얻 을 수 있 습 니 다. 이 디 렉 터 리 로 전환 하면 django 가 거기에 있 는 것 을 발견 할 수 있 습 니 다.django - admin. py 에 권한 을 부여 하고 기호 연결 을 해서 우리 가 나중에 조작 할 수 있 도록 합 니 다 (여기 Django 는 Python 2.7 아래 에 있 습 니 다).

chmod 777 /usr/lib/python2.7/dist-packages/django/bin/django-admin.py
ln -s /usr/lib/python2.7/dist-packages/django/bin/django-admin.py /usr/local/bin


Django 가 있 는 Python 버 전 을 기록 하고 다음 명령 을 통 해 uwsgi 의 기본 Python 버 전 으로 전환 합 니 다 (일반적으로 전환 할 필요 가 없습니다).

update-alternatives --config uwsgi-plugin-python


자, 여기 서 기본적으로 설치 부분 이 소개 되 었 습 니 다. 아래 설정 부분 에 대해 설명 하 겠 습 니 다. 먼저 우리 프로젝트 의 폴 더 를 만 듭 니 다. 예 를 들 어 / home / user / www 아래 에 두 고 아래 명령 을 통 해 my site 라 는 Django 프로젝트 를 만 듭 니 다.

cd /home/user/www
django-admin.py startproject mysite


자, 이제 / home / user / www 디 렉 터 리 에 mysite 라 는 하위 폴 더 이름 이 있 을 것 입 니 다. / home / user / www / mysite / 안 으로 wsgi 프로필 을 잃 어 버 려 야 합 니 다. 프로필 이름 은 wsgi. py 입 니 다. 내용 은 다음 과 같 습 니 다.
다음은 uwsgi 프로필 을 수정 하 는 것 입 니 다. 먼저 다음 명령 을 통 해 아까 설정 한 대로 프로필 을 만 듭 니 다.

cat > /etc/uwsgi/apps-enabled/www.ini << EOF
[uwsgi]
socket = /var/run/uwsgi/app/www/socket
chmod-socket = 666
limit-as = 256
processes = 6
max-request = 2000
memory-report = true
enable-threads = true
pythonpath = /home/user/www
chdir = /home/user/www/mysite
wsgi-file = /home/user/www/mysite/wsgi.py
EOF
 
#   uwsgi
invoke-rc.d uwsgi restart


위의 socket 설정 을 주의 하 십시오. 이것 은 제 기계 에 있 는 이 경로 입 니 다. cd / var / run 에서 찾 은 다음 설정 이 정확 합 니 다. 다음은 Nginx 설정 파일 을 만 들 수 있 습 니 다.

cat > /etc/nginx/sites-enabled/www << EOF
server {
    listen  80;
    server_name localhost;
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///var/run/uwsgi/app/www/socket;
    }
}
EOF


여기 uwsgipass 는 여전히 위 에서 우리 가 찾 은 socket 입 니 다. server 에 주의 하 세 요.name, 이것 은 우리 가 연 결 된 도 메 인 이름 입 니 다. nginx - s reload 를 통 해 nginx 를 다시 불 러 옵 니 다.
자, 이제 방문 해 보 세 요. 성공 하 셨 나 요?502 Bad Gateway 가 나타 나 면 uwsgi 가 정상적으로 시작 되 었 는 지 확인 할 수 있 습 니 다. ps aux | grep uwsgi 를 통 해 프로 세 스 목록 을 보고 마지막 으로 socket 경로 가 정확 한 지 확인 할 수 있 습 니 다.
uWSGI Error: Python application not found 라 는 문제 가 발생 하면 주로 경로 설정 문제 입 니 다. 이 문 제 는 / var / log / uwsgi 아래 로그 파일 을 찾 아 볼 수 있 습 니 다. 예 를 들 어 저 는 ImportError: No module named django. core. handlers. wgi 라 는 문 제 를 만 났 습 니 다. 사실은 wgi. py 의 경로 설정 이 올 바 르 지 않 습 니 다.

좋은 웹페이지 즐겨찾기