Страница 1 из 1

Apache + php + suEXEC

Добавлено: 2006-11-07 20:52:18
Данила
Вставил в /etc/make.conf:

(пути и т.д я заменял на свои значения, сдесь привожу данные из статьи)

Система FreeBSD 5.4 RELEASE . PHP установлен как модуль.

Код: Выделить всё


# Директория где лежат порты
PORTSDIR?=      /usr/ports

# APACHE
.if ${.CURDIR} == ${PORTSDIR}/www/apache13
# Для запуска CGI-скриптов от gid и uid пользователя, а не WEB-сервера
WITH_APACHE_SUEXEC=yes
# Где будет работать suexec (ещё будет в userdir)
APACHE_SUEXEC_DOCROOT=/usr/local/hosting
# Пользовательские директории, в которых будет работать suexec
APACHE_SUEXEC_USERDIR="/usr/local/hosting/*/cgi-bin"
# Настройки производительности (без комментов - объяснений толковых не нашёл,
# а может торопился и плохо искал...)
APACHE_SUEXEC_LOG=/usr/local/var/log/httpd-suexec.log
APACHE_HARD_SERVER_LIMIT=yes
WITH_APACHE_PERF_TUNING=yes
APACHE_HARD_SERVER_LIMIT=1024
.endif
Потом

Код: Выделить всё

>cd /usr/ports/www/apache13
/usr/ports/www/apache13/>make deinstall clean
/usr/ports/www/apache13/>make install clean

Вставил это в /etc/login.conf:

Код: Выделить всё

webuser:\
        :copyright=/etc/COPYRIGHT:\
        :welcome=/etc/motd:\
        :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,EDITOR=ee:\
        :path=/bin /usr/bin /usr/local/bin:\
        :manpath=/usr/share/man /usr/local/man:\
        :nologin=/sbin/nologin:\
        :cputime=5m:\
        :datasize=512M:\
        :stacksize=4M:\
        :memorylocked=64M:\
        :memoryuse=256M:\
        :filesize=512M:\
        :coredumpsize=0:\
        :openfiles=1024:\
        :maxproc=64:\
        :sbsize=unlimited:\
        :priority=20:\
        :requirehome:\
        :umask=026:\
        :tc=default:
>cap_mkdb -v /etc/login.conf
cap_mkdb: 9 capability records

Ребутнул апачь, потом вообще ребутнул сервер. Но апачь так и остался nobody. Что делать. Мне ответили что надо занести его в эту группу, но увы, я не знаю как. Подскажите плз. (Юзеры создаются панелью управления, так что на создание их повлиять ни как не получится.)

Добавлено: 2006-11-07 21:01:23
Alex Keda
шелл есть?

Код: Выделить всё

csh
setenv EDITOR ee
vipw
класс пользователя - это 5-e поле из разделённых запятыми (обычно - пустое, эквивалентно - default). т.е.:

Код: Выделить всё

nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin
1. - nobody - имя
2. * - пароль (его отсутствие - т.к. шифрованный пароль никогда не совпадёт со звёздочкой)
3. 65534 - UID (уникальный идентификатор пользователя)
4. 65534 - GID (уник. ид. группы пользователя)
5. пустое поле. это и есть класс логина. сюда вписываешь webuser

Добавлено: 2006-11-07 21:01:55
Alex Keda
я вот непонял - зачем апач ограничивать, надо же пользователей...

Добавлено: 2006-11-07 21:25:17
Данила
Вы посоветовали.... вероятно я не так понял. Мне нужно сделать так чтобы я видел кто грузит сервер. То есть элементарно командой top. Этого и пытаюсь добиться. Как сделать в этом случае?

p.s Кстати, клас default - это клас пользователей по умолчанию? То есть если класс пользователя не указан, то применяются настройки класса default?

Добавлено: 2006-11-07 22:00:58
Alex Keda
про P.S. - да.
=========
про top - апач не будет выполняться от того пользователя, которому принадлежит сайт.
по крайней мере, я не знаю таких штатных средств. вариант - php - как cgi и описан в статье.. будет на 10-15% медленней работать. в остально - всё также, тока настройки стали гибче.

Добавлено: 2006-11-07 22:46:21
Данила
А про первое? Объясните что не так плз, у меня серъезные траблы по этому поводу. Хотелось бы выслушать профи.

Кстати ваш сайт мне и так очень сильно помог. Хорошо пишите, интересно и в тему.

Добавлено: 2006-11-07 23:44:07
Alex Keda
я вот непойму чего ты хочешь в итоге добиться.
ибо если тебя правильно понимаю - на твои вопросы уже ответили неоднокртано.
либо понимаю неверно

Добавлено: 2006-11-08 0:08:01
Данила
Я хочу узнать, как сделать так, чтобы было видно кто грузит сервер. Я настроил suexec как написано было в статье, но пхп все равно nobody. Вот и хочу я узнать, как заставить пхп выполняться от имени пользователя который их запустил, чтобы я видел , кто создает нагрузку на сервер.

Как заставить пхп? Что нужно сделать чтобы он работал от имени пользователя запустившего скрипт. Возможно вы подумаете "как все запущено", но я не знаю как с пхп модуля к апачу перейти на пхп как CGI. Компилировал пхп с опциями CLI, Module, CGI. Так что по идеи немного поправить надо

Добавлено: 2006-11-08 0:14:57
Alex Keda
дык... в статье же описано...
модуль из конфига апача убираешь, и настриваешь виртуалхосты по примеру...

Добавлено: 2006-11-08 17:20:20
Данила
У меня тогда выдает

Код: Выделить всё

Internal Server Error 500.
Вот типичный виртуал хост. Вот конфиг: _http://onepage.ru/httpd.conf

Код: Выделить всё

<VirtualHost 72.232.233.2>
ServerAlias welcam.onepage.ru
ServerAdmin webmaster@welcam.onepage.ru
DocumentRoot /home/ka73ebu/public_html
BytesLog domlogs/welcam.onepage.ru-bytes_log
User ka73ebu
Group ka73ebu
<IfModule mod_php4.c>
php_admin_value open_basedir "/home/ka73ebu/:/usr/lib/php:/usr/local/lib/php:/tmp"
</IfModule>
<IfModule mod_php5.c>
php_admin_value open_basedir "/home/ka73ebu/:/usr/lib/php:/usr/local/lib/php:/tmp"
</IfModule>
ServerName http://www.welcam.onepage.ru
ServerAlias spb01.net.ru http://www.spb01.net.ru
ServerAlias portal-spb.pp.ru http://www.portal-spb.pp.ru
ServerAlias portal-spb.net.ru http://www.portal-spb.net.ru
ScriptAlias /cgi-bin/ /home/ka73ebu/public_html/cgi-bin/

User ka73ebu
Group ka73ebu
TransferLog /usr/local/apache/domlogs/welcam.onepage.ru
</VirtualHost>

Добавлено: 2006-11-08 18:57:52
Alex Keda
в логах что?

Добавлено: 2006-11-08 21:03:21
Данила
Какаято байда типа "файл /usr/bin/php/index.php not found". А что касается ошибки 500 то даже хз, в логах не было записи о ней

Добавлено: 2006-11-08 21:47:44
Alex Keda
ДЫК, а бииарник php где?
============
чё-то не как у меня сделал. php-cgi надо было в cgi-bin rkfcnm

Добавлено: 2006-11-08 22:01:46
Данила
Вроде так же. Бинарник там и есть.

php-cgi надо было в cgi-bin класть - а какая разница? (это не я клал, а панел ьпо умолчанию).

p.s еси я собираю пхп из портов вместе c suEXEC то также возникает ошибка 500. Ума не приложу в чем дело

Добавлено: 2006-11-08 22:31:01
Alex Keda
в логах всё написнао...

Добавлено: 2006-11-09 2:19:08
Данила
_http://onepage.ru/error_log.txt - вот лог. Эксперементировал токо с одним сайтом - /home/codingcl/public_html/

Добавлено: 2006-11-09 12:00:26
Alex Keda
а ты не хочешь сделать как у меня? т.е. бинарники разложить как положено?

Добавлено: 2006-11-09 20:24:23
Данила
Вопрос уже решен. Спасибо за помощь

Добавлено: 2006-11-10 0:10:22
Alex Keda
ну так поделись решенеим.
интересно же..

Добавлено: 2006-11-10 19:15:48
Данила
Проблема была в правах на файлы. httpd.conf - в нем я только закомментировал подключение модуля пхп.

Ну а дальше

chown -Rv danil:nobody /home/danil/public_html