Отговори на тема  [ 27 мнения ]  Отиди на страница Предишна  1, 2
RPI, NGINX, HTML 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 8:39 pm
Мнения: 1954
Мнение Re: RPI, NGINX, HTML
За чий Х(хикс :)) ти е този nginx? Индианеца се подкарва за отрицателно време. С още 10 минути четене ще ти тръгне и останалата боза. Пусни си нещата на гол сървър, след това си прави експерименти.

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ!


Пет Май 22, 2020 7:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 9:16 am
Мнения: 1705
Мнение Re: RPI, NGINX, HTML
Martin91 написа:
Ето какво получавам от localhost

Ето какво получавам когато зареждам файловета през localhost

Kато ти гледам резултата и конфигурацията в предните постове, мога само да ти кажа, че не си я сложил където трябва и nginx-a не я чете. Ако конфигурираш всичко както трябва още на localhost ще видиш така мечтаната страничка.

syscop написа:
За чий Х(хикс :)) ти е този nginx? Индианеца се подкарва за отрицателно време. С още 10 минути четене ще ти тръгне и останалата боза. Пусни си нещата на гол сървър, след това си прави експерименти.

Да бе, после да се чуди как да подкара питона с него :D . Тук всичко му е дадено и пак не се получава номера, какво остава за друг сървър.


Пет Май 22, 2020 8:14 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 11:21 am
Мнения: 1025
Мнение Re: RPI, NGINX, HTML
michev написа:
Martin91 написа:
Да бе, после да се чуди как да подкара питона с него :D . Тук всичко му е дадено и пак не се получава номера, какво остава за друг сървър.


+1, никакви индианци. Ако ще тества нещо друго, то по-добре вградения уеб сървър във Flask-a.


Пет Май 22, 2020 9:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 9:16 am
Мнения: 1705
Мнение Re: RPI, NGINX, HTML
Поиграх си малко с тоя проект - крайно съм разочарован. За неразбиращите това ще е тотален кошмар за подкарване, да не казвам направо невъзможно. Това със сървъра е най-малкият проблем. Използва python 2, няма requirements.txt (нужни пакети), има зададени твърдо пътища в кода, нужно е да се създаде крон задача, която да извиква един от скриптовете - все забавни неща които трябва да са описани стъпка по стъпка (а не са). За да не скучаеш ако случайно се оправиш до тук - на "/" се отваря един прост текст "Hello World!". Трябва да се посети "/lab_temp". Всичките му зависимости като js и css са все от CDN-и.


Пет Май 22, 2020 10:33 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Ное 15, 2017 4:11 pm
Мнения: 136
Мнение Re: RPI, NGINX, HTML
Да ли нещо такова ще свърши работа?
https://medium.com/@jgefroh/a-guide-to- ... 6a9d034940


Пон Май 25, 2020 2:56 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 11:21 am
Мнения: 1025
Мнение Re: RPI, NGINX, HTML
Martin91 написа:
Да ли нещо такова ще свърши работа?
https://medium.com/@jgefroh/a-guide-to- ... 6a9d034940


Не, няма да ти свърши работа. То още в заглавието си пише, че е за статични сайтове само.


Пон Май 25, 2020 8:11 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Авг 19, 2010 7:37 pm
Мнения: 64
Мнение Re: RPI, NGINX, HTML
Martin91, защо не погледнеш това:
https://www.youtube.com/channel/UCMl6ri ... TkRjr0VpAw .
Доста добре работи.


Сря Авг 05, 2020 6:56 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Ное 15, 2017 4:11 pm
Мнения: 136
Мнение Re: RPI, NGINX, HTML
Ползвам този софтуер, но не всичко може да се направи на него


Сря Авг 12, 2020 6:40 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Авг 19, 2020 2:09 pm
Мнения: 1
Мнение Re: RPI, NGINX, HTML
Привет!

Както michev каза, проектът е зле. Документацията не е добра и ако не знаеш какво правиш стигаш до задънена улица. Личи си, че човекът който го е правил не е опитен, но е научил нещо от него. Нека от неговите грешки, научим още.

Нямам Raspberry Pi. Дебъгването го правих на виртуална машина с Raspberry Pi Desktop. Martin91 не знам кое как си направил, затова започвам отначало.

Хубаво е да знаеш как работят нещата. Един от проблемите е, че документацията не споменава да се инсталира uwsgi - application server. uwsgi може да изпълнява програми написани на различни чрез плъгини.

Архитектурата е nginx <-> socket <-> uwsgi <-> python2 приложение. Когато пратиш HTTP заявка на nginx, nginx праща заявката на uwsgi, което изпълнява приложението.

nginx комуникира с uwsgi чрез unix socket файл дефиниран в конфигурацията на nginx и uwsgi. uwsgi създвава unix сокета, а nginx го отваря. Ако uwsgi не работи, nginx ще върне 502 Bad Gateway. Ако uwsgi работи и приложението има някаква грешка, uwsgi ще върне 500 Internal Server Error (проксирано от nginx).

Код:
# Инсталиране на git, nginx и uwsgi с python плъгин
sudo apt-get update
sudo apt-get install git
sudo apt-get install nginx uwsgi uwsgi-plugin-python
# Обикновено питон приложенията имат requirements.txt файл, който показва зависимостите на приложението. В нашият случай нямаме такъв и трябва да гледаме сорс кода. flask и sqlite3 са инсталирани по подразбиране с Raspberry Pi Desktop
sudo apt-get install python-arrow python-flask python-plotly
# ВНИМАНИЕ: Инсталираме модулите глобално. Това не е особено препоръчително: става мазало, ако се инсталират много, може да се появат конфликти или ако обновиш модул може някое приложение да спре да работи. В нашия случай не е толкова зле. Инсталираме модул, който го няма в пакетното хранилище на Дебиан.
sudo pip install Adafruit_DHT

# Предполагаме, че си в $HOME директорията ти
cd
# Изтегляме кода на приложението
git clone --depth 1 https://github.com/cwalk/Pi-Temp.git
# Копираме кода на приложението в /var/www/lab_app
cp -r ~/Pi-Temp/lab_app /var/www/lab_app


Конфигурационните файлове "lab_app_nginx.conf" и "lab_app_uwsgi.ini" трябва да се променят малко.

Код:
# lab_app_nginx.conf файл
# root директивата показва къде nginx ще гледа за файловете. В оригиналната конфигурация root е променен само за url започващи с /static. По подразбиране root е /var/www/html, където се намира стандартната html страница(index.html).

server {
    listen      80;
    server_name localhost;
    charset     utf-8;
    client_max_body_size 75M;

    root /var/www/lab_app/;

    location / { try_files $uri @labapp; }
    location @labapp {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/lab_app/lab_app_uwsgi.sock;
    }
}


Код:
# lab_app_uwsgi.ini файл

[uwsgi]
#application's base folder
# Забележи това е същата директория в която сложихме кода от git.
base = /var/www/lab_app
# Много важно. Плъгина, който uwsgi ще ползва за да изпълни приложението. Ако не се спомене uwsgi ще даде грешка.
plugin = python

#python module to import
app = lab_app
# module показва кой питон модул uwsgi трябва да прочете за да изпълни приложението
# app e променлива, която може да се използва в други директиви със помощта на синтаксиса %(app)
module = %(app)

# home дефинира PYTHONHOME environment variable. Тъй като инсталираме модулите на приложението глобално не е нужно да я дефинираме.
#home = %(base)/venv
# pythonpath добавя директорията в PYTHONPATH environment variable. В нашия случай е директорията, която сочи base променливата.
# Това е важно, защото uwsgi няма да може да намери модулът дефиниран в module директивата.
pythonpath = %(base)

#socket file's location
# Сокета дефиниран тук трябва да се същият в nginx конфигурацията
socket = /var/www/lab_app/%n.sock

#permissions for the socket file
chmod-socket    = 666

#the variable that holds a flask application inside the module imported at line #6
# Кой обект да се извика след като модулът от module директивата е зареден
callable = app

#location of log files
# Ако приложението не работи може да видиш какво пише в този лог файл.
logto = /var/log/uwsgi/%n.log


Така кода от lab_app_uwsgi.ini се слава в "/etc/uwsgi/apps-available/lab_app_uwsgi.ini", а кода от nginx lab_app_nginx.conf в "/etc/nginx/sites-available/lab_app_nginx.conf". Ако погледнеш в "/etc/uwsgi" и "/etc-nginx" има сходни директории "available" и "enabled". Файловете в "enabled" директорията са всъщност линкове към файлове в "available" директорията. Идеята е, че може да имаш дефиниции за различни сайтове/програми и вместо да изтриеш дефиницията, може само да изтриеш линка. Така ако в бъдеще решиш да използваш отново конфигурацията може да пресъздадеш линка с "ln -s" командата. Това и ще направим.

Код:
# Създаване на линковете и преместване в правилната директория
sudo ln -s ../apps-available/lab_app_uwsgi.ini /etc/uwsgi/apps-enabled/lab_app_uwsgi.ini
sudo ln -s ../sites-available/lab_app_nginx.conf /etc/uwsgi/sites-enabled/lab_app_nginx.conf
# Изтрий сайта по подразбиране
sudo rm /etc/nginx/sites-enabled/default
# Може да го създадеш пак с командата
# sudo ln -s ../sites-available/default /etc/nginx/sites-enabled/default


За да провериш дали конфигурацията е наред може да изпълниш
Код:
sudo uwsgi /etc/uwsgi/apps-enabled/lab_app_uwsgi.ini
# Ако uwsgi тръгне без грешка може значи на пръв поглед всичко е наред. Може да спреш програмата с CTRL-C(задържаш CTRL клавиша и натискаш C).



За да провериш nginx конфигурацията изпълни
Код:
sudo nginx -t
# Ако няма грешка кажи на nginx да презареди конфигурацията
systemctl reload nginx
# Ако имаш грешка трябва да я оправиш. :)



Теоретично всичко трябва да работи и nginx и uwsgi да се стартират с пускане на операционната система.
За всеки случай изпълни

Код:
# Стартиране на nginx и uwsgi със стартиране на операционната система
sudo systemctl enable nginx
sudo systemctl enable uwsgi


Ако искаш да спреш или рестартираш някоя услуга
Код:
sudo systemctl restart nginx
sudo systemctl stop nginx
sudo systemctl restart uwsgi
sudo systemctl stop uwsgi


Не забравяй да изпълниш restart или reload на nginx или uwsgi ако смениш конфигурацията.

След всичко това ако отвориш localhost с браузъра ще видиш "Hello World!". Защо? Защото това е зададено за маршрута "/". Ако погледнеш кода може да видиш, че има други маршрути(views) "/lab_temp" и "/lab_env_db". Има недокументиран "/to_plotly" маршрут, който не работи. Предполагам, защото нямам база данни. От беглият ми поглед в кода, изглежда че "/lab_temp" си работи и ти дава стойностите на сенсозар в реално време. "/lab_env_db" е да ти чертае гафика на историята на стойностите, но ти трябва да имаш външен скрипт, който ти пълни базата. Скрипта се намира в "lab_app/env_log.py" файла. Този скрипт може да го изпълниш и на ръка няколко пъти да сложи някакви стойности в базата. Предполагам ще можеш да видиш някаква графика след това в "/lab_env_db". Базата трябва да се намира тук '/var/www/lab_app/lab_app.db'. Нищо не трябва да правиш по въпроса, защото този файл идва от git хранилището. Само гледай да не го изтриеш, защото ще си изгубиш данните. Ако искаш да изпълняваш "env_log.py" скрипта примерно на всеки час трябва да използваш cron. За повече информация "man cron".

Общо взето това е. Има какво да се желае от този проект, но според мен това е добър случай да научиш нещо. В крайна сметка всичко се разваля и трябва да се научим да го оправяме. А ако не знаеш нещо как работи, не знаеш как да го поправиш.

П.П Моля не използвайте конфигурацията в продукция. Тя е предназначена само за учебни цели.


Надявам се написаното да е полезно.


Сря Авг 19, 2020 6:13 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 11:21 am
Мнения: 1025
Мнение Re: RPI, NGINX, HTML
Браво, адаш, силен първи пост. И добре дошъл! :)


Пет Авг 21, 2020 2:35 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Ное 15, 2017 4:11 pm
Мнения: 136
Мнение Re: RPI, NGINX, HTML
Доста изчерпателен отговор, за което благодаря много! Ще последвам съветите Ви, rado.


Нед Авг 23, 2020 11:32 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Ное 15, 2017 4:11 pm
Мнения: 136
Мнение Re: RPI, NGINX, HTML
П.П Няма да използвам конфигурацията в продукция.


Пон Авг 24, 2020 10:42 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 27 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни