简体   繁体   中英

Configure Python flask application with apache and mod_wsgi in linux

I have a linux apache 2.4.12 and mod_wsgi 4.5.2 (mod_wsgi.so installed into apache) under application account. Apache runs under port 8050 under application account. Following this link to test mod_wsgi working: http://modwsgi.readthedocs.org/en/develop/user-guides/quick-configuration-guide.html#wsgi-application-script-file and I entered my URL: http://mytest.mydomain.com:8050/myapp . It displayed "Hello World", so it indicated my mod_wsgi installation working. Next I tried to see if I can make flask application work.

I created the simple hello.py file under /home/myuserId/wsgi:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
   return 'Hello World!'

if __name__ == '__main__':
   app.run()

then I created a simple wsgi file as:

import sys, os
sys.path.insert(0, "/home/myuserId/wsgi")

from hello import app as application

then I followed others suggestions including this http://flask.pocoo.org/docs/0.10/deploying/mod_wsgi/ to configure my apache http.conf file with virtualhost as:

<VirtualHost *:8050>

  # ServerName www.example.com

  WSGIDaemonProcess hello user=appuser group=appuser threads=5
  WSGIScriptAlias / /home/myuserId/wsgi/hello.wsgi

 <Directory /home/myuserId/wsgi>
    WSGIProcessGroup hello
    WSGIApplicationGroup %{GLOBAL}
    Require all granted
    Options +ExecCGI
    AddHandler wsgi-script .wsgi
 </Directory>
</VirtualHost>

I saved the httpd.conf file and restarted the apache w/o error. When I entered the URL in chrome: http://mytest.mydomain.com:8050/hello or http://mytest.mydomain.com:8050/hello_world , I got this error:

**Not Found**

The requested URL /hello was not found on this server.
Apache/2.4.12 (Unix) mod_wsgi/4.5.2 Python/2.7.9 Server at mytest.mydomain.com port 8050. 

My questions are:

  1. is my configuration wrong?
  2. what is the right URL for the above hello flask application to use?
  3. tried WSGIScriptAlias /hello /home/myuserId/wsgi/hello.wsgi to mount hello application but not found either.
  4. for flask app, why does conf file have to conf the app in VirtualHost?

You aren't specifying ServerName directive with host name. As a result it will not match that VirtualHost and will instead fallback to whatever the first VirtualHost was that it found in the Apache configuration files.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM