Tym razem opiszemy sposób na instalację aplikacji w języku Python na serwerze współdzielonym z panelem administracyjnym cPanel. Podobnie do Ruby, Node.js – Python jest bardzo popularnym językiem programowania wśród web developerów.
Właśnie dla programistów stron internetowych istnieje bardzo przydatny instrument – framework Django. Przykładowo przy pomocy tego framework`a zostały uruchomione takie serwisy jak Disqus, Mozilla, Pinterest i inne.
Wysyłanie plików aplikacji na serwer
Przed rozpoczęciem konfiguracji aplikacji na Python (Django) należy w pierwszej kolejności sprawdzić czy mamy dostęp poprzez SSH do serwera, w razie braku takiej możliwości – polecamy zgłosić się do działu wsparcia (domyślnie SSH jest wyłączony dla użytkowników hostingu SSD). Przy pomocy programów FTP wysyłamy pliki projektu na serwer, również można to zrobić poprzez Git lub Menedżer plików w cPanel.
W naszym artykule będziemy uruchamiać aplikację z publicznego repozytorium w GitHub, dla tego po prostu kopiujemy pliki przy pomocy git. Polecenia będziemy wpisywać w Terminalu, który jest dostępny w cPanel z poziomu przeglądarki.
Do ładowania plików na serwer przy pomocy git, wykonujemy następne polecenie:
git clone https://github.com/tokibito/django-example-todo.git
Pliki wylądują do folderu głównego użytkownika cPanel w django-example-todo.
Zmieniamy nazwę folderu, ponieważ moduł w cPanel niestety nie wspiera nazw z myślnikiem. Robimy to przy pomocy:
mv django-example-todo django_example
Tworzenie aplikacji Python w cPanel
W cPanel przechodzimy do działu Oprogramowanie -> Setup Python App:
Na tej stronie zobaczymy uruchomione wcześniej aplikacje. Dla utworzenia nowej klikamy Create Application:
Wypełniamy wszystkie pola wraz z wersją Python:
Następnie musimy zainstalować wszystkie zależności/pakiety. Możemy to zrobić poprzez cPanel lub Terminal. W panelu Setup Python Apps wchodzimy do aplikacji i na górze zobaczymy polecenie przy pomocy którego będziemy mogli zalogować się do środowiska wirtualnego dla zarządzania aplikacją poprzez Terminal. Na dole możemy wskazać ścieżkę do pliku z zależnościami aplikacji (requirements.txt):
Po dodaniu pliku requirements.txt od razu możemy uruchomić proces instalacji niezbędnych pakietów przyciskiem Run Pip Install.
Jeżeli domena, którą wybraliśmy dla aplikacji jest niedostępna online, dostaniemy poniższy błąd i instalacja pakietów nie zostanie skończona:
Jeżeli nie możemy skorzystać z domeny lub subdomeny, która jest widoczna w sieci, możemy skończyć instalacje zależności następnym poleceniem w terminalu:
[rogcbqiz@plskm31 ~]$ source /home/rogcbqiz/virtualenv/django_example/myproject/3.7/bin/activate && cd /home/rogcbqiz/django_example/myproject (myproject:3.6)[rogcbqiz@plskm31 myproject]$ cd .. (myproject:3.6)[rogcbqiz@plskm31 django_example]$ pip install -r requirements.txt
Uruchamiać polecenie należy w folderze, gdzie znajduje się plik requirements.txt, po wejściu do środowiska wirtualnego (virtual environment).
Należy zwrócić uwagę – w przypadku uruchomienia aplikacji na Django, pod czas instalacji tego modułu plik wsgi.py nadpisuje się. Jeżeli plik uruchomiający aplikację (Application startup file) ma taką samą nazwę, to będziemy musieli wgrać go na serwer jeszcze raz usuwając standardowy plik wsgi.py od Django.
Konfiguracja aplikacji Python
Następnie musimy dokończyć konfigurację aplikacji, np. utworzyć bazę danych i podłączyć ją w settings.py, i zmigrować dane do niej.
W naszym przypadku aplikacja wymagała wykonanie następnych poleceń:
migracja danych do bazy danych:
(myproject:3.6)[django@plskm31 myproject]$ python manage.py migrate
utworzenie konta administratora:
(myproject:3.6)[django@plskm31 myproject]$ python manage.py createsuperuser
Skopiowaliśmy również folder /home/rogcbqiz/virtualenv/django_example/myproject/todo/static do -> /home/rogcbqiz/public_html/static żeby pliki statyczne wyświetlały się poprawnie przy wejściu na stronę.
Często przy uruchomieniu aplikacji w Django na domenie zewnętrznej powstaje następny błąd:
Żeby naprawić to musimy w pliku konfiguracyjnym aplikacji settings.py zmienić linie:
ALLOWED_HOSTS = []
#tutaj może być wpisana domena albo same puste nawiasy
na:
ALLOWED_HOSTS = ['*']
#możemy po prostu napisać domeny, na których aplikacja może się uruchamiać lub wpisać gwiazdkę *, aby domena mogła być dowolna