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 >