Имя: Пароль:
IT
Веб-мастеринг
Миста знает всё. Подскажите про Python + Apache + mod_wsgi.
0 ptiz
 
19.11.19
13:09
Поставил Python 3.8 + Apache 2.4 + подключил mod_wsgi (на эти страдания ушло 2 дня, но победил)

Еще этим ставил flask (и оно даже запускалось) - он вообще нужен в таком случае? Или чисто Apache + mod_wsgi достаточно?

С виртуальнымм хостами не стал возиться, можно ведь без них?

Прямо в http.conf прописал (это выдал mod_wsgi-express module-config):

LoadFile "c:/python/python38/python38.dll"
LoadModule wsgi_module "c:/python/python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd"
WSGIPythonHome "c:/python/python38"

Apache запускается без ошибок.

А вот дальше - не понимаю логику, написал, может, и фигню:

WSGIScriptAlias /helloflask C:/Python/helloflask/helloflask.wsgi

Alias "/helloflask" "C:/Python/helloflask/"
<Directory "C:/Python/helloflask/">
    AllowOverride All
    Options None
    Require all granted
</Directory>

Как надо? Я полный нуль в вебе.

Обращение http://127.0.0.1/helloflask/ - похоже, пытается стучаться к index.html - если его добавить, открывается этот файл.
Каким образом апач понимает, что надо питона подключать? При открытии какого ресурса?
1 pechkin
 
19.11.19
13:10
так у тебя же лоад модуль прописан - вот и понимает
2 ДенисЧ
 
19.11.19
13:10
"WSGIScriptAlias /helloflask C:/Python/helloflask/helloflask.wsgi
Вот у тебя строчка, которая говорит, что нужно запускать.
3 ptiz
 
19.11.19
13:13
(2) А следующий блок нужен?
Alias "/helloflask" "C:/Python/helloflask/"
<Directory "C:/Python/helloflask/">
4 ptiz
 
19.11.19
13:14
У меня сейчас выдает ошибку 403, ощущение, что к пустой странице стучится. Всё это - на Win10, права все есть. Если создаю index.html - вместо 403 ошибки открывается он.
5 ДенисЧ
 
19.11.19
13:24
(3) Да.
первая строка тебе даёт урл твойсайт/helloflask
вторая описывает свойства того каталога.
6 ДенисЧ
 
19.11.19
13:25
(4) 403 - это авторизация нужна. Может, апачу не хватает прав на твой каталог.
7 ДенисЧ
 
19.11.19
13:25
А так - надо дома смотреть, когда-то настраивал, правда без фласка, голый wsgi - работал.
8 ptiz
 
19.11.19
13:28
(6) Хватает, когда создаю index.html в это каталоге - открывается именно он.
А когда принудительно открываю http://127.0.0.1/helloflask/helloflask.wsgi - он открывается просто как текст, не заметно, чтобы он питоном обрабатывался.
9 ДенисЧ
 
19.11.19
13:29
(8) у тебя скрипт-алиас не отрабатывает...
Если напомнишь вечером, часов в 20, гляну свой конфиг
10 Garikk
 
19.11.19
13:40
по хорошему надо ставить на винду wsl и в нем настраивать такие штуки, в винде это делать немного геморройно (и бестолково)
p.s. а ещё лучше вообще заюзать докер
11 Cyberhawk
 
19.11.19
13:49
(6) Авторизация это 401
12 ptiz
 
19.11.19
13:51
(10) wsl, докер - ох... гуглить пойду эти слова
13 ptiz
 
19.11.19
13:52
Вот php - завелся сразу (dokuwiki поднялась)
14 ДенисЧ
 
19.11.19
14:04
(10) Почти никакого геморроя, если взять правильный апач...
(11) а 403 - это forbidden. А почему форбидден? Потому-что авторизацию не прошёл ))
15 ДенисЧ
 
19.11.19
14:04
(10) А ещё лучше поднять кластер на 5 серверах и поставить нгникс в качестве лоад-балансера...
16 Fragster
 
гуру
19.11.19
14:10
мне кажется, или питон работает не как похапэ, а сам хостит веб сервер и апач ему не нужен? ну или нужен только как реверс прокси?
17 Cyberhawk
 
19.11.19
14:15
(14) Уговорил
18 arsik
 
гуру
19.11.19
14:18
(8) Ну так лог апача то посмотри. Там подробнее должно быть все описано. Что вилами по воде то водить?
19 eklmn
 
гуру
19.11.19
14:18
1cник блин ))
выложи полный конфиг <VirtualHost *:80>, непонятно что ты еще в вхост запихал.

"Или чисто Apache + mod_wsgi достаточно?"
нет, не достаточно.

"Каким образом апач понимает, что надо питона подключать?"
WSGIScriptAlias /helloflask C:/Python/helloflask/helloflask.wsgi Кстати что у тебя там? )
20 ДенисЧ
 
19.11.19
14:21
(16) Нет. Тебе кажется. У питона есть свой сервер во фласке. Но он для девелопа тольо.
21 ДенисЧ
 
19.11.19
14:21
(19) ""Или чисто Apache + mod_wsgi достаточно?"
нет, не достаточно. "

Ну да, ещё питон должен быть на компе ))
22 eklmn
 
гуру
19.11.19
14:23
(16) там типовой http.server python`a
23 eklmn
 
гуру
19.11.19
14:24
(21) я вот не уверен что он pip install mod_wsgi делал, а ты? )
24 ДенисЧ
 
19.11.19
14:47
(23) А я делал :shy:
Вообще-то пип-инсталл первый шаг в любом teapot's-guide по установке mod_wsgi...
25 ptiz
 
19.11.19
15:35
(23) "pip install mod_wsgi " - делал конечно, иначе как бы я mod_wsgi-express module-config запустил.
(19) выложи полный конфиг <VirtualHost *:80>
Я без виртуальных хостов, в основном конфиге всё прописал. Так можно?
26 ДенисЧ
 
19.11.19
15:38
(25) "Я без виртуальных хостов" - можно.
27 eklmn
 
гуру
19.11.19
15:38
(25) можно
а что у тебя в helloflask.wsgi ?
28 ptiz
 
19.11.19
15:41
(27) Пока хрень. Но на неё ведь должно быть ругательство, если там ошибка? А сейчас - просто содержимое этого файла выводится, как будто он ничем не обрабатывается.
29 eklmn
 
гуру
19.11.19
15:48
(28) так хрени не должно быть там, а это

<code>
import sys

sys.path.insert(0, 'C:/Python/helloflask')
from MYFLASK111 import app as application
</code>

и уже твой файл с твой "хренью"

MYFLASK111.py
from flask import Flask
app = Flask(__name__)
...


и еще добавь в конфиг
ServerName localhost
DocumentRoot C:/Python/helloflask
30 ptiz
 
19.11.19
16:33
(29) Ну в helloflask.wsgi было:
from app import app as application


app - папка с __init__.py, в котором:

from flask import Flask
app = Flask(__name__)
from app import routes

Это я пример взял из инета.

Пока ничего не поменялось. Буду дальше гуглить.
Всё равно всем спасибо.
31 ДенисЧ
 
19.11.19
16:37
Повторюсь - продними веткугде-то в 19-30 - кину свои конфиги, которые работают.
32 ДенисЧ
 
19.11.19
19:08
LoadFile "d:/python/python37.dll"
LoadModule wsgi_module "d:/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "d:/python"
WSGIRestrictStdout Off

<VirtualHost *:80>
    ServerName localhost
    WSGIScriptAlias /api e:\Projects\Site\Back\api\app\app.wsgi
    <Directory e:\Projects\Site\Back>
        WSGIScriptReloading On
        Require all granted
    </Directory>
</VirtualHost>
33 Asmody
 
19.11.19
19:49
(32) Кстати, а mod_wsgi видит изменения в .py без перезапуска апача? Я подозреваю параметр WSGIScriptReloading
34 Asmody
 
19.11.19
19:51
Загуглил. Сам не умеет.
35 ДенисЧ
 
19.11.19
19:57
(33) В самих файликах умеет. А в том, что import - не видит (
36 Garikk
 
19.11.19
20:44
(15) зачем? докер используют для разработки, pycharm prof изкоробки его поддерживает
ничего н6астраивать не нужно,есть готовые контейнеры с питоном
37 ДенисЧ
 
19.11.19
21:05
(36) Какой ужас.... Докера тащить, чтобы простенкие скрипты крутить? Нах^Wфиг надо...

@В начале многих проектов часто появляется выбор между новыми и крутыми фреймворками/языками/подходами. Конечно все зависи от специфики проекта, бюджетов, команды. Так вот про архитектуры: интересно то что в последнее время все бегут за микросервисной архитектурой, насмотревшись на страшные и ужасные монолиты с многолетней кодовой базой. Вооружившись успешными кейсами от больших компаний начинают ваять новый продукт с разделенной логикой ну и докером с k8s конечно. И вот в какой-то момент оказывается что проще сходить сервисами в одну бд чем связывать их по интерфейсу, транзакция оплаты иногда теряется где-то в цепочке сервисов, а микросервисный рай становится адом.

Вывод отсюда достаточно простой: если вам нужно запустить проект, просто применяйте то что знаете хорошо, добавьте немного консерватизма в свой выбор. Со временем когда ваше решение достигнет пика возможностей тогда рассмотрите варинты плавного перехода. Если это ваш домашний проект - ни в чем себе не отказывайте :)

Этот пост был навеян ситуаций годичной давности, когда наш старый proghub.ru работал на docker, а выбран он был только из интереса. Так вот это оказалось очень плохой идеей)@ (с)
38 ptiz
 
20.11.19
09:34
(32) Спасибо! Буду изучать.