CentOS6 安装以及配置apache+php多虚拟主机多用户

安装apache


apache的安装最应该发挥CentOS的yum的优势了,废话少说,直接yum安排

yum install httpd -y


配置apache


首先,我们先设置httpd自动启动

chkconfig httpd on

去掉那个我们不需要的欢迎页

vim /etc/httpd/conf.d/welcome.conf

注释掉这一行

#ErrorDocument 403 /error/noindex.html

保存后,启动服务就能看到403Forbidden了,说明我们还没有网站首页

Image

编辑apache的配置文件

vim /etc/httpd/conf/httpd.conf

以下列出最常用的配置项

Listen 80 #监听80端口
LoadModule xxxxx #加载某路径的模块,apache已经加载了很多需要用到的模块
Include xxxxx #引用某路径的配置文件,可以简化主配置文件的长度
User apache #指定运行的用户
Group apache #指定组
ServerAdmin root@localhost #管理员邮箱,可以不用修改
ServerName www.example.com:80 #服务器名,如果设置虚拟主机,设置为 你的IP:80
DirectoryIndex index.html index.html.var #主页路径
NameVirtualHost *:80 #指定某IP某端口可以用于虚拟主机的配置

注意:一旦开启了NameVirtualHost,apache的主网站的配置就失效了。

每个虚拟主机的配置项如下:

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com #同上
    DocumentRoot /www/docs/dummy-host.example.com #主目录
    ServerName dummy-host.example.com #服务器名,这里可以设置IP或域名,用于区分不同主机
    ErrorLog logs/dummy-host.example.com-error_log #错误日志
    CustomLog logs/dummy-host.example.com-access_log common #访问日志
</VirtualHost>

如果还需要主网站,你可以用你的IP填在VirtualHost的ServerName上

但是,此时的配置,每个虚拟主机进程都会以相同的身份(apache:apache)运行,如果启用了php,这将能够访问旁站!

我们必须安装一个httpd模块mpm,实现不同虚拟主机进程以不同身份运行

安装epel


还是直接yum安排

yum install epel-release -y

安装了epel之后 ,可以在下一步顺利安装mpm模块


安装与配置mpm-itk


安装mpm-itk:

yum install httpd-itk -y

配置apache,加载itk

vim /etc/sysconfig/httpd

在第10行添加

HTTPD=/usr/sbin/httpd.itk

保存,然后重启apache服务


安装php


同理,php也是直接yum安排

yum install php -y

同时,php还有很多拓展,以下拓展也可以使用yum安装

php-mysql php连接mysql数据库的拓展

php-gd 图形处理拓展

php-mbstring 多字节字符串拓展

php-xml xml解析拓展


配置php


安装完php之后,如果我们还配置了itk,我们会发现php文件还不会被解析,因为默认加载的是

HTTPD=/usr/sbin/httpd.worker

而我们加载了

HTTPD=/usr/sbin/httpd.itk

在conf.d/php.conf中

httpd.worker加载php的是

<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>

如果需要httpd.itk加载php,需要增加

<IfModule itk.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>


保存退出后,我们发现php文件又可以正常解析了


虚拟主机安全配置


保证虚拟主机的安全,就要从不同主机不同用户开始,现在我们已经可以使用mpm-itk来实现了。

首先,我们新建一个虚拟主机用户

useradd test -g apache -s /sbin/nologin

设置这个用户的密码

passwd test

然后,创建日志目录和web目录

进入用户主目录

cd /home/test

创建两个目录

mkdir htdocs
mkdir logs

然后,修改所有者和权限

由于我们使用root添加了两个目录,我们需要先设置所有者

进入home目录

cd /home

设置所有者

chown -R test:apache test

为了防止主目录下的两个目录被误删

chmod -w test

进入用户主目录

cd test

坚持最小权限原则,去掉两个子目录对于除test以外所有用户的权限,并且去掉日志目录的可写权限

chmod 700 htdocs
chmod 500 logs

最后,修改配置文件,指派用户

vim /etc/httpd/conf/httpd.conf

在VirtualHost标签里面的最后一行添加

AssignUserId test apache

测试用户权限

在web目录下新建一个php

<?php
system("whoami");
?>

浏览器访问为test,证明运行用户为test


关于php.ini的安全就暂时不赘述了,有时间继续更新!

版权所有:《mntm博客》 => 《CentOS6 安装以及配置apache+php多虚拟主机多用户
本文地址:http://www.mntm520.com/post/46
除非注明,文章均为 《mntm博客》 原创,欢迎转载!转载请注明本文地址,谢谢。

暧昧贴

发表评论

    微笑 大笑 拽 大哭 奸笑 流汗 喷血 生气 囧 不爽 晕 示爱 卖萌 吃惊 迷离 爱你 吓死了 呵呵