centos libapache2-mod-php5,如何建立mod_fcgid Apache2中支持php5在CentOS 5.6上

如何建立mod_fcgid Apache2支持php5 在CentOS 5.6的使用:

这篇教程主要讲述如何使用php5 与mod_fcgid Apache2 CentOS 5.6. 的兼容性,让你的脚本执行你的权限,但我不敢保证这个方法对你也适用。

1 、适用一个CentOS 5.6服务器,主机server1.example.和IP地址192.168.0.100。

这一课中我要架设两个阿帕奇主机上进行指导,www.example1.comand和comwww.example2.com.来说明mod_fcgid的使用。

开始前我们确保确保SELinux被禁用,

system-config-securitylevel

关闭SELinux

setenforce 0

更改生效。

2 安装 Apache2/mod_fcgi/使用PHP5进行编写。

mod_fcgi没有的情况下,可以到在官方CentOS,但有一包的CentOS 5.倍centos.karan.orgtesting测试repository.库。我们使库如下: cd /etc/yum.repos.d/

wget http://centos.karan.org/kbsingh-CentOS-Extras.repo

接下来我们打开:/etc/yum.repos.d/kbsingh-CentOS-Extras.repo...

vi /etc/yum.repos.d/kbsingh-CentOS-Extras.repo

设置:set gpgcheck to 0和enabled to 1 在[kbs-CentOS-Testing] 的部分:

[...]

[kbs-CentOS-Testing]

name=CentOS.Karan.Org-EL$releasever - Testing

gpgcheck=0

gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt

enabled=1

baseurl=http://centos.karan.org/el$releasever/extras/testing/$basearch

然后我们就可以安装Apache2, mod_fcgid, 和PHP5。

yum install httpd mod_fcgid php-cli

如果阿帕奇已经安装支持php5 的模块,那现在就使用php5 编辑打开/etc/httpd/conf.d/php.conf...:

vi /etc/httpd/conf.d/php.conf

一切配置所需都早下面那个文件里:

PHP is an HTML-embedded scripting language which attempts to make it

# easy for developers to write dynamically generated webpages.

#

#

#  LoadModule php5_module modules/libphp5.so

#

#

#  # Use of the "ZTS" build with worker is experimental, and no shared

#  # modules are supported.

#  LoadModule php5_module modules/libphp5-zts.so

#

#

#

# Cause the PHP interpreter to handle files with a .php extension.

#

#AddHandler php5-script .php

#AddType text/html .php

#

#

# Add index.php to the list of files that will be served as directory

# indexes.

#

#DirectoryIndex index.php

#

#

# Uncomment the following line to allow PHP to pretty-print .phps

# files as PHP source code:

#

#AddType application/x-httpd-php-source .phps

然后我们创建启动环节:

chkconfig --levels 235 httpd on

/etc/init.d/httpd restart

接下来我们打开/etc/php.ini...

vi /etc/php.ini

并增加 cgi.fix_pathinfo = 1 到文件末尾: [...]

cgi.fix_pathinfo = 1

重新加载阿帕奇:

/etc/init.d/httpd reload

现在创建两个虚拟主机 www.example1.com (文档跟目录 /var/www/web1/web)和www.example2.com  (文档目录在/var/www/web2/web)我们将创建有两个虚拟主机用户和组的权限:

现在我们创建用户和组:

groupadd web1

groupadd web2

useradd -s /bin/false -d /var/www/web1 -m -g web1 web1

useradd -s /bin/false -d /var/www/web2 -m -g web2 web2

chmod 755 /var/www/web1

chmod 755 /var/www/web2

然后我们创建文档的根用户和组的页面:

mkdir -p /var/www/web1/web

chown web1:web1 /var/www/web1/web

mkdir -p /var/www/web2/web

chown web2:web2 /var/www/web2/web

我们将运行PHP使用suExec,suExec目录在root is /var/www,以下命令显示: /usr/sbin/suexec -V

root@server1 ~]# /usr/sbin/suexec -V

-D AP_DOC_ROOT="/var/www"

-D AP_GID_MIN=100

-D AP_HTTPD_USER="apache"

-D AP_LOG_EXEC="/var/log/httpd/suexec.log"

-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"

-D AP_UID_MIN=500

-D AP_USERDIR_SUFFIX="public_html"

[root@server1 ~]#

因此我们不能直接使用php5,(/usr/bin/php-cgi)因为suExec在目录之外。其中suExec不容许有符号链接,解决问题的唯一方法为创建一个每个网站的子目录/var/www,我们需创建其中的子目录,/var/www/php-fcgi-scripts, e.g. /var/www/php-fcgi-scripts/web1 和 /var/www/php-fcgi-scripts/web2.

mkdir -p /var/www/php-fcgi-scripts/web1

mkdir -p /var/www/php-fcgi-scripts/web2

vi /var/www/php-fcgi-scripts/web1/php-fcgi-starter #!/bin/sh

PHPRC=/etc/

export PHPRC

export PHP_FCGI_MAX_REQUESTS=5000

export PHP_FCGI_CHILDREN=8

exec /usr/bin/php-cgi

vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter

#!/bin/sh

PHPRC=/etc/

export PHPRC

export PHP_FCGI_MAX_REQUESTS=5000

export PHP_FCGI_CHILDREN=8

exec /usr/bin/php-cgi

这PHPRC包含的目录php.ini你只有文件位于 i.e., /etc/ translates to /etc/php.ini,PHP_FCGI_MAX_REQUESTS 多前要求一个fcgid过程停止和一个新的启动,PHP_FCGI_CHILDREN 定义php 目录启动的数目:

这php-fcgi-starter脚本 ,必须是可执行的,在他们所有网站和目录:

chmod 755 /var/www/php-fcgi-scripts/web1/php-fcgi-starter

chmod 755 /var/www/php-fcgi-scripts/web2/php-fcgi-starter

chown -R web1:web1 /var/www/php-fcgi-scripts/web1

chown -R web2:web2 /var/www/php-fcgi-scripts/web2

现在我们创建两个阿帕奇虚拟主机,www.example1.com 和/etc/httpd/conf/httpd.conf:

vi /etc/httpd/conf/httpd.conf

[...]

NameVirtualHost *:80

ServerName www.example1.com

ServerAlias example1.com

ServerAdmin webmaster@example1.com

DocumentRoot /var/www/web1/web/

SuexecUserGroup web1 web1

PHP_Fix_Pathinfo_Enable 1

Options +ExecCGI

AllowOverride All

AddHandler fcgid-script .php

FCGIWrapper /var/www/php-fcgi-scripts/web1/php-fcgi-starter .php

Order allow,deny

Allow from all

# ErrorLog /var/log/apache2/error.log

# CustomLog /var/log/apache2/access.log combined

ServerSignature Off

ServerName www.example2.com

ServerAlias example2.com

ServerAdmin webmaster@example2.com

DocumentRoot /var/www/web2/web/

SuexecUserGroup web2 web2

PHP_Fix_Pathinfo_Enable 1

Options +ExecCGI

AllowOverride All

AddHandler fcgid-script .php

FCGIWrapper /var/www/php-fcgi-scripts/web2/php-fcgi-starter .php

Order allow,deny

Allow from all

# ErrorLog /var/log/apache2/error.log

# CustomLog /var/log/apache2/access.log combined

ServerSignature Off

确认你的文件正确,

然后加载阿帕奇:

/etc/init.d/httpd reload

4 现在我们创建php5 测试文件到页面中:

vi /var/www/web1/web/info.php <?php

phpinfo();

?>

然后保存,打开浏览器,如果返回的就像我们看到的那样,那就很正确啦:

0818b9ca8b590ca3270a3433284dd417.png

5 定制php 脚本到每个web页面,

每个网站都有自己的 php.ini 文件,只有为不同的文件,来定义不同的文件名,我们定义如下:

vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter

#!/bin/sh

PHPRC=/etc/

export PHPRC

export PHP_FCGI_MAX_REQUESTS=5000

export PHP_FCGI_CHILDREN=8

exec /usr/bin/php-cgi -d magic_quotes_gpc=off

然后加载阿帕奇

/etc/init.d/httpd reload

返回的页面信息为下图,就让如我们看到的那样:

0818b9ca8b590ca3270a3433284dd417.png

7 链接:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值