How to set up Mod_WSGI for Python on Ubuntu
Solution 1
I have found that this is a known bug with mod_wsgi apt-get package that is over a year old! Details at http://www.mail-archive.com/[email protected]/msg1147225.html. The apt-get package did not have the wsgi.load file so that needed to be created by doing the steps in the link above.
Thanks to everyone that helped!
Solution 2
See if the module is actually loaded properly with:
apache2ctl -t -D DUMP_MODULES
Solution 3
As far as I can see, you haven't loaded the mod_wsgi module into your httpd.conf
.
I'd first try adding the wsgi files to the mods-enabled
directory of Apache.
sudo ln -s /etc/apache2/mods-available/wsgi.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/wsgi.conf /etc/apache2/mods-enabled
Then restart Apache and it should work.
Solution 4
First confirm that the WSGI module is actually installed:
dpkg -l libapache2-mod-wsgi
This should give you output including name, version, etc. - look for the letters on the left of the name, this indicates current status of the package. To check manually, look in /etc/apache2/mods-available/ and you should see both wsgi.conf and wsgi.load. If these exist, they should have corresponding symlinks in /etc/apache2/mods-enabled/.
Should either set not exist, start by fixing that first - you can't interpret python code via apache if apache can't find the interpreter. Also, your test.py script will not work given the AddHandler directives you've configured - that directive tells apache to pass files of a certain extension to the relevant handler. Make your script test.wsgi or change the AddHandler directive.
Solution 5
Not sure if this is relevant, but after running:
apt-get install libapache2-mod-wsgi
... the following files did not exist:
/etc/apache2/mods-available/wsgi.conf
/etc/apache2/mods-available/wsgi.load
Reinstalling did not seem to replace the missing files. Weird! However, purge
seemed do to the trick:
apt-get install libapache2-mod-wsgi
apt-get purge libapache2-mod-wsgi
apt-get install libapache2-mod-wsgi
# ls /etc/apache2/mods-available/ | grep wsgi
wsgi.conf
wsgi.load
Related videos on Youtube
![AutomatedTester](https://i.stack.imgur.com/wayX6.jpg?s=256&g=1)
AutomatedTester
Open Source Junkie and community helper! Python hacker, Automation expert, CI/CD believer...
Updated on September 17, 2022Comments
-
AutomatedTester almost 2 years
I am trying to setup MOD_WSGI on my Ubuntu box. I have found steps that said I needed to do the following steps I found at http://ubuntuforums.org/showthread.php?t=833766
- sudo apt-get install libapache2-mod-wsgi
- sudo a2enmod mod-wsgi
- sudo /etc/init.d/apache2 restart
- sudo gedit /etc/apache2/sites-available/default and update the Directory
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews ExecCGI AddHandler cgi-script .cgi AddHandler wsgi-script .wsgi AllowOverride None Order allow,deny allow from all </Directory>
- sudo /etc/init.d/apache2 restart
-
Created test.wsgi with
def application(environ, start_response): status = '200 OK' output = 'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output]
Step 2 fails because it says it can't find mod-wsgi even though the apt-get found it. If I carry on with the steps the python app just shows as plain text in a browser.
Any ideas what I have done wrong?
EDIT: Results for questions asked
automatedtester@ubuntu:~$ dpkg -l libapache2-mod-wsgi Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Description +++-======================================-======================================-============================================================================================ ii libapache2-mod-wsgi 2.5-1 Python WSGI adapter module for Apache automatedtester@ubuntu:~$ dpkg -s libapache2-mod-wsgi Package: libapache2-mod-wsgi Status: install ok installed Priority: optional Section: python Installed-Size: 376 Maintainer: Ubuntu MOTU Developers <[email protected]> Architecture: i386 Source: mod-wsgi Version: 2.5-1 Depends: apache2, apache2.2-common, libc6 (>= 2.4), libpython2.6 (>= 2.6), python (>= 2.5), python (<< 2.7) Suggests: apache2-mpm-worker | apache2-mpm-event Conffiles: /etc/apache2/mods-available/wsgi.load 06d2b4d2c95b28720f324bd650b7cbd6 /etc/apache2/mods-available/wsgi.conf 408487581dfe024e8475d2fbf993a15c Description: Python WSGI adapter module for Apache The mod_wsgi adapter is an Apache module that provides a WSGI (Web Server Gateway Interface, a standard interface between web server software and web applications written in Python) compliant interface for hosting Python based web applications within Apache. The adapter provides significantly better performance than using existing WSGI adapters for mod_python or CGI. Original-Maintainer: Debian Python Modules Team <[email protected]> Homepage: http://www.modwsgi.org/ automatedtester@ubuntu:~$ sudo a2enmod libapache2-mod-wsgi ERROR: Module libapache2-mod-wsgi does not exist! automatedtester@ubuntu:~$ sudo a2enmod mod-wsgi ERROR: Module mod-wsgi does not exist!
FURTHER EDIT FOR RMYates
automatedtester@ubuntu:~$ apache2ctl -t -D DUMP_MODULES apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName Loaded Modules: core_module (static) log_config_module (static) logio_module (static) mpm_worker_module (static) http_module (static) so_module (static) alias_module (shared) auth_basic_module (shared) authn_file_module (shared) authz_default_module (shared) authz_groupfile_module (shared) authz_host_module (shared) authz_user_module (shared) autoindex_module (shared) cgid_module (shared) deflate_module (shared) dir_module (shared) env_module (shared) mime_module (shared) negotiation_module (shared) python_module (shared) setenvif_module (shared) status_module (shared) Syntax OK automatedtester@ubuntu:~$
-
Dana the Sane over 14 yearsWhat can't find mod_wsgi, Apache or Python?
-
AutomatedTester over 14 yearsthe a2enmod command could not find mod_wsgi
-
AutomatedTester over 14 yearsthe test.py was a typo in the question. I meant to put test.wsgi.
-
AutomatedTester over 14 yearsthe test.py was a typo in the question. I meant to put test.wsgi. I did run the a2enmod but it said that it could not find mod_wsgi as I put at the end of my question
-
Zayne S Halsall over 14 yearsFine, but have you confirmed that the module is installed and correctly linked in per the instructions above?
-
AutomatedTester over 14 yearsI have put the information that you asked for in the question.
-
AutomatedTester over 14 yearsit doesn't look like it has loaded properly
-
Zayne S Halsall over 14 yearsNot all the information - please check manually if the files wsgi.conf and wsgi.load in /etc/apache2/mods-available/ are symbolically linked to /etc/apache2/mods-enabled as requested. A simple long listing of the directory should suffice (i.e. ls -alh /etc/apache2/mods-enabled/).
-
Almett over 2 yearsInstalling this fixed my issue. Thanks a lot!