On Thu, 14 Feb 2002, Bill Stoddard wrote: > From testing on Windows, I am +1 for beta. First I noticed that the KEYS file is missing from the tar file. Second perchild doesn't compile, but see attached mpm_perchild.patch for the fix ;) It basically does a int num_sockets and add the POD definition and static. It doesn't work then though.... at least it works unless I specify the following things: 8<---------------------------- ChildperUserID 33 33 1 ChildperUserID 1004 1004 2 ---------------------------->8 Numberic... otherwise it will b*tch And per vhost: 8<-------------------- AssignUserID 1004 1004 -------------------->8 One vhost is using 1004 (wwwics) user, the others use the 33 (www-data) user which is the default. It does start up nicely and I think it's accepting the connection at the right client, this shows up as 'top' shows the process taking the rest of the cputime and it does have the correct user I picked for that vhost. But where/what it's cycling at, dunno yet ;) Also a nice error seen in my logs while fooling around with the above settings: [Thu Feb 14 14:39:57 2002] [alert] (2)No such file or directory: getpwuid: couldn't determine user name from uid 4294967295, you probably need to modify the User directive Aka uid == 0xFFFFFFFF == -1 (32bits). Firing up my apache now makes: 1x apache2 running as root 22x "" "" "" www-data (uid=33) 14x "" "" "" wwwics (uid=1004) www-data is also the user used in the "User" option. Perchild config: <IfModule perchild.c> NumServers 5 StartThreads 5 MinSpareThreads 5 MaxSpareThreads 10 MaxThreadsPerChild 20 MaxRequestsPerChild 0 </IfModule> Running it without the AssignUserID and ChildperUserID settings gives me 38x apache2 running as www-data ;) The php/cgi-script thing was caused because of a missing mod_cgid by the way ;) Greets, Jeroen
diff -u -r -N httpd-2.0.32/server/mpm/perchild/mpm.h ../2.0.32-perchild/build-tree/httpd-2.0.32/server/mpm/perchild/mpm.h --- httpd-2.0.32/server/mpm/perchild/mpm.h Wed Dec 19 18:50:38 2001 +++ ../2.0.32-perchild/build-tree/httpd-2.0.32/server/mpm/perchild/mpm.h Thu +Feb 14 13:43:07 2002 @@ -77,6 +77,7 @@ #define AP_MPM_WANT_SET_COREDUMPDIR #define AP_MPM_WANT_SET_ACCEPT_LOCK_MECH +#define AP_MPM_USES_POD 1 #define MPM_SYNC_CHILD_TABLE() #define MPM_CHILD_PID(i) (ap_scoreboard_image->parent[i].pid) #define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0) diff -u -r -N httpd-2.0.32/server/mpm/perchild/perchild.c ../2.0.32-perchild/build-tree/httpd-2.0.32/server/mpm/perchild/perchild.c --- httpd-2.0.32/server/mpm/perchild/perchild.c Tue Feb 5 23:18:49 2002 +++ ../2.0.32-perchild/build-tree/httpd-2.0.32/server/mpm/perchild/perchild.c Thu +Feb 14 13:42:30 2002 @@ -78,7 +78,7 @@ #endif #define CORE_PRIVATE - + #include "ap_config.h" #include "httpd.h" #include "http_main.h" @@ -107,6 +107,9 @@ #include <sys/processor.h> /* for bindprocessor() */ #endif +#include "ap_mmn.h" + + /* * Define some magic numbers that we use for the state of the incomming * request. These must be < 0 so they don't collide with a file descriptor. @@ -175,6 +178,8 @@ static int num_listenfds = 0; static apr_socket_t **listenfds; static jmp_buf jmpbuffer; +static ap_pod_t *pod; + struct child_info_t { uid_t uid; @@ -1429,6 +1434,7 @@ static int perchild_open_logs(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) { apr_status_t rv; + int num_listensocks; pconf = p; ap_server_conf = s;