Příprava linuxového serveru pro běh webové aplikace v jazyce Python
11. března 2020Technologií, které lze použít k vývoji webových aplikací je mnoho. Jednou z možností je i jazyk Python a framework Django. V tomto článku Vám popíši jak připravit linuxový server (VPS) pro běh webové aplikace, která je naprogramována v jazyce Python.
                 
            
V tomto článku popíši instalaci linuxového serveru s distribucí Debian 9, na kterém zprovozním webovou aplikaci napsanou v jazyce Python. Nejdříve však bude potřeba zprovoznit web server, Python prostředí a propojit webserver s Python aplikací. Výsledkem bude server fyzický nebo VPS pro běh Python/Django aplikace. Samozřejmě aplikace bude napojena i na SQL databázi, ale to již není předmětem tohoto článku - tyto informace jsou v článku databází PostgreSQL a MySQL/MariaDB
Osnova
Postup instalace a konfigurace je následující:
- Instalace Pythonu
- Instalace a zprovoznění web serveru Nginx
- Zprovoznění prostředí pro Python
- Nastaveni Nginx
- Instalace Django
- Nastavení uwsgi
- Propojení Python aplikace a webserveru
Python
První co je potřeba zvolit je zdali aplikace budete potřebovat Python verze 3 nebo Python verze 2.
Instalace Pythonu verze 3:
apt-get install python3
Instalace Pythonu verze 2:
apt-get install python2
WSGI HTTP
WSGI je zkradka Web Server Gateway Interface. Je to konvence volání webových serverů a předávání požadavků na webové aplikace. Což podporuje i framework Django napsaný v programovacím jazyce Python. S tímto frameworkem vá ukáži jak zprovoznit Python webserver. Podrobnosti co je WSGI.
Krom frameworku Django existují i další frameworky napsané v jazyce Python například Flask.
Jako implementaci WSGI můžeme použít Gunicorn nebo UWSGI. Já někde používám UWSGI a někde Gunicorn.
Instalace uwsgi:
apt-get install uwsgiuwsgi ani nemusíme instalovat do systému, protože je možno použít verzi, kterou nainstalujeme spolu s knihovnami pro aplikaci.
Jak jsem již zmínil, jako web server použijeme Nginx. Proto pokud již máte nainstalován web server apache je dobré od něho systém vyčistit příkazem:
apt-get purge apache2
Web server Nginx nainstalujeme příkazem:
apt-get install nginx
Nainstalujeme virtualenv, což je nástroj pro vytvoření izolovaného prostředí pro běh Python aplikací. Instalaci provedeme příkazem:
apt-get virtualenv
Python web server obecný návod
Vytvoříme si prostředí pro webové aplikace v jazyce Python verze 2. Pro Python verze 3 je to téměř stejné.
Vytvoření adresáře, kde budeme mít prostředí a data projektu:
DIR=/var/www/test2/mysite mkdir $DIR cd $DIRZaložení izolovaného prostředí:
virtualenv --python=python2 --always-copy venvPřepnutí do izolovaného prostředí:
source venv/bin/activate
Veškeré knihovny pro aplikaci do izolovaného prostředí budeme instalovat pomoci technologie pip.
UWSGI nemusíme mít v systému, ale můžeme ho instalovat rovnou do tohoto izolovaného příkazem:
pip install uwsgi
Virtual enviroment Python 3
Založení izolovaného prostředí:
virtualenv --python=python3 --always-copy venvPřepnutí do prostředí:
source venv/bin/activate
Nastavení web serveru Nginx
Vytvoříme soubor /etc/nginx/sites-available/mysite_nginx.conf s obsahem:
# the upstream component nginx needs to connect to
upstream django {
    # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
    server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
    # the port your site will be served on
    listen      8000;
    # the domain name it will serve for
    server_name example.com; # substitute your machine's IP address or FQDN
    charset     utf-8;
    # max upload size
    client_max_body_size 75M;  
    # adjust to taste
    # Django media
    location /media  {
        alias /path/to/your/mysite/media;  
        # your Django project's media files - amend as required
    }
    location /static {
        alias /path/to/your/mysite/static; 
        # your Django project's static files - amend as required
    }
    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include     /path/to/your/mysite/uwsgi_params;
        # the uwsgi_params file you installed
    }
}
Napojení web serveru na aplikaci je dobré udělat  přes socket.
Také je potřeba nastavit automaticky po naběhnutí serveru startovalo uwsgi.
Na starých systémech se jedná o init skripty, ale na dnešních systémech (rok 2019)  použijete určitě startování pomocí systemd.
 
 
Zde je návod jak nastavit,  aby 
uwsgi startovalo pomocí sysmted.
A nenapomeňte zapnout automatický start služby příkazem:
systemctl enable webapp.service
Výsledkem bude server s prostředím pro web aplikace napsaných ve frameworku Django.
Zapomeňte nastavit i zabezpečení webu pomocí certifikátu a šifrovaného spojení HTTPS
Kdo potřebuje Instalaci a konfiguraci linuxového serveru s Pythonem na míru neváhejte mě kontaktovat.
Video ukázka zprovoznění Python webserveru
Video ukázka s instalací a nastavením linuxového serveru pro běh Python aplikace s frameworkem Django. Použit je web server nginx a uwsgi.
- Osnova videa:
	
- Python instalace
- Web server Nginx
- Zprovoznění prostředí pro Python
- Nastaveni Nginx
- Instalace Django frameworku
- Nastavení uwsgi
- Propojení aplikace Pythonu a webserveru
Odkazy
Rozběhání Pythonu jako web aplikace:
Django a Nginx
 
nginx + Django + python 3
Seznam UWSGI parametrů:
uwsgi_params
 
Články na podobné téma
        
            Databáze SAP HANA
                            
            
        
            Příkaz AT
                            
            
        
            Docker build multiarch image
                            
            
        
            VMware vs Proxmox: porovnání výkonu
                            
            
        
            GitLab CI/CD: automatizace testů a nasazení aplikace
                            
            
        
            Migrace VPS z VMware na Proxmox
                            
            
        
            Změna licencování VMware
                            
            
        
            Provoz Microsoft SQL serveru na Linuxu
                            
            
        
            Zálohování: Proxmox backup server
                            
            
        
            Linux jako router a firewall
                            
            
        
            Jak náhrát docker image do Docker Registry
                            
            
        
            Linux: Logical Volume Management
                            
            
        
            Linuxový softwarový RAID
                            
            
        
            Provoz webové aplikace za proxy
                            
            
        
            Migrace mail schránek
                            
            
        
            Docker multistage build
                            
            
        
            Zálohování dat zapnutím počítače
                            
            
        
            Podman
                            
            
        
            Import Windows do virtualizace Proxmox
                            
            
        
            Docker a PHP mail
                            
            
        
            Virtualizace Proxmox
                            
            
        
            Docker a Cron
                            
            
        
            Lenovo ThinkPad X1 Carbon: zprovoznění LTE modemu EM7544
                            
            
        
            Yocto Project: Build vlastního operačního sytému pro embedded zařízení
                            
            
        
            Jak řešit špatný výkon sdílených souborů u Dockeru
                            
            
        
            Jak začít  správně používat Docker
                            
            
        
            Instalace Linuxu na dedikovaný server HPE ProLiant DL320e
                            
            
        
            Jak provést zátěžový test webové aplikace
                            
            
        
            Proč používat filesystém JFS
                            
            
        
            Jak bootovat z 4TB disku s GTP pomocí UEFI
                            
            
        
            Jak nainstalovat operační systém Mageia Linux bez DVD mechaniky
                            
            
        
            Souborový systém Btrfs
                            
            
        
            Raspberry PI
                            
            
        
            Jak zprovoznit vzdálené přehrávání přes síť na televizi s DLNA
                            
            
        
            Upgrade Mandriva Linuxu za běhu
                            
            
        
            Poznámky ke GNU/Linux
                            
            
        
            WINE -  spouštíme programy pro Windous pod Linuxem
                            
            
        
            Operační systém GNU/Linux
                            
            
            
Odběr novinek
    Pokud máte zájem dostávat příležitostně na email novinky.
    
    Můžete se vyplněním emailu registrovat k 
        odběru novinek.
+
 
             
             
             
             
          