Python¶
Python to język programowania wysokiego poziomu. Na serwerach SMALL.PL możliwe jest uruchamianie stron i aplikacji opartych o ten język.
Dostępne wersje¶
Domyślną wersją języka Python na serwerach SMALL.PL jest wersja 3.10
- wywołanie polecenia python
uruchomi interaktywny interpreter języka właśnie w tej wersji. Oprócz tego dostępne są również polecenia: python2.7
, python3.7
, python3.8
, python3.9
, python3.10
oraz python3.11
uruchamiające daną wersję Python.
Virtualenv¶
Virtualenv
to narzędzie służące do tworzenia izolowanych środowisk języka Python. Używanie Virtualenv
rozwiązuje podstawowy problem związany z różnymi wersjami dodatkowych bibliotek języka oraz uprawnień - wirtualne środowiska są tworzone całkowicie w katalogu domowym użytkownika, co (razem z dostarczonymi przez virtualenv
w standardzie narzędziami) pozwala na pełne, samodzielne zarządzanie zainstalowanymi modułami
.
Tworzenie wirtualnego środowiska¶
Uwaga
Przed przystąpieniem do instalacji należy włączyć możliwość korzystania z własnego oprogramowania - Binexec.
Informacja
W tym poradniku utworzono i wykorzystano katalog /usr/home/LOGIN/.virtualenvs
do zgromadzenia wszystkich utworzonych przez użytkownika wirtualnych środowisk
. Nowy katalog można utworzyć za pomocą polecenia mkdir /usr/home/LOGIN/.virtualenvs
.
Wirtualne środowisko można utworzyć wykonując w wybranym katalogu polecenie virtualenv
podając nazwę środowiska
jako parametr:
$ cd /usr/home/LOGIN/.virtualenvs
$ virtualenv nazwa_środowiska
New python executable in nazwa_środowiska/bin/python3.10
Also creating executable in nazwa_środowiska/bin/python
Installing setuptools, pip...done.
Takie wywołanie polecenia tworzy nowe środowisko wirtualne
wykorzystując domyślną systemową wersję pythona
. Za pomocą flagi -p
można wskazać inny plik wykonywalny
, co w konsekwencji tworzy środowisko wirtualne
używając innej wersji języka Python:
$ cd /usr/home/LOGIN/.virtualenvs
$ virtualenv nazwa_środowiska -p /usr/local/bin/python3.7
Running virtualenv with interpreter /usr/local/bin/python3.7
Using base prefix '/usr/local'
New python executable in nazwa_środowiska/bin/python3.7
Also creating executable in nazwa_środowiska/bin/python
Installing setuptools, pip...done.
Aktywacja wirtualnego środowiska¶
Do uruchomienia skryptu za pomocą interpretera wystarczy podać ścieżkę do nowego pliku wykonywalnego python
(/usr/home/LOGIN/.virtualenvs/nazwa_środowiska/bin/python
), jednak w celu ułatwienia korzystania z virtualenv
, utworzony został skrypt bin/activate
, którego załadowanie zmodyfikuje środowisko użytkownika w taki sposób, by ułatwić korzystanie z nowego środowiska.
$ source /usr/home/LOGIN/.virtualenvs/nazwa_środowiska/bin/activate
(nazwa_środowiska) $
Po załadowaniu skryptu aktywacyjnego widać, że zmienił się znak zachęty
. Na początku została podana nazwa wirtualnego środowiska
, w którym użytkownik aktualnie się znajduje. W tym stanie nie trzeba podawać pełnej ścieżki do interpretera, polecenia python
, pip
oraz easy_install
będą wykonywane korzystając z aktualnie wybranego środowiska wirtualnego.
Opuścić dane środowisko można wydając polecenie deactivate
.
Strona WWW¶
Przy dodawaniu strony WWW typu python
należy wskazać plik wykonywalny /usr/home/LOGIN/.virtualenvs/nazwa_środowiska/bin/python
, aby środowisko virtualenv
było używane do obsługi strony.
Rozwiązywanie problemów¶
Niektóre pakiety instalowane przez polecenie pip
wymagają dodatkowych zmiennych, aby kompilacja przebiegła pomyślnie. Przed uruchomieniem pip install pakiet
należy wykonać:
export CFLAGS="-I/usr/local/include"
export CXXFLAGS="-I/usr/local/include"
Część pakietów kompiluje się wyłącznie pod GCC
, więc aby go wskazać należy wykonać polecenia:
export CC=gcc
export CXX=g++
Można wskazać również inną dostępną wersję GCC
.
W przypadku przekraczania limitu procesów systemowych przy instalacji pakietów poprzez pip
należy wydać polecenia:
export MAX_CONCURRENCY=1
export CPUCOUNT=1
export MAKEFLAGS="-j1"
I ponowić próbę instalacji.
W przypadku przekraczania ilości procesów systemowych podczas kompilacji pakietu, można użyć polecenia:
cpuset -l 0 pip install nazwa_pakietu
cmake
jest używany podczas instalacji pakietu skorzystaj z polecenia:
CMAKE_BUILD_PARALLEL_LEVEL=1 pip install nazwa_pakietu
nazwa_pakietu
należy zastąpić nazwą instalowanego pakietu.
Restart aplikacji¶
Restart aplikacji Python
można wykonać za pomocą naszego panelu zarządzania usługą w zakładce WWW, lub przy użyciu polecenia systemu zarządzania kontem Devil: devil www restart DOMENA
.
Limit procesów dla Phusion Passenger¶
Możliwość ustawienia ilości procesów dla stron typu python
. Składnia polecenia:
devil www options DOMENA processes <ILOŚĆ>
Gdzie:
- DOMENA oznacza domenę WWW typu python
- ILOŚĆ - ilość procesów w przedziale od 1 do 80% procesów
systemowych konta hostingowego
Opcja dostępna jest również w panelu DevilWEB:
Strony WWW
➡ Zarządzaj
(przy wybranej domenie) ➡ Szczegóły
➡ Limit procesów
➡ należy wpisać nową wartość oraz zapisać zmiany przyciskiem Zapisz zmiany
.
Pliki statyczne¶
Wszystkie pliki umieszczone w katalogu /usr/home/LOGIN/domains/DOMENA/public_python/public
są obsługiwane jak pliki statyczne. W tym katalogu najlepiej umieścić wszystkie obrazki, skrypty, style, itp. Żądania do plików znajdujących się w tym katalogu nie będą przetwarzane przez procesy Python i nie będą obciążać interpretatora. Na przykład plik /usr/home/LOGIN/domains/DOMENA/public_python/public/robots.txt
będzie dostępny pod adresem http://DOMENA/robots.txt
.
Zmienne¶
Ustawianie zmiennej z poziomu SSH z widocznością dla aplikacji uruchamianej przez Passengera jest możliwe poprzez dopisanie zmiennych do pliku ~/.bash_profile
(np. export TESTENV=1
).
Uwaga
Zmienne nie zostaną użyte z plików: ~/.bashrc
i ~/.shrc
Logi¶
Uwaga
Nie należy usuwać katalogu logs
, może to spowodować problemy z działaniem stron typu Node.js
, Ruby
, Python
.
Logi błędów zapisują się do pliku error.log
w katalogu /usr/home/LOGIN/domains/DOMENA/logs/
.
Czas życia aplikacji¶
W przypadku braku żądań do strony przez 24 godziny
aplikacja jest wyłączana automatycznie i ponownie automatycznie uruchamiana przy pierwszym następnym wejściu. W przypadku zmiany w konfiguracji strony również aplikacja jest automatycznie wyłączana i uruchamiana przy następnym pierwszym wejściu na stronę.