Python

From Rootnode

Jump to: navigation, search

File:python-logo-master-v3-TM.png

Contents

Wstęp

Język Python na Rootnode jest obsługiwany przez maszynę typu fastweb, na której hostowany jest również język Ruby. Python nie jest obsługiwany przez WSGI, działa na znakomitym module passenger.

Zasoby serwera podmontowane są w katalogu /ruby. Należy zwrócić uwagę, że po utworzeniu vhosta przeznaczonego dla aplikacji opartych o język Python w twoim katalogu domowym pojawi się katalog ruby, a nie python.

Image:Warning.png

Ze względu na to, że obecne serwery shellowe jak stallman i korn mają przestarzałe wersje składników języka Python, zaleca się wykonywanie wszystkich operacji na nowym serwerze shellowym, którego tymczasowa nazwa to stallman2.rootnode.net. Logowanie odbywa się za pomocą tych samych danych co do serwerów shellowych. Braki w pakietach proszę zgłaszać za pomocą mailisty users-pl.

Koniecznie przeczytaj opis konfiguracji serwerów typu fastweb.
Informacji na temat ścieżki do aplikacji oraz wielu aplikacji w ramach jednego vhosta szukaj na podstronie dotyczącej języka [Ruby].

Wersja oprogramowania

Na serwerach fastweb oraz stallman2 zainstalowany jest:

  • python w wersji 2.6

Jeśli potrzebujesz dodatkowych bibliotek poproś administratora o doinstalowanie dodatkowych paczek.

Konfiguracja domeny, vhosta i bazy danych

Konfiguracja nie odbiega znacząco od tej opisanej na podstronie Fastweb. Słówkiem kluczowym do poleceń szatana jest ruby (tak ruby, ponieważ Python jest obsługiwany przez tą samą maszynę), który należy dodać na końcu poleceń. Rekord A domeny powinien wskazywać na adres IP serwera wall.rootnode.net, czyli 89.248.171.136.

przykład

W skrócie konfiguracja vhosta dla aplikacji Trac, może wyglądać następująco:

satan dns add a bongo.pl trac 89.248.171.136
satan vhost add bongo.pl trac.bongo.pl ruby
satan vhost init trac.bongo.pl

W katalogu domowym zostanie utworzony katalog ~/ruby, gdzie znajdziesz katalog utworzonego vhosta. Jeśli chciałbyś dodać bazę danych do swojej aplikacji należy ją utworzyć za pomocą następujących poleceń:

satan mysql adddb my1234_trac ruby
satan mysql adduser my1234_trac stdin ruby
satan mysql grant my1234_trac my1234_trac ruby

Sprawdzamy czy nasza konfiguracja jest poprawna za pomocą poleceń:

$ satan dns list bongo.pl | grep trac
38456   trac               a       89.248.171.136

$ satan vhost list | grep trac
bongo.pl      trac.bongo.pl   ruby

$ satan mysql list ruby | grep trac
my1234_trac
my1234_trac   all          my1234_trac.*   yes

Wszystko wygląda w porządku. Zanim zaczniemy testować naszą stronę z lokalnego komputera warto sprawdzić, czy DNS zdążyły się rozpropagować np. za pomocą polecenia ping, dig, host albo nslookup:

$ ping -c 1 trac.bongo.pl
PING redmine.bongo.pl (89.248.171.136) 56(84) bytes of data.
64 bytes from wall.rootnode.net (89.248.171.136): icmp_seq=1 ttl=63 time=1.55 ms

--- trac.bongo.pl ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.553/1.553/1.553/0.000 ms

Widzimy, że odezwał się serwer wall. To oznacza, że DNS działa poprawnie.

Memcache

Jeśli twoja aplikacja ma możliwość integracji z memcache, wykorzystaj to! Wystarczy utworzyć plik conf/memcache w katalogu vhosta oraz przeładować vhosta za pomocą pliku conf/reload. Twój memcache o wielkości 32M, będzie dostępny pod adresem 127.0.0.1:11211.

Szczegóły znajdziesz na podstronie Fastweb.

Django

Aby utworzyć aplikację Django w katalogu ~/ruby/mój.vhost.pl/htdocs wydajemy polecenie:

$ django-admin startproject bongobongo
$ mkdir public

gdzie bongobongo to nazwa naszego projektu. Od razu tworzymy katalog public do naszego projektu.

W celu uruchomienia aplikacji napisanej w Pythonie w katalogu htdocs konieczny będzie plik inicjalizacyjny o nazwie passenger_wsgi.py. W przypadku aplikacji Django zawartość może być podobna do poniższej:

import os, sys

#automatically finds application's current path
nginx_configuration= os.path.dirname(__file__)
project = os.path.dirname(nginx_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)

os.environ['DJANGO_SETTINGS_MODULE'] = 'bongobongo.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Należy pamiętać o wpisaniu poprawnej nazwy naszej aplikacji. Następnie wystarczy przeładować konfigurację tworząc pusty plik conf/reload w katalogu vhosta.

Image:Warning.png

Po każdej zmianie w pliku passenger_wsgi.py należy przeładować vhosta.

Po minucie po wejściu na stronę www powinnieneś zobaczyć wiadomość powitalną It worked! Congratulations on your first Django-powered page.

Wirtualne środowiska Pythona

Na Rootnode nie ma dostępnych wszystkich bibliotek Pythona, ale w razie potrzeby doinstalowania jakiejś biblioteki można skorzystać z wirtualnego Pythona za pomocą opisanych poniżej narzędzi. Najpierw jednak poproś administratora o doinstalowanie dodatkowych paczek jeśli istnieją wrepozytorium Debian Testing.

Istnieje możliwość utworzenia drzewa modułów dla Pythona. Lokalne moduły i dodatki do Pythona są dostępne w naszej własnej strukturze katalogów, natomiast lokalne składniki są podlinkowane do właściwych plików znajdujących się w systemowym drzewie.

virtualenv

Virtualenv to stworzone przez Iana Bickinga narzędzie służące do tworzenia odizolowanych środowisk Pythona. Virtualenv jest następcą workingenv oraz rozszerzeniem dla virtual-pythona.

Tworzenie wirtualnego środowiska sprowadza się do wykonania poniższego polecenia:

$ virtualenv ENV

ENV to bezwzględna ścieżka do katalogu w którym zostanie zainstalowane wirtualne środowisko. Lokalizacja jest dowolna, z dwoma wyjątkami:

Ilość posiadanych przez nas środowisk jest (teoretycznie) nieograniczona.

Należy zwrócić uwagę na to, że tak stworzone wirtualne środowisko korzysta z globalnego Pythona (obecnie jest to wersja 2.4). Jeżeli chcemy skorzystać z nowszego Pythona dodajemy odpowiedni parametr:

$ virtualenv -p python2.6 ENV

Możemy także stworzyć środowisko bez systemowych (standardowych) pakietów, co może być przydatne w przypadku konfliktów wersji instalowanych paczek:

$ virtualenv --no-site-packages ENV

Tak powstałe środowisko możemy wykorzystać na trzy sposoby.

  • Najprostszym z nich jest aktywacja:
[bongo@stallman ~]$ source ENV/bin/activate
(ENV)[bongo@stallman ~]$ 

Proszę zwrócić uwagę na to, że poprawna aktywacja skutkuje w poprzedzeniu znaku zachęty (prompta) nazwą środowiska.

Aktywację musimy wykonać za każdym razem kiedy chcemy skorzystać z wirtualnego Pythona

Od teraz wykonując python będziemy uruchamiać interpreter z naszej lokalnej konfiguracji, oraz będzie można swobodnie instalować nowe moduły i dodatki, które będą dostępne tylko dla nas!

Razem z virtualenv instalowany jest pakiet Setuptools, dzięki czemu w bardzo prosty sposób możemy doinstalowywać nowe paczki, np:

(ENV)$ easy_install pip

Kiedy zakończyliśmy już pracę z naszym wirtualnym Pythonem, możemy środowisko wyłączyć:

(ENV)$ deactivate
  • Możemy także bezpośrednio instalować biblioteki przy pomocy easy_install:
$ ENV/bin/easy_install pip
  • A skrypty uruchamiane przy pomocy "naszego" interpretera będą z tych bibliotek korzystać
$ ENV/bin/python skrypt.py

virtualenvwrapper

Virtualenvwrapper to stworzone przez Douga Hellmanna narzędzie to zarządzania wirtualnymi środowiskami. Przydatne zwłaszcza wtedy, gdy pracujemy na większej ich ilości. Więcej informacji znajdziemy na oficjalnej stronie virtualenvwrappera


Instalacja aplikacji

W tym miejscu znajdziesz informacje na temat instalacji konkretnych aplikacji. Zakładamy, że vhosty, domeny i bazy danych są już utworzone. Nasz użytkownik to bongo o uidzie 1234.

Trac

Trac to znakomity system zarządzania projektami. Szczegółowe informacje na tem konfiguracji i instalacji znajdziesz na stronie domowej projektu. Do inicjalizacji aplikacji napisanej w Pythonie za pomocą pliku passenger_wsgi.py wykorzystamy kod ze strony Trac and WSGI. Poniższe polecenia wykonujemy na serwerze stallman2 zakładając, że wcześniej skonfigurowaliśmy vhosta.

$ cd ~/ruby/trac.bongo.pl/

$ mkdir apps && cd apps
  
$ trac-admin bongobongo initenv
Creating a new Trac environment at /ruby/bongo/www/trac.bongo.pl/apps/bongobongo
 
Trac will first ask a few questions about your environment
in order to initialize and prepare the project database.
 
 Please enter the name of your project.
 This name will be used in page titles and descriptions.
 
Project Name [My Project]> Bongo Bongo
 
 Please specify the connection string for the database to use.
 By default, a local SQLite database is created in the environment
 directory. It is also possible to use an already existing
 PostgreSQL database (check the Trac documentation for the exact
 connection string syntax).

Database connection string [sqlite:db/trac.db]>
 
 Please specify the type of version control system,
 By default, it will be svn.

 If you don't want to use Trac with version control integration,
 choose the default here and don't specify a repository directory.
 in the next question.

Repository type [svn]>

 Please specify the absolute path to the version control
 repository, or leave it blank to use Trac without a repository.
 You can also set the repository location later.

Path to repository [/path/to/repos]>

Creating and Initializing Project
...

Project environment for 'Bongo Bongo' created.
...

Congratulations!

$ cd ../htdocs/
$ vim passenger_wsgi.py
import os

os.environ['TRAC_ENV'] = '/ruby/bongo/www/trac.bongo.pl/apps/bongobongo'
os.environ['PYTHON_EGG_CACHE'] = '/ruby/bongo/www/trac.bongo.pl/apps/bongobongo/eggs'
 
import trac.web.main
application = trac.web.main.dispatch_request
 
$ touch ../conf/reload

Gotowe. Po upływie minuty możemy przetestować naszą świeżą instalację wchodząc na stronę http://trac.bongo.pl:81.

Przewodnik po Rootnode

Nasze strony są oparte o system wiki, co znaczy, że każdy użytkownik może edytować dowolną stronę.
Treści tutaj zawarte mogą być nieaktualne i niewłaściwe. Nie bierzemy odpowiedzialności za ewentualne szkody.

Zobacz ostatnie zmiany.

Pierwsze kroki z Rootnode

Bazy danych


Poczta

Domena i system DNS

Vhost, strona www

Nieuporządkowane

© ITspec Wszelkie prawa zastrzeżone. | Wiki | Status | Support | Planeta | Fortunki | Kontakt
Szukasz oferty indywidualnej lub specjalistów IT? Zobacz naszą stronę domową i skontaktuj się z nami.
Personal tools