首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使suexec与mod_fastcgi一起工作

问无法使suexec与mod_fastcgi一起工作
EN

Stack Overflow用户
提问于 2013-11-11 19:19:48
回答 1查看 7.1K关注 0票数 6

我成功地使mod_fastcgi与fpm一起工作,这使我能够设置用户:通过fpm池定义运行脚本的组。但是,对于通过mod_fastcgi运行的python脚本,没有类似的替代方法,因此我正在尝试学习如何使用suexec来通过mod_fastcgi与我选择的用户一起运行任何脚本。

我从这个工作配置开始:

代码语言:javascript
复制
#/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 i:

  • 已安装的apache2-suexec:sudo apt-get install apache2-suexec
  • 活化mod_suexec:sudo a2enmod suexec
  • 更改文件的权限:sudo chown -R michele:michele /var/www/test1
  • 将这一行添加到vhost配置中:SuexecUserGroup michele michele
  • 重新激活站点并重新启动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应该将suexec包装器的激活作为通知登录到error.log文件中,但是在error.log中也没有找到这样的通知。因此,我怀疑由于某种原因,suexec根本没有开始。

我阅读了suexec所做的检查列表,以确定调用是否成功,但我不知道如何检查这些检查的结果,are..it说这些检查的结果应该写在suexec日志文件中,但是这个文件从来没有创建过,就像看起来的那样。

我做错什么了?

非常感谢大家。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-14 21:20:48

在这帖子的帮助下,我终于成功了。我的第一个配置有两个大问题:第一个问题是,我没有启用suexec来使用快速all (这需要编辑fastcgi.conf配置文件);第二个问题是,在我的第一个虚拟主机中,我根本没有使用requires!当我意识到这个系统在禁用disabling之后同样工作的时候,我就得到了这个结果。

但是,这些是对我有效的最后步骤(我在一个Debian虚拟机中尝试了这些步骤,该虚拟机就是为此创建的):

  1. 安装软件包(在将non-free添加到/etc/apt/sources.list for libapache2-mod-fastcgi之后): sudo apt-获取安装apache2 libriache2-mod-快速cgi apache2-suexec php5-cgi
  2. 添加全局快捷键配置: sudo nano /etc/apache2/conf.d/d/etc/apache2/conf.d.d/ FastCGIConfig -killInterval 60 -maxClassProcesses 1 -maxProcesses 50 -minProcesses 0 -startDelay 5
  3. 在快速the配置中启用suexec (从#行中删除FastCgiWrapper ): sudo a2dismod IfModule sudo nano /etc/apache2/mods-现有/快速cgi.conf#/etc/apache2/mods-现有/快速cgi.conf AddHandler快速var脚本.fcgi FastCgiWrapper /usr/lib/apache2/suexec FastCgiIpcDir /var/lib/apache2/IfModule 2
  4. 启用apache模块: sudo a2enmod fastcgi suexec动作
  5. 创建测试站点文件: sudo mkdir -p /var/www/vhost/test cd /var/www/vhost/test sudo mkdir cgi-bin等httpdocs日志sudo nano httpdocs/index.php #/var/www/vhost/test/httpdocs/index.php<?phpInfo exec('whoami');phpInfo();sudo /php5.fcgi#/var/www/vhost/test/ cgi-bin/php5.fcgi #!/bin/bash出口PHPRC=/var/www/vhost/test/etc出口PHP_FCGI_CHILDREN=5 exec /usr/bin/php5-cgi sudo chmod +x /php5.fgi sudo cp / etc/ php5 5/cgi/php.ini etc/ sudo chown -R michele:michele。
  6. 创建apache虚拟主机: sudo nano /etc/apache2/sites available/test#/etc/apache2/sites available/test ServerAdmin webmaster@slothcompany.net ServerName test.slothcompany.net LogLevel注意到ErrorLog /var/www/vhost/test/log/ CustomLog /var/www/vhost/test/log/access.log.log组合ScriptAlias /php5.fcgi /var/www/vhost/test/cgi-bin/php5.fcgi FastCgiServer /var/www/vhost/test/cgi/cgi-bin/php5.fcgi -processes 1 -user michele -group michele -空闲超时310 -flush SuexecUserGroup michele michele DocumentRoot /var/www/vhost/test/httpdocs Options FollowSymLinks ExecCGI AllowOverride All Actionphp5.fcgi /php5.fcgi AddHandler php5.fcgi .php Order,从所有sudo a2ensite测试中拒绝允许
  7. 重新启动apache sudo服务apache2重新启动
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19914130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档