1

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?
Suever
  • 64,497
  • 14
  • 82
  • 101
user3400152
  • 133
  • 6
  • 13

1 Answers1

0

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.

Graham Dumpleton
  • 57,726
  • 6
  • 119
  • 134
  • I commented out VirtualHost tag, it worked. Then using VirtualHost, I added the ServerName mytest.mydomain.com but it did not work. But since you mentioned VirtualHost, I have another web application configured with Reverse proxy like this: ProxyPreserveHost On ProxyPass http://localhost:8040/mywebapp/ ProxyPassReverse http://localhost:8040/mywebapp/ . When I commented out this VirtualHost, the wsgi virtualHost worked. How can I have both work together? Thanks a lot for your reply and providing mod_wsgi. – user3400152 Apr 20 '16 at 22:53
  • Set different ServerName for each if on same listener port but for different host names. Otherwise merge the two VirtualHost's into one if they cover different parts of the URL namespace. – Graham Dumpleton Apr 20 '16 at 23:59