|
Миста знает всё. Подскажите про 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) Спасибо! Буду изучать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |