这几天在看LAMP,都编译好了,今天打算做几个虚拟主机,顺便记录下问题,php7是以php-fpm的方式与apache
连接的,php7有好多新特性 这里就不一一说了。。。
这里只是简单的搭建了个phpMyadmin 本来是在主机上的,后来挪到了虚拟机上
首先在apache的配置文件上开启虚拟主机功能,然后如下图即可

apache2.4编译安装,搭建虚拟主机日志分析及访问控制

这就是一个完整的配置。。。
耗费时间最多的是 <Directory>这个选项,来定义目录权限的。。。试了几次都不行
网上说的都的是这样的

<Directory /var/www/html>
Options -Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
而我的只能使用allow from all定义

 下面是编译apache时候的选项....
 ./configure --prefix=/usr/local/apache2.4 --enable-ssl --enable-modules=most --enable-mods-shared=all --with-
 zlib --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-cgi --enable-rewrite --enable-mpms-
 shared=all --with-mpm=event --enable-so --with-included-apr

make出错的话 直接make clean以后直接删掉解压包 彻底些

编译安装的时候如果不加上 --with-incuded-apr的话会一直报错 很奇怪的错误 加上后面一句的时候就会报如下的错误
configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and
apr-util packages to ./srclib/.
按照网上的方法解决
cp -rf apr-1.5.2 /usr/local/src/httpd-2.4.18/srclib/apr   //将版本号去掉,下同
cp -rf apr-util-1.5.4 /usr/local/src/httpd-2.4.18/srclib/apr-util

apache2.4编译安装,搭建虚拟主机日志分析及访问控制

apache的日志功能
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%h:客户端的ip地址
%l  %u  这两个不太重要
%t: 时间  是按照英文外国显示的时间
%r:First line of request 请求报文的信息
%>:响应状态码
%b:响应报文的大小,单位是字节,不包括响应报文首部
$(Referer);请求报文中referer首部的值,也就是访问当前资源的入口,是从哪个页面跳转过来的  - 表示自己的网站首部过来的..
$(User-Agent)发出请求用到的应用程序 请求报文当中User-Agent的值

(2)、网站别名:把一个URL映射到别的路径之下

在配置文件中有一个DocumenRoot  这个是指定网站根目录的
还可以自己指定一个Alias /URL/ "/PATH/TO/SOMEDIR"
例如:Alias /bbs/     "forum/htdocs"
定义以后就和上面的DocumentRoot 没啥关系了
在Alias配置段中随便定义就行,定义以后就会指定到新的路径中了
(3)、设置默认字符集
AddDefaultCharser  UTF-8  国际的
(4)、基于用户的访问控制

用户认证
(1)、定义安全域
<Directory "">
optiones none
allowoverride none
authtpe basic
authname "sui bian ding yi"
authuserfile "存放用户密码的路径"
require valid-user 那些用户可以访问 可以是user1 user2 或认证用户 valid-user

</Directiory>
apache2.4编译安装,搭建虚拟主机日志分析及访问控制

基于ip地址的认证
apache2.4编译安装,搭建虚拟主机日志分析及访问控制
最好是先删除默认welcome的欢迎页面 要不测试可能会用问题
然后使用htpasswd来创建用户和密码

虚拟主机

可以实时查看apache的状态页面
只需要把
apache2.4编译安装,搭建虚拟主机日志分析及访问控制

其中下面的需要主机设定
访问 http://localhost/server-status
http://localhost/server-status?refresh=N  代表N秒钟刷新一次
    在此一定要设置用户权限,不能让所有人访问,但是也不能基于IP的访问权限,可以设置用户名和密码的权限,这样在外网也可以查看
<Location /server-status>
SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from all
Options None
Allowoverride None
authtype basic
authuserfile "/etc/httpd/conf/.thpasswd"
authname "suibiandingyi"
require valid-user
</Location>