I can reproduce this on SuSE Linux Enterprise 11sp1 (x86_64,
2.6.32.12-0.7-xen) and Ubuntu 11.04 (x86_64, 2.6.38.x).



----- Ursprüngliche Mail -----
Von: "Jim Jagielski" <j...@apache.org>
An: dev@httpd.apache.org
Gesendet: Montag, 5. März 2012 19:15:03
Betreff: Re: httpd 2.4.1 and mod_slotmem_shm / mod_proxy_balancer (AH01179)

What system is this... I'm assuming that your shm impl does an
actual file connection for the shm instance...

On Mar 5, 2012, at 10:46 AM, Zisis Lianas wrote:

> Hi,
>
> I think there is an issue in mod_slotmem_shm / mod_proxy_balancer
> with httpd 2.4.x when building and installing as root, but trying
> to run httpd as standard unix-user.
>
> Scenario:
> my httpd is installed as 'root' in /root/httpd-2.4.1/, permissions
> root:root/0755. When I create a 'user' httpd.conf and load slotmem_shm_module,
> proxy_module, proxy_http_module and proxy_balancer_module and do some
> balancer configuration, the httpd doesn't come up. Error log (trace8):
> [Mon Mar 05 11:36:40.739013 2012] [proxy_balancer:debug] [pid 27793:tid
> 140642808817440] mod_proxy_balancer.c(751): AH01178: Doing balancers create: 
> 544, 1 (6)
> [Mon Mar 05 11:36:40.739054 2012] [proxy_balancer:emerg] [pid 27793:tid
> 140642808817440] (13)Permission denied: AH01179: balancer slotmem_create 
> failed
> [Mon Mar 05 11:36:40.739080 2012] [:emerg] [pid 27793:tid
> 140642808817440] AH00020: Configuration Failed, exiting
>
>
> In strace you can see that httpd is trying to create mutex(?) files in
> installation root directory, which belongs to user 'root' and is not
> writeable for other users:
> open("/root/httpd-2.4.1/s29df2056", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such 
> file or directory)
> open("/root/httpd-2.4.1/s29df2056", O_WRONLY|O_CLOEXEC) = -1 ENOENT (No such 
> file or directory)
> open("/root/httpd-2.4.1/s29df2056", O_WRONLY|O_CREAT|O_EXCL|O_CLOEXEC, 0666) 
> = -1 EACCES (Permission denied)
>
>
> I tried to change the mutex location with the mutex directive and
> "proxy-balancer-shm", but that doesn't work:
> Mutex file:/tmp/ proxy-balancer-shm
> Syntax seems to be OK, but this configuration item is ignored completely.
>
>
> config extraction:
> ServerRoot "/root/httpd-2.4.1"
>
> LoadModule proxy_module modules/mod_proxy.so
> LoadModule proxy_http_module modules/mod_proxy_http.so
> LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
> LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
> LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
>
> Mutex file:/tmp/ proxy-balancer-shm
>
> <Proxy balancer://default>
>    BalancerMember http://appserver1.localhost:3001 route=0
>    BalancerMember http://appserver2.localhost:3001 route=1
>    ProxySet lbmethod=byrequests stickysession=JSESSIONID|jsessionid
> </Proxy>
>
> ProxyPassMatch /servlet/ balancer://default/
> ProxyPassReverse / balancer://default/
>
>
>
> My quick hack to get my apache instance started:
> --- httpd-2.4.1/modules/slotmem/mod_slotmem_shm.c
> +++ httpd-2.4.1/modules/slotmem/mod_slotmem_shm.c
> @@ -269,7 +269,10 @@
>     }
>     if (name) {
>         if (name[0] != '/') {
> -            fname = ap_server_root_relative(pool, name);
> +            char file_name[100];
> +            strcpy(file_name, "/tmp/");
> +            strcat(file_name, name);
> +            fname = file_name;
>         }
>         else {
>             fname = name;
>
>
> I think it would make sense to check why the mutex configuration of
> proxy-balancer-shm is ignored.
>
>
>
> Best regards,
> Zisis
>

Reply via email to