OK... What I'll do is add a directive which provides a "default" location for slotmem file...
On Mar 5, 2012, at 1:53 PM, Zisis Lianas wrote: > 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 >> >