проблема следующая: когда пользователь заливает файлик через WEB интерфейс CMS (скажем Joomla), этому файлу присваивается владелец apache
-rw-rw-r— 1 apache apache 1003158 Apr 4 14:10 001.jpg
Сначала мы создаем пользователя. RPMS так как root является плохой идеей.
cd
wget http://www.oldrpm.org/hintskinks/buildtree/RPM-build-tree.txt
chmod 755 RPM-build-tree.txt
./RPM-build-tree.txt
Теперь создаем папку buiding и скачиваем с CentOS 5 apache2 SRPM.
mkdir /build
mkdir /build/httpd-itk
cd /build/httpd-itk
wget http://isoredirect.centos.org/centos/5/os/SRPMS/httpd-2.2.3-11.el5_1.centos.3.src.rpm
rpmbuild --rebuild httpd-2.2.3-11.el5_1.centos.3.src.rpm
Если нет rpmbuild
то
yum install rpm-build
Еще возможно понадобятся доп. пакеты…
cp /rpmbuild/SPECS/httpd.spec httpd-itk.spec
cd /rpmbuild/SOURCES
wget http://mpm-itk.sesse.net/apache2.2-mpm-itk-20090414-00.patch
nano apache2.2-mpm-itk-200790414-00.patch
в apache2.2-mpm-itk-20090414-00.patch
ищем строчку
+#define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0)
вставляем после нее
+#define MPM_VALID_PID(p) (getpgid(p) == getpgrp())
cd ~/build/httpd
rpmbuild -ba httpd-itk.spec
Если все пойдет хорошо и без ошибок, в папке /rpmbuild/RPMS появятся файлы RPMS-ITK MPM.
su
cd /home/userwebuildrpmsas/rpmbuild/RPMS
rpm -U httpd-2.2.3-11.itk.3.i386.rpm mod_ssl-2.2.3-11.itk.3.i386.rpm httpd-devel-2.2.3-11.itk.3.i386.rpm httpd-manual-2.2.3-11.itk.3.i386.rpm
Теперь проверка, что MPM-ITK установлена.
httpd.itk -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
редактируем httpd.conf
# itk modules
<IfModule itk.c>
AssignUserID apache apache
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
<IfModule itk.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
редактируем /etc/sysconfig/httpd и вносим запись
HTTPD=/usr/sbin/httpd.itk
и рестарт апача
/etc/init.d/httpd restart
или
/etc/rc.d/init.d/httpd restart
а вот и ошибки…
(98)Address already in use: make_sock could not bind to address 0.0.0.0:80
или
(98)Address already in use: make_sock could not bind to address 0.0.0.0:8443
netstat -tulpn| grep :80
killall -9 httpd
и рестарт апача
/etc/init.d/httpd restart
или
/etc/rc.d/init.d/httpd restart