Django mod_wsgi apache

When I try to visit the Django website at http://www.satoshi.example.com/mysite , I get 503 Service Temporary Unavailable .

The Apache error log says:

 [Tue Feb 28 07:11:09 2012] [error] [client 10.0.0.202] (13)Permission denied: mod_wsgi (pid=4756): Unable to connect to WSGI daemon process 'django' on '/etc/httpd/logs/wsgi.17555.4.1.sock' after multiple attempts. 

Apache loads mod_wsgi correctly

 root@satoshi :~/html/mysite# apachectl -M | grep wsgi wsgi_module (shared) Syntax OK 

Apache downloads /var/www/html/mysite/apache/apache_django_wsgi.conf which

 WSGIDaemonProcess django WSGIProcessGroup django <Directory "/var/www/html/mysite"> Order allow,deny Options Indexes Allow from all IndexOptions FancyIndexing </Directory> WSGIScriptAlias /mysite "/var/www/html/mysite/apache/django.wsgi" <Directory "/var/www/html/mysite/apache"> Order deny,allow Allow from all </Directory> 

This is /var/www/html/mysite/apache/django.wsgi

 import os import sys paths = [ '/var/www/html/mysite', '/usr/lib/python2.6/site-packages/', ] for path in paths: if path not in sys.path: sys.path.append(path) os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() 

One thing is strange that I found out that I don’t even need LoadModule wsgi_module modules/mod_wsgi.so myself httpd.conf . I think my httpd.conf is an extension of another configuration already loaded by mod_wsgi . Not sure if that matters.

Is there something wrong with what I have presented so far? Let me know if you need more information. Thanks in advance!

==================================================== ===

Information requested by @jpic

 root@satoshi :/var/www/html# ps aux | grep apache root 4564 0.0 0.2 207636 5432 pts/9 S+ 04:16 0:00 vi apache_django_wsgi.conf apache 6006 0.0 0.7 365140 14820 ? S 09:53 0:00 /usr/sbin/httpd apache 6007 0.0 0.7 365140 14884 ? S 09:53 0:00 /usr/sbin/httpd apache 6008 0.0 0.7 365140 14888 ? S 09:53 0:00 /usr/sbin/httpd apache 6009 0.0 0.7 365140 14884 ? S 09:53 0:00 /usr/sbin/httpd apache 6010 0.0 0.7 365008 14784 ? S 09:53 0:00 /usr/sbin/httpd apache 6011 0.0 0.7 365008 14768 ? S 09:53 0:00 /usr/sbin/httpd apache 6012 0.0 0.7 365008 14748 ? S 09:53 0:00 /usr/sbin/httpd apache 6013 0.0 0.7 365140 14876 ? S 09:53 0:00 /usr/sbin/httpd apache 6112 0.0 0.7 365008 14756 ? S 10:05 0:00 /usr/sbin/httpd root 6116 0.0 0.2 207700 5492 pts/15 S+ 10:06 0:00 vi ../apache/django.wsgi apache 6181 0.0 1.5 713972 32136 ? Sl 10:08 0:00 /usr/sbin/httpd root 8173 0.0 0.0 103300 848 pts/17 S+ 23:39 0:00 grep --color=auto apache 

User Information (Did you mean id ? userid not found)

 root@satoshi :/var/www/html# id apache uid=48(apache) gid=48(apache) groups=48(apache) 

ls -la information

 root@satoshi :/var/www/html# ls -la /etc/ | grep httpd drwxrwxr-x. 4 root 4.0K Feb 16 18:27 httpd/ root@satoshi :/var/www/html# ls -la /etc/httpd/ total 24K drwxrwxr-x. 4 root 4.0K Feb 16 18:27 ./ drwxr-xr-x. 128 root 12K Feb 28 03:45 ../ drwxr-xr-x. 2 root 4.0K Feb 28 08:07 conf/ drwxr-xr-x. 2 root 4.0K Feb 16 18:28 conf.d/ lrwxrwxrwx 1 root 19 Feb 16 18:27 logs -> ../../var/log/httpd/ lrwxrwxrwx 1 root 29 Feb 16 18:27 modules -> ../../usr/lib64/httpd/modules/ lrwxrwxrwx 1 root 19 Feb 16 18:27 run -> ../../var/run/httpd/ root@satoshi :/var/www/html# ls -la /etc/httpd/logs/ total 528K drwxrwxr-x. 2 root 4.0K Feb 28 09:53 ./ drwxr-xr-x. 19 root 4.0K Feb 27 06:51 ../ -rw-r--r-- 1 root 17K Feb 28 10:08 access_log -rw-r--r-- 1 root 351 Feb 3 10:24 access_log-20120205 -rw-r--r-- 1 root 1.8K Feb 7 01:39 access_log-20120212 -rw-r--r-- 1 root 278K Feb 18 23:17 access_log-20120219 -rw-r--r-- 1 root 85K Feb 22 08:38 access_log-20120226 -rw-r--r-- 1 root 50K Feb 28 10:08 error_log -rw-r--r-- 1 root 14K Feb 5 03:28 error_log-20120205 -rw-r--r-- 1 root 2.2K Feb 12 03:14 error_log-20120212 -rw-r--r-- 1 root 9.4K Feb 19 03:28 error_log-20120219 -rw-r--r-- 1 root 4.0K Feb 26 03:20 error_log-20120226 -rw-r--r--. 1 root 0 Oct 14 15:14 ssl_access_log -rw-r--r-- 1 root 3.1K Feb 28 09:53 ssl_error_log -rw-r--r-- 1 root 1.4K Feb 3 03:25 ssl_error_log-20120205 -rw-r--r-- 1 root 237 Feb 5 03:28 ssl_error_log-20120212 -rw-r--r-- 1 root 1.2K Feb 17 01:52 ssl_error_log-20120219 -rw-r--r-- 1 root 237 Feb 19 03:28 ssl_error_log-20120226 -rw-r--r--. 1 root 0 Oct 14 15:14 ssl_request_log srw-rw-rw- 1 apache 0 Feb 28 09:53 wsgi.17555.14.1.sock 
+6
source share
3 answers

This issue is documented in:

http://code.google.com/p/modwsgi/wiki/ConfigurationIssues#Location_Of_UNIX_Sockets

The solutions given by other of the changing permissions are incorrect.

The correct solution is to change where the socket files are stored in a place where the Apache user can read them.

On systems that protect the log directory, they sometimes have a system that allows you to return these permissions when you contact them. As a result, any change can only be temporary.

+9
source

I wrote this script to handle the wsgi socket resolution problem on apache2-mpm-itk

 #!/bin/sh # This script will fix apache wsgi socket permissions # By default use standard socket location /var/run/apache2/wsgi # # You have to add this script after success execute of start|restart|reload # commands in next files: # /usr/sbin/apache2ctrl # /etc/init.d/apache2 WSGISocketPrefix="/var/run/apache2/wsgi" if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 fi echo "Wait for other processes to start" sleep 1 echo "Change wsgi socket permissions" chmod 0766 ${WSGISocketPrefix}.* 
+2
source

The user who starts the apache process does not seem to have the right to read / write from the specified location.

They are usually accessed by setting the WSGIDaemonProcess and WSGIProcessGroup in the VirtualHost config.

 WSGIDaemonProcess process-name user=user group=group threads=10 python-path=vitrual-env-path WSGIProcessGroup process-group 

You can also alternatively (if there are no other problems related to the resolution / group). Just add the appropriate read / write access paths to the user executing the apache process.

 chmod [apache-user]+rw /etc/httpd/logs/ 
0
source

Source: https://habr.com/ru/post/909546/


All Articles