CentOS配置apache mod_php php-fpm

先创建网站的根目录,作为测试,把apache默认的目录文件复制过来

 cp -r /var/www /home/www

配置apache
修改安全设置,让selinux允许apache网站目录设置在home里,如果网站目录不放在home里就不用设置了

setsebool -P httpd_enable_homedirs on

-P 参数是把设置写入配置文档,以后将为修改后状态运行
可以使用 getsebool 命令来获取当前设置状态

getsebool httpd_enable_homedirs

可以用 getsebool -a |grep httpd 命令查看更多规则,进行修改

编辑apache配置文件 /etc/httpd/conf/httpd.conf

修改网站根目录
将     DocumentRoot “/var/www/html”
改为  DocumentRoot “/home/www/html”

将     <Directory “/var/www/html”>
改为  <Directory “/home/www/html”>

在往下几行
将     AllowOverride None
改为  AllowOverride All

在文件的最后加上
Include vhost.d/*.conf

用来放VirtualHost的配置文件
保存

创建vhost.d文件夹

mkdir /etc/httpd/vhost.d

在网站目录里创建一个index.php文件,添加内容

<?php
phpinfo();

启动apache

service httpd start

访问index.php页面
出现 You don’t have permission to access /index.php
on this server. 的错误
查看网站目录的权限和安全性文本设置

cd /home/www
ll -Z

可以看到,安全性文本类型为home_root_t (这里是用root用户登录,如果用其他用户会是相应的类型),修改安全性文本类型

chcon -R -t httpd_sys_content_t /home/www/*

再次访问index.php页面
查看php信息,在Server API里可以看到apache是以Apache 2.0 Handler模式运行

但是,在文件写入还有问题,在index.php中加入 file_put_contents(‘test.txt’,date(‘Y-m-d H:i:s’));
测试出现 failed to open stream: Permission denied 的错误
修改网站根目录的所有用户

chown -R apache:root /home/www/html

在次运行,OK,目录下生成了test.txt文件

接下来是另一种配置,使用php-fpm来运行php

因为已经装过mod_fastcgi了,可以在/etc/http/conf.d/里找到fastcgi.conf和php.conf文件
复制一个配置文件,并把其他的改名字,不给加载

cd /etc/httpd/conf.d/
cp fastcgi.conf php-fpm.conf
mv php.conf php.conf.disable
mv fastcgi.conf fastcgi.conf.disable

编辑php-fpm.conf文件
修改

FastCgiWrapper On

FastCgiWrapper Off

在最后添加下面设置

<IfModule mod_fastcgi.c>
    ScriptAlias /php-fpm.fcgi /usr/sbin/php-fpm
    FastCgiExternalServer /usr/sbin/php-fpm -host 127.0.0.1:9000
#    AddType application/x-httpd-php .php

    DirectoryIndex index.php index.html index.shtml index.cgi
    AddHandler php-fastcgi .php
    Action php-fastcgi /php-fpm.fcgi

    <Directory /usr/sbin>
      Options ExecCGI FollowSymLinks
      SetHandler fastcgi-script
      Order allow,deny
      Allow from all
    </Directory>

</IfModule>

重启apache

service httpd restart

启动php-fpm

service php-fpm start

再次访问index.php,出现报500错误
原因是apache被selinux限制网络连接,输入下面命令开启

setsebool -P httpd_can_network_connect on

之后再访问就正常了,可以看到Server API是FPM/FastCGI

扩展参考
[1] linux.vbird.org/linux_basic/0440processcontrol.php#selinux
[2] wiki.centos.org/HowTos/SELinux

anyShare分享到:

发表评论

邮箱地址不会被公开。 必填项已用*标注