logo

Poznaj czym jest prawdziwie profesjonalny hosting

  • 7 dniowy okres testowy, płatności w dowolnych cyklach (dni, miesiące, lata).
  • Wszystkomający hosting: PHP, MySQL, PostgreSQL, mongoDB, shell, Ruby, Python,Django, Node.js, dowolna ilość domen i subdomen...
  • Najnowsze technologie, szybkie serwery www. Szybka i darmowa pomoc techniczna.
  • Idealny hosting dla programisty: shell, svn, git, gitweb, hg, redmine, bugzilla, trac, autocheckout, svn2web, websvn ...

django

Zapoznaj się także z ogólnymi informacjami o pytonie

Webowe aplikacje python-owe można u nas uruchamiać przez Panssenger-a (wsgi). Wymaga to odpowiedniego kodu inicjalizującego, umieszczonego w pliku passenger_wsgi.py

Utwórz aplikację w dziale passenger w naszym panelu kontrolnym i nadaj jej adres http/https. Tworzymy aplikację mojaaplikacja

W panelu ustaw taką samą wersję python dla aplikacji jak i dla shell i zaloguj się na shell.

$ mcedit ~/.wersja-python

Na chwilę obecną zalecamy używanie sprawdzonego pythona 2.7 zamiast 3.3.

Teraz instalujemy django. Najłatwiej to zrobić poleceniem easy_install (ale można też wgrać ręcznie z repozytorium svn twórców innej paczki).

$ mkdir -p ~/site-packages    #jeśli jeszcze nie istnieje
$ easy_install django

Teraz tworzymy strukturę dla nowej aplikacji django:

$ cd ~/rails
$ django-admin startproject mojaaplikacja


Teraz tworzymy katalogi potrzebne passengerowi

$ cd mojaaplikacja
$ mkdir tmp log public site-packages
$ mkdir public/static

Teraz najważniejsze zadanie. Utworzenie odpowiedniego pliku passenger_wsgi.py w katalogu z aplikacją.

$ pico passenger_wsgi.py

W zależności od aplikacji plik ten będzie wyglądał inaczej (plik inicjalizujący wsgi). Dla django wygląda to tak:

import os,sys,site
os.environ['LD_LIBRARY_PATH'] = '/usr/local/lib'

site.addsitedir('/home/login/site-packages') # glowny site-packages bazujac na module site
sys.path.insert(0,os.getcwd()) #kat z aplikacja
sys.path.insert(0,os.path.join(os.getcwd(), '/site-packages')) #kat site-packages w kat z aplikacja

#site.addsitedir(os.path.join(os.getcwd(), '/site-packages') #ew. to co wyzej ale przez site
#(jesli instalowales tam przez easy_install)

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mojaaplikacja.settings")
from django.core.wsgi import get_wsgi_application

#uruchomienie z wyswietlaniem bledow dla python 3.3
#import ErrorMiddlewareV
#application = ErrorMiddlewareV.EMV(get_wsgi_application(), True)

#uruchomienie z wyswietlaniem bledow dla python 2.7 i 2.6
from paste.exceptions.errormiddleware import ErrorMiddleware
application = get_wsgi_application()
application = ErrorMiddleware(application, debug=True)

#uruchomienie bez wyswietlania bledow
#application = get_wsgi_application()

wersja dla django <=1.3

od sierpnia 2015 dostępna jest opcja "pokaż error log" w dziale passenger która jest skuteczniejsza w diagnozie błędów 500 niż ErrorMiddleware dlatego można zrezygnować z uruchamiania przez aplikacji przez ErrorMiddleware (patrz ostatnie linie proponowanego kodu).

Powyższa konfiguracja bazuje na module site, który jest instalowany gdy cokolwiek zainstalujesz przez easy_install. Jeśli jednak nic nie instalowałeś to wgraj go ręcznie:

$ rsync --ignore-existing /usr/share/python-default/site.py ~/site-packages/site.py


Sprawdź czy twój passenger.py nie zwraca żadnych błędów przez

$ python passenger_wsgi.py


Wykonaj teraz i po każdej zmianie w swojej aplikacji restart aplikacji passenger. Wykonuje się go poprzez modyfikację pliku tmp/restart.txt w katalogu aplikacji. Jeśli katalog tmp nie istnieje to go utwórz!

$ cd ~/rails/mojaaplikacja
$ touch tmp/restart.txt

Statyczne pliki django powinny być umieszczone w katalogu public w aplikacji (można ew. utworzyć jeszcze tam podkatalog np. static (wtedy url będzie .../static/plik.txt)). Jeśli plik/katalog o tej nazwie istnieje tam to passenger będzie serwował go bezpośrednio