Apache 2.2 + SuExec + mod_fcgid

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Nick_mad
сержант
Сообщения: 280
Зарегистрирован: 2008-05-30 12:16:02
Откуда: Киев
Контактная информация:

Apache 2.2 + SuExec + mod_fcgid

Непрочитанное сообщение Nick_mad » 2011-02-16 10:27:12

Здравствуйте.

Вчера решил настроить php в режиме FastCGI, поробывал наскоком по стаье на сайте не получилось в режиме чистого CGI, тоже, зато получилось настроить mod_fcgid. Все заработало только мне не нравится что php.sh находится в /user/dir/public_html/cgi-bin. Мне бы его на уровень выше поднять что бы не в docroot'е. Подскажите где чего поменять простое копирование папки и перепрописание путей не помогло

suexec -V

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

 -D AP_DOC_ROOT="/usr/home"
 -D AP_GID_MIN=1000
 -D AP_HTTPD_USER="www"
 -D AP_LOG_EXEC="/var/log/httpd-suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=1000
 -D AP_USERDIR_SUFFIX="public_html"
httpd.conf

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

LoadModule fcgid_module libexec/apache22/mod_fcgid.so
<IfModule mod_fcgid.c>
    AddHandler fcgid-script .fcgi

    FcgidConnectTimeout 20
    FcgidBusyTimeout 60
    FcgidBusyScanInterval 61

    SocketPath /var/run/fcgid/sock

    FcgidMaxProcessesPerClass 100
    FcgidMaxProcesses 400

    FcgidPassHeader Authorization
    FcgidPassHeader Proxy-Authorization
    FcgidPassHeader HTTP_AUTHORIZATION


    AddHandler php-fcgi .php
    Action php-fcgi /php-fcgi/php.sh

    Action application/x-httpd-fastphp /php-fcgi/php.sh
    Action application/x-httpd-php /php-fcgi/php.sh

    AddType application/x-httpd-fastphp     .php

        <Location /php-fcgi/>
            Options ExecCGI FollowSymLinks
            SetHandler fcgid-script
        </Location>
</IfModule>
cat /usr/home/orgtest/public_html/cgi-bin/php.sh

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

#!/bin/sh
PHP_FCGI_CHILDREN=0
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/bin/php-cgis

cat /usr/local/etc/apache22/extra/httpd-vhosts.conf

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

<VirtualHost *:80>
    ServerAdmin support@faaf.org.ua
    DocumentRoot /usr/home/orgtest/public_html
    ServerName test.faaf.org.ua
    ServerAlias www.test.faaf.org.ua
    ErrorLog /usr/home/orgtest/log/httpd-error_log
    CustomLog /usr/home/orgtest/log/httpd-access_log common
    SuexecUserGroup orgtest orgtest
    Alias /php-fcgi/ /usr/home/orgtest/public_html/cgi-bin/
    ScriptAlias /cgi-bin/ "/usr/home/orgtest/public_hyml/cgi-bin/"
<Directory "/usr/home/orgtest/public_html">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>
<Directory "/usr/home/orgtest/public_html/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
</Directory>
</VirtualHost>

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
dmtr
ст. прапорщик
Сообщения: 545
Зарегистрирован: 2009-11-06 22:01:34
Откуда: с Ростова

Re: Apache 2.2 + SuExec + mod_fcgid

Непрочитанное сообщение dmtr » 2011-02-16 11:18:52

мне не нравится что php.sh находится в /user/dir/public_html/cgi-bin
вот в этой статье http://www.lissyara.su/articles/freebsd ... p_+_mysql/ описано как его защитить
Внимание! На файл php.ini ставяться флаги \`schg\` и \`sunlnk\`,
не сняв их - файл не уалить и не изменить! Цель - не позволить юзеру
менять свои настройки php.
Удаление флагов:
chflags noschg php.ini
chflags nosunlnk php.ini
Установка:
chflags schg php.ini
chflags sunlnk php.ini
(Может понадобиться на случай если надо всё-таи чё-то поменять
в дефолтовом файле. Но не забывайте вернуть флаги!)
This game has no name. It will never be the same.

Nick_mad
сержант
Сообщения: 280
Зарегистрирован: 2008-05-30 12:16:02
Откуда: Киев
Контактная информация:

Re: Apache 2.2 + SuExec + mod_fcgid

Непрочитанное сообщение Nick_mad » 2011-02-16 17:30:33

еще наткнулся на один момент если в корне сайта есть .htaccess то все ошибка 500 если его удрать то все ок. Что это может быть????

А и еще вопрос там же ограничение
Остаются ограничения, описанные в прошлой статье - 16 групп, и, соответтсвенно максимум 15 пользователей. Лечится также - в исходниках ядра правим такую строку:

host% grep NGROUPS_MAX /usr/src/sys/sys/syslimits.h

Соответсвенно сюда вписываем нужное число, и пересобираем ядро. (Обещщают с семёрки сделать чтобы менялось штатными средствами, но пока не сделали...) Как вариант - возможно включение ACL на разделе - но это замедлит рбоату с ФС (не пробовал, но по идее должно замедлять :)). Ну и всё. Можно создавать директорию для конфигов отсутствующих пока хостов, и запускать:
У меня как раз семерка можно его изменить без пересборки ядра???

Аватара пользователя
dmtr
ст. прапорщик
Сообщения: 545
Зарегистрирован: 2009-11-06 22:01:34
Откуда: с Ростова

Re: Apache 2.2 + SuExec + mod_fcgid

Непрочитанное сообщение dmtr » 2011-02-17 10:23:27

еще наткнулся на один момент если в корне сайта есть .htaccess то все ошибка 500 если его удрать то все ок. Что это может быть????
смотреть логи ошибок, анализировать содержимое .htaccess и конфига виртуалхоста, опций директорий

по второму вопросу там же
Вроде как с 7.0 должны сделать это ограничение "мягким" - можно будет его менять через sysctl. На данный момент, во всех версиях, его менять нельзя - переменная есть, но не меняется:
- если удается поменять через sysctl, то ядро пересобирать не надо
This game has no name. It will never be the same.