You can't have two VirtualHost definitions for the same port number unless they
have ServerName set for each to a different hostname. Even then, you can't
access them by IP and have them distinguished, you would need to use the
respective hostnames.
So if you are going to use an IP address only, have one VirtualHost only and
use inside of that for mod_wsgi:
WSGIDaemonProcess app_qa processes=1 display-name=%{GROUP}
python-path=/opt/app/app_qa/app
WSGIScriptAlias /app_qa /opt/app/app_qa/app/wsgi.py process-group=app_qa
application-group=%{GLOBAL}
WSGIDaemonProcess app_prod processes=1 display-name=%{GROUP}
python-path=/opt/app/app_prod/app
WSGIScriptAlias /app_prod /opt/app/app_prod/app/wsgi.py process-group=app_prod
application-group=%{GLOBAL}
Add your other stuff for Alias etc as well for each.
> On 19 Mar 2020, at 11:42 am, Guddu <[email protected]> wrote:
>
> Dear Graham, Thanks for your response.
>
> I removed socket-user=app_user and now I see a different behaviour. One of
> the app work while the other does not. Both are exactly identical one is
> meant for QA and other for PROD and the QA URL works while for the PROD URL
> it shows an error
>
> Not Found The requested URL /app_prod was not found on this server.
>
> The QA URL is http://<ip>:8999/app_qa
> The PROD URL is http://<ip>:8999/app_prod
>
> The initial reason why I had to move to daemon mode is to be able to set a
> python-path for both of them separately as WSGIPythonPath cannot be used
> inside <VirtualHost>
>
> This is my httpd.conf setting.
>
> WSGISocketPrefix /run/httpd/wsgi/
> <VirtualHost *:8999>
> WSGIDaemonProcess app_qa processes=1 display-name=%{GROUP}
> python-path=/opt/app/app_qa/app
> WSGIProcessGroup app_qa
> WSGIScriptAlias /app_qa /opt/app/app_qa/app/wsgi.py process-group=app_qa
> Alias /static_app_qa /opt/app/app_qa/staticfiles
>
> <Directory /opt/app/app_qa/app/>
> <Files wsgi.py>
> Require all granted
> </Files>
> </Directory>
>
> <Directory /opt/app/app_qa/staticfiles/>
> Require all granted
> </Directory>
> </VirtualHost>
>
> <VirtualHost *:8999>
> WSGIDaemonProcess app_prod processes=1 display-name=%{GROUP}
> python-path=/opt/app/app_prod/app
> WSGIProcessGroup app_prod
> WSGIScriptAlias /app_prod /opt/app/app_prod/app/wsgi.py
> process-group=app_prod
> Alias /static_app_prod /opt/app/app_prod/staticfiles
>
> <Directory /opt/app/app_prod/app/>
> <Files wsgi.py>
> Require all granted
> </Files>
> </Directory>
>
> <Directory /opt/app/app_prod/staticfiles/>
> Require all granted
> </Directory>
> </VirtualHost>
>
> The netstat output is as follows indicating that the socket files were
> created in the desired folder. The permission on files and directories also
> follows
>
> [root@server app]# netstat -an | grep http
> unix 2 [ ACC ] STREAM LISTENING 1107556
> /run/httpd/wsgi/.13750.0.1.sock
> unix 2 [ ACC ] STREAM LISTENING 1107558
> /run/httpd/wsgi/.13750.0.2.sock
>
> [root@server app]# ls -ltr /run/httpd/wsgi/.13750.0.1.sock
> /run/httpd/wsgi/.13750.0.2.sock
> srwx------ 1 app_user root 0 Mar 18 19:29 /run/httpd/wsgi/.13750.0.2.sock
> srwx------ 1 app_user root 0 Mar 18 19:29 /run/httpd/wsgi/.13750.0.1.sock
>
> [root@server app]# ls -ltr /run/httpd/
> total 8
> drwx------ 2 apache apache 40 Mar 10 13:50 htcacheclean
> -rw-r--r-- 1 root root 8 Mar 18 19:29 authdigest_shm.13750
> -rw-r--r-- 1 root root 6 Mar 18 19:29 httpd.pid
> drwxr-xr-x 2 app_user app_user 80 Mar 18 19:29 wsgi
>
> [root@server app]# ls -ltr /run | tail -2
> -rw-rw-r-- 1 root utmp 3072 Mar 18 19:11 utmp
> drwx--x--- 4 root apache 120 Mar 18 19:29 httpd
>
>
>
> Also the ps -ef | grep httpd output is
>
>
> root 13750 1 0 19:29 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
> app_user 13753 13750 0 19:29 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
> app_user 13754 13750 0 19:29 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
> app_user 13755 13750 0 19:29 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
> app_user 13756 13750 0 19:29 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
> app_user 13757 13750 0 19:29 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
>
>
> I am a bit confused as everything seems alright.
>
> Appreciate your help
>
>
> On Wednesday, 18 March 2020 18:57:26 UTC-3, Graham Dumpleton wrote:
> Why are you setting 'socket-user'?
>
> That is only required when using Apache PrivilegesMode as SECURE, or using
> certain Apache MPMs.
>
> What happens when you don't use that?
>
> I want to see the original error messages and permissions on both the socket
> files, and the directory the sockets are in, before changing any
> configuration from what one would normally use.
>
> Graham
>
>> On 19 Mar 2020, at 2:10 am, Guddu <anurag....@ <>gmail.com
>> <http://gmail.com/>> wrote:
>>
>> After configuring daemon mode, I started getting a 503 Server Unavailable
>> error.
>>
>> There are lot of posts on stackoverflow and a dedicate section in the
>> troubleshooting page at
>> https://modwsgi.readthedocs.io/en/develop/user-guides/frequently-asked-questions.html
>>
>> <https://modwsgi.readthedocs.io/en/develop/user-guides/frequently-asked-questions.html>
>> and
>> https://modwsgi.readthedocs.io/en/develop/user-guides/configuration-issues.html
>>
>> <https://modwsgi.readthedocs.io/en/develop/user-guides/configuration-issues.html>
>> but none of the suggestions seem to be helping me at the moment. Appreciate
>> your guidance.
>>
>> The error logs have the following
>>
>> [Wed Mar 18 09:30:17.649428 2020] [wsgi:error] [pid 14044] (13)Permission
>> denied: [client 10.52.7.18:2505] mod_wsgi (pid=14044): Unable to connect to
>> WSGI daemon process 'app_qa' on '/run/httpd/wsgi/.14039.0.1.sock' as user
>> with uid=1001.
>>
>>
>>
>>
>> The directory in question has read and write permission to app_user
>>
>> The httpd processes start fine. Below is the ps output
>>
>> root 14197 1 0 09:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
>> app_user 14202 14197 0 09:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
>> app_user 14203 14197 0 09:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
>> app_user 14204 14197 0 09:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
>> app_user 14205 14197 0 09:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
>> app_user 14206 14197 0 09:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
>>
>>
>>
>> The socket flies get written
>>
>> [root@server wsgi]# ls -ltra
>> total 0
>> srwx------ 1 app_user root 0 Mar 18 09:30 .14197.0.1.sock
>> srwx------ 1 app_user root 0 Mar 18 09:30 .14197.0.2.sock
>>
>>
>>
>>
>> My apache build info is as follows
>>
>> [app_user@server app_qa]$ httpd -V
>> AH00558: httpd: Could not reliably determine the server's fully qualified
>> domain name, using 10.21.2.136. Set the 'ServerName' directive globally to
>> suppress this message
>> Server version: Apache/2.4.6 (Red Hat Enterprise Linux)
>> Server built: Jun 9 2019 13:01:04
>> Server's Module Magic Number: 20120211:24
>> Server loaded: APR 1.4.8, APR-UTIL 1.5.2
>> Compiled using: APR 1.4.8, APR-UTIL 1.5.2
>> Architecture: 64-bit
>> Server MPM: prefork
>> threaded: no
>> forked: yes (variable process count)
>> Server compiled with....
>> -D APR_HAS_SENDFILE
>> -D APR_HAS_MMAP
>> -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
>> -D APR_USE_SYSVSEM_SERIALIZE
>> -D APR_USE_PTHREAD_SERIALIZE
>> -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
>> -D APR_HAS_OTHER_CHILD
>> -D AP_HAVE_RELIABLE_PIPED_LOGS
>> -D DYNAMIC_MODULE_LIMIT=256
>> -D HTTPD_ROOT="/etc/httpd"
>> -D SUEXEC_BIN="/usr/sbin/suexec"
>> -D DEFAULT_PIDLOG="/run/httpd/httpd.pid"
>> -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
>> -D DEFAULT_ERRORLOG="logs/error_log"
>> -D AP_TYPES_CONFIG_FILE="conf/mime.types"
>> -D SERVER_CONFIG_FILE="conf/httpd.conf"
>>
>> [app_user@server app_qa]$ httpd -l
>> Compiled in modules:
>> core.c
>> mod_so.c
>> http_core.c
>>
>>
>>
>>
>> My httpd conf is as follows
>>
>> WSGISocketPrefix /run/httpd/wsgi/
>> <VirtualHost *:8999>
>> WSGIDaemonProcess app_qa processes=2 display-name=%{GROUP}
>> python-path=/opt/app/app_qa socket-user=app_user
>> WSGIProcessGroup app_qa
>> WSGIScriptAlias /app_qa /opt/app/app_qa/app/wsgi.py process-group=app_qa
>> Alias /static_app_qa /opt/app/app_qa/staticfiles
>>
>> <Directory /opt/app/app_qa/app/>
>> <Files wsgi.py>
>> Require all granted
>> </Files>
>> </Directory>
>>
>> <Directory /opt/app/app_qa/staticfiles/>
>> Require all granted
>> </Directory>
>> </VirtualHost>
>>
>>
>> Appreciate your help on this matter.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "modwsgi" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to mod...@ <>googlegroups.com <http://googlegroups.com/>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/modwsgi/82ab46fe-adc1-42fd-90ad-abaf05f58613%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/modwsgi/82ab46fe-adc1-42fd-90ad-abaf05f58613%40googlegroups.com?utm_medium=email&utm_source=footer>.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "modwsgi" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/modwsgi/21647165-18ba-4f06-92d0-b224f06e8311%40googlegroups.com
>
> <https://groups.google.com/d/msgid/modwsgi/21647165-18ba-4f06-92d0-b224f06e8311%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/modwsgi/EE1E7A7B-4045-4B31-8917-D7A4A032D96B%40gmail.com.