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