-
Notifications
You must be signed in to change notification settings - Fork 83
Flask diegimas į serverį
Diegsime Flask programą biudzetas į Linux Ubuntu serverį per sukurtą vartotoją "vartotojas"
Savo projekte sukuriame requirements.txt failą (žr. temą virtualios aplinkos)
Per FTP programą įsirašome savo flask programos katalogą į /home/vartotojas/.
Pvz.: Iš Desktop katalogą biudzetas per WINSCP nukopijuojame į /home/vartotojas/
Jei reikia, serveryje įdiegiame openssh:
vartotojas@ubuntu:~$ sudo apt install openssh-server
Prisijungiame prie mūsų serverio su cmd (jei sukurtas vartotojas - per jį, jei ne - per root):
C:\Users\Donoras>ssh vartotojas@192.168.43.108
Serveryje atnaujiname programas:
vartotojas@ubuntu:~$ sudo apt update && apt upgrade
Įdiegiame pip:
vartotojas@ubuntu:~$ sudo apt install python3-pip
Įdiegiame venv:
vartotojas@ubuntu:~$ sudo apt install python3-venv
Sukuriame venv:
vartotojas@ubuntu:~$ python3 -m venv biudzetas/venv
Aktyvuojame sukurtą aplinką:
vartotojas@ubuntu:~$ cd biudzetas/
vartotojas@ubuntu:~/biudzetas$ source venv/bin/activate
Įdiegiame programas iš requirements.txt failo:
(venv) vartotojas@ubuntu:~/biudzetas$ pip install -r requirements.txt
(venv) vartotojas@ubuntu:~/biudzetas$ export FLASK_APP=run.py
(venv) vartotojas@ubuntu:~/biudzetas$ flask run --host=0.0.0.0
Galime kompiuterio naršyklėje užeiti į IP ir portą ir patikrinti, ar veikia programa, pvz.: http://192.168.43.108:5000/
Matome užrašą: WARNING: This is a development server. Do not use it in a production deployment. Todėl toks paleidimas tinka tik kūrimo tikslams. Normaliam veikimui serveryje mums reikės programų nginx ir gunicorn.
Sustabdome procesą cmd programoje paspaudę CTRL+C
(venv) vartotojas@ubuntu:~/biudzetas$ cd
(venv) vartotojas@ubuntu:~$ sudo apt install nginx
(venv) vartotojas@ubuntu:~$ pip install gunicorn
(venv) vartotojas@ubuntu:~$ sudo rm /etc/nginx/sites-enabled/default
(venv) vartotojas@ubuntu:~$ sudo nano /etc/nginx/sites-enabled/biudzetas
Šiame faile įdedame tokį kodą:
Prie server_name įrašome savo serverio IP
Į location /static - kelia iki programos static katalogo
server {
listen 80;
server_name 192.168.43.108;
location /static {
alias /home/vartotojas/biudzetas/biudzetas/static;
}
location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
proxy_redirect off;
}
}
Perkrauname nginx:
(venv) vartotojas@ubuntu:~$ sudo systemctl restart nginx
Jei naršyklėje atidarysime http://192.168.43.108/, pamatysime, kad programa vis dar neveikia (nginx klaida)
Sužinome, kiek mūsų serveris turi branduolių:
(venv) vartotojas@ubuntu:~$ nproc --all
1
Reiškia, paleisdami gunicorn, prie -w turėsime įrašyti 3 ((2 x branduolių_kiekis) + 1)
Paleidžiame gunicorn:
(venv) vartotojas@ubuntu:~$ cd biudzetas/
(venv) vartotojas@ubuntu:~/biudzetas$ gunicorn -w 3 run:app
Galime užeiti į naršyklę ir pažiūrėti, ar viskas veikia, pvz.: http://192.168.43.108/
Bėda, kad nutraukę gunicorn procesą, vėl neprieisime prie programos per naršyklę. Tam reikia įsidiegti ir sukonfiguruoti supervisor
Įsidiegiame:
(venv) vartotojas@ubuntu:~/biudzetas$ sudo apt install supervisor
Sukuriame konfiguracinį failą:
(venv) vartotojas@ubuntu:~/biudzetas$ sudo nano /etc/supervisor/conf.d/biudzetas.conf
Į failą įrašome tokį kodą:
[program:biudzetas]
directory=/home/vartotojas/biudzetas
command=/home/vartotojas/biudzetas/venv/bin/gunicorn -w 3 run:app
user=vartotojas
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
stderr_logfile=/var/log/biudzetas/biudzetas.err.log
stdout_logfile=/var/log/biudzetas/biudzetas.out.log
Sukuriame aprašytus log failus:
(venv) vartotojas@ubuntu:~/biudzetas$ sudo mkdir -p /var/log/biudzetas
(venv) vartotojas@ubuntu:~/biudzetas$ sudo touch /var/log/biudzetas/biudzetas.err.log
(venv) vartotojas@ubuntu:~/biudzetas$ sudo touch /var/log/biudzetas/biudzetas.out.log
Perkrauname supervisor:
(venv) vartotojas@ubuntu:~/biudzetas$ sudo supervisorctl reload
Galime naršyklėje atsidaryti http://192.168.43.108/
Atsidarome nginx konfiguracinį failą:
vartotojas@ubuntu:~$ sudo nano /etc/nginx/nginx.conf
Jame pridedame eilutę client_max_body_size 5M:
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 5M;
# server_tokens off;
Perkrauname nginx:
vartotojas@ubuntu:~$ sudo systemctl restart nginx
VISKAS!
© Donatas Noreika ir Jotautas Treigys
Dekoratoriai
Iteratoriai ir generatoriai
RegEx
Pillow
NumPy
Pandas
- Pandas I
- Užduotys I
- Atsakymai I
- Pandas II
- Užduotys II
- Atsakymai II
- Pandas III
- Užduotys III
- Atsakymai III
Seaborn
Mašininis mokymasis
- 1 Tiesinės regresijos modelis
- 1 Užduotis
- 1 Atsakymas
- 2 Modeliai - klasifikatoriai
- 2 Užduotis
- 2 Atsakymas
- 3 Modeliai praktikoje
- 3 Užduotis (atnaujinta), atsakymas
- 3 Užduotis
- 3 Atsakymas (kodas su komentarais)
Requests, JSON, API
Web Scraping (Beautiful Soup)
Duomenų bazės
- SQL 1
- Užduotys
- Atsakymai
- SQL 2
- Užduotys
- Atsakymai
- SQL 3
- Užduotys
- Atsakymai
- SQL 4
- Užduotis
- SQL per Python
- Užduotis
- ORM 1
- Užduotys
- ORM 2
- Užduotis
- Atsakymas
Flask
- Įžanga
- Užduotys
- I dalis
- Užduotis
- I dalies kodas (atsakymas)
- II dalis
- Užduotis
- Atsakymas (kodas)
- III dalis
- Užduotis
- Atsakymas
- IV dalis
- Užduotis
- Atsakymas
- Flask Many2one, CRUD
- Flask One2many, many2many CRUD
- Flask: REST API kūrimas
- Flask: API su One2many (kodas)
- Flask: vartotojai
- Flask: nuotraukos pridėjimas, admin puslapis, puslapiavimas
- Flask: password reset, error pages
- Flask: projekto sutvarkymas
- Flask diegimas į serverį
Django
- 1. Įžanga, Modeliai
- 2. Administratoriaus svetainė
- 3. Šablonai
- 4. Views
- 5. Puslapiavimas, Paieška, Nuotraukos
- 6. Autorizacija
- 7. Vartotojai II, HTML laukai
- 8. Registracija, Formos
- 9. Vartotojo profilis
- 10. Create, Update, Delete rodinių klasės
- 11. Vertimai
- Užduotis: Autoservisas
- Biblioteka: kodas iki 6-tos dalies
- Biblioteka: kodas nuo 6-tos dalies
- Django diegimas į serverį
- Django diegimas į serverį 2
Django REST
Odoo
- Kurso programa: projektų valdymas
- 1 pamoka
- 2 pamoka
- 3 pamoka
- 4 pamoka
- 5 pamoka
- 6 pamoka
- 7 pamoka
- 8 pamoka
- 9 pamoka
Linux