Запуск Apache + Bottle + Python
Хорошо, поэтому я пытаюсь запустить Python с Bottle.py, через Apache и mod_wsgi, и он пока не работает...
Я запускаю его на windows, используя xampp. python v2.7
код i, добавленный в httpd (Apache config):
<VirtualHost *>
ServerName example.com
WSGIScriptAlias / C:\xampp\htdocs\GetXPathsProject\app.wsgi
<Directory C:\xampp\htdocs\GetXPathsProject>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
мой код app.wsgi:
import os
os.chdir(os.path.dirname(__file__))
import bottle
application = bottle.default_app()
и мой hello.py:
from bottle import route
@route('/hello')
def hello():
return "Hello World!"
когда я пытаюсь перейти на localhost/hello, я получаю ошибку 404
и у меня нет другой ошибки в файле журнала Apache, возможно, отсутствует что-то основное, будет рад за помощь.
Ответы
Ответ 1
В файле wsgi нет ссылки на файл hello.py.
Поместите содержимое в hello.py в app.wsgi и перезапустите веб-сервер.
Это должно решить проблему.
Чтобы сделать ваше приложение модульным, чтобы вы могли поместить код в различные файлы, проверьте эквивалент бутылки чертежей (используется флеш-каркасом)
Ответ 2
Я не вижу вашего hello.py ссылки где-нибудь.
Вы должны просто поместить содержимое hello.py(route
) в app.wsgi.
Ответ 3
Or Duan комментарии были хорошей отправной точкой для меня, чтобы отделить app.wsgi и файл python приложения. Но для меня это было немного загадочно. После нескольких часов работы, вот что сработало для меня:
[BTW, я работаю над OSX. Пожалуйста, настройте пути, пользователь, группу в соответствии с вашей операционной системой]
/Library/WebServer/Documents/hello_app/app.wsgi:
import sys
sys.path.insert(0, "/Library/WebServer/Documents/hello_app")
import bottle
import hello
application = bottle.default_app()
/Library/WebServer/Documents/hello_app/hello.py:
from bottle import route
@route('/hello')
def hello():
return "Hello World!"
/etc/apache2/extra/httpd-vhosts.conf:
<VirtualHost *:80>
ServerName xyz.com
WSGIDaemonProcess hello_app user=_www group=_www processes=1 threads=5
WSGIScriptAlias /v1 /Library/WebServer/Documents/hello_app/app.wsgi
<Directory /Library/WebServer/Documents/hello_app>
WSGIProcessGroup hello_app
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
Не забудьте перезапустить сервер Apache.
![Check the app in the web browser]()
Ответ 4
Я добавляю свой вывод для людей, у которых будет такая же проблема, как и у меня:
как Kneel-Before-ZOD и ron.rothman, мне пришлось написать свой код в файле WSGI, так как python запускает код оттуда, НО если вы хотите получить свои собственные файлы py, вам нужно ИМПОРТЬ их из файлов WSGI, например что:
from hello import application
"hello" - это имя файла Python FILE NAME, а "приложение" - это то же, что вы должны написать в файле py и NOT в wsgi:
application = bottle.default_app()
также приходилось перезапускать apache каждый раз, когда я делал изменения (и я не знал, что - почему это сбило меня с ума).
tnx для парней, которые помогли мне.
GooLuck.