2013-11-11 2 views
5

Мне удалось сделать mod_fastcgi работу с fpm, что позволяет мне настроить группу пользователей: запуск сценариев через определение пула fpm. Однако аналогичной альтернативы, например, скрипту python, выполняемому через mod_fastcgi, нет, поэтому я пытаюсь научиться использовать suexec для запуска любого скрипта через mod_fastcgi с пользователем: group i choose.Не удалось выполнить suexec с mod_fastcgi

Я начинаю с этой рабочей конфигурации:

#/etc/apache2/sites-available/test1 
<VirtualHost *:80> 
    ServerName test1.slothcompany.net 
    DocumentRoot /var/www/test1 

    LogLevel Debug 
    ErrorLog /var/www/test1/error.log 

    <Directory /var/www/test1/> 
     Options Indexes Includes FollowSymLinks ExecCGI 
     AllowOverride All 
     DirectoryIndex index.php 
     AddHandler php5-fastcgi .php 
     Action php5-fastcgi /php5.fcgi 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

#/var/www/test1/php5.fcgi 
#!/bin/bash 
PHPRC="/var/www/test1/php.ini" 
PHP_FCGI_CHILDREN=5 
export PHPRC 
export PHP_FCGI_CHILDREN 
exec /usr/bin/php5-cgi 

Я положил phpInfo() внутри /var/www/test1/index.php, которая показывает правильный путь php.ini.

Теперь, чтобы активировать suexec я:

  • Установленная apache2-suexec: sudo apt-get install apache2-suexec
  • Активированный mod_suexec: sudo a2enmod suexec
  • измененных файлов разрешений: sudo chown -R michele:michele /var/www/test1
  • добавления этой строки в конфигурацию ВХост: SuexecUserGroup michele michele
  • Реактивировано si te и restarted apache: sudo a2dissite test1 && sudo a2ensite test1 && sudo service apache2 restart

Пользователь: группа michele:michele существует в системе. При работе test1.slothcompany.net я вижу вывод phpInfo() точно так же, как и раньше, и echo exec('whoami'); печатает www-data вместо michele.

sudo /usr/lib/apache2/suexec -V сообщает, что файл журнала должен быть в /var/log/apache2/suexec.log, но такого файла нет. Затем я знаю, что apache должен зарегистрировать файл error.log активацию оболочки suexec в качестве уведомления, но в файле error.log такого уведомления не найдено. Итак, я подозреваю, что по какой-то причине suexec не начинается вообще.

Я прочитал here список проверок Suexec делает , чтобы решить, если вызов успешен, но я не знаю, как проверить, что результаты этих проверок are..it говорит, что они должны быть записаны в журнале Suexec файл, но этот файл никогда не создается, как кажется.

Итак, что я делаю неправильно?

Спасибо вам большое.

ответ

5

Мне, наконец, удалось заставить его работать, с помощью сообщения this. В моей первой конфигурации возникли две большие проблемы: во-первых, я не разрешал suexec работать с fastcgi (для этого требуется отредактировать файл конфигурации fastcgi.conf); во-вторых, в моем первом виртуальном хосте я вообще не использовал fastcgi! Я получил это, когда понял, что система работает так же после отключения fastcgi.

Однако эти последние шаги, которые работали для меня (я пытался их внутри виртуальной машины Debian, созданный только для этого):

  1. Установка пакетов (после добавления non-free в /etc/apt/sources.list для libapache2-mod-fastcgi):

    sudo apt-get install apache2 libapache2-mod-fastcgi apache2-suexec php5-cgi 
    
  2. Добавить глобальную конфигурацию FastCGI:

    sudo nano /etc/apache2/conf.d/fastcgi 
    
    # /etc/apache2/conf.d/fastcgi 
    FastCGIConfig -killInterval 60 -maxClassProcesses 1 -maxProcesses 50 -minProcesses 0 -startDelay 5 
    
  3. Включить Suexec конфигурацию внутри FastCGI (убрать # от FastCgiWrapper линии):

    sudo a2dismod fastcgi 
    sudo nano /etc/apache2/mods-available/fastcgi.conf 
    
    # /etc/apache2/mods-available/fastcgi.conf 
    <IfModule mod_fastcgi.c> 
        AddHandler fastcgi-script .fcgi 
        FastCgiWrapper /usr/lib/apache2/suexec 
        FastCgiIpcDir /var/lib/apache2/fastcgi 
    </IfModule> 
    
  4. Включить APACHE модули:

    sudo a2enmod fastcgi suexec actions 
    
  5. Создание тестовых файлов сайта:

    sudo mkdir -p /var/www/vhosts/test 
    cd /var/www/vhosts/test 
    sudo mkdir cgi-bin etc httpdocs logs 
    sudo nano httpdocs/index.php 
    
    # /var/www/vhosts/test/httpdocs/index.php 
    <?php 
    echo exec('whoami'); 
    phpInfo(); 
    
    sudo nano cgi-bin/php5.fcgi 
    
    # /var/www/vhosts/test/cgi-bin/php5.fcgi 
    #!/bin/bash 
    export PHPRC=/var/www/vhosts/test/etc 
    export PHP_FCGI_CHILDREN=5 
    exec /usr/bin/php5-cgi 
    
    sudo chmod +x cgi-bin/php5.fcgi 
    sudo cp /etc/php5/cgi/php.ini etc/ 
    sudo chown -R michele:michele . 
    
  6. Создание виртуального хоста apache:

    sudo nano /etc/apache2/sites-available/test 
    
    # /etc/apache2/sites-available/test 
    <VirtualHost *:80> 
        ServerAdmin [email protected] 
        ServerName test.slothcompany.net 
    
        LogLevel notice 
        ErrorLog /var/www/vhosts/test/logs/error.log 
        CustomLog /var/www/vhosts/test/logs/access.log combined 
    
        ScriptAlias /php5.fcgi /var/www/vhosts/test/cgi-bin/php5.fcgi 
        FastCgiServer /var/www/vhosts/test/cgi-bin/php5.fcgi -processes 1 -user michele -group michele -idle-timeout 310 -flush 
        SuexecUserGroup michele michele 
    
        DocumentRoot /var/www/vhosts/test/httpdocs 
        <Directory /var/www/vhosts/test/httpdocs/> 
         Options FollowSymLinks ExecCGI 
         AllowOverride All 
         Action php5.fcgi /php5.fcgi 
         AddHandler php5.fcgi .php 
         Order allow,deny 
         Allow from all 
        </Directory> 
    </VirtualHost> 
    
    sudo a2ensite test 
    
  7. Restart апач

    sudo service apache2 restart 
    
+1

Спасибо за все эти детали –

+0

Добро пожаловать :) – swahnee

Смежные вопросы