http解析php
httpd的主配置文件/usr/local/apache2.4/conf/httpd.conf
编辑http主配置文件
#vim /usr/local/apache2.4/conf/httpd.conf
搜索ServerName www.example.com:80 并取消注释
搜索AddType application/x-gzip .gz .tgz 在其下面添加AddType application/x-httpd-php .php
搜索DirectoryIndex index.html 并在其后添加index.php
<Directory />
AllowOverride none
Require all denied 将denied改为granted
</Directory>
进行测试 # /usr/local/apache2.4/bin/apachectl -t 显示Syntax OK即为成功
可以用 # /usr/local/apache2.4/bin/apachectl start 启动httpd
#netstat -lnp| grep httpd用于查看httpd是否启动
使用curl 命令做一个简单测试
#curl localhost
下面开始进行测试是否可用正确解析php 在apache2.4子目录htdocs下创建test.php用于测试
#vim/usr/local/apache2.4/htdocs/test
使用curl localhost/test.php
默认虚拟主机
虚拟主机(共享主机,又称虚拟服务器)是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术。虚拟 主机之间完全独立,并可由用户自行管理,虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。
httpd的主配置文件在/usr/local/apache2.4/conf/httpd.conf
编辑http主配置文件搜索httpd-vhosts 把该项取消注释Include conf/extra/httpd-vhosts.conf
然后编辑/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost*:80>
ServerAdminwebmaster@dummy-host.example.com
DocumentRoot"/usr/local/apache2.4/docs/abc.com"
ServerNameabc.com
ServerAliaswww.abc.comaaa.com
ErrorLog"logs/abc.com-error_log"
CustomLog"logs/abc.com-access_log"common
</VirtualHost>
<VirtualHost*:80>
DocumentRoot"/usr/local/apache2.4/docs/111.com"
ServerName111.com
ErrorLog"logs/111.com-error_log"
CustomLog"logs/111.com-access_log"common
</VirtualHost>
编辑完配置文件以后 使用绝对路径创建abc.com 和 111.com 子目录下创建index.html
完成以后使用-t检查 显示Syntax OK即为成功 使用graceful重新读取配置
使用curl命令进行验证
#curl-xlocalhost:80www.abc.com
abc.com
#curl-xlocalhost:80www.aaa.com
abc.com
#curl-xlocalhost:80111.com
111.com
其中
//ServerAdmin指定管理员邮箱,
//DocumentRoot为该虚拟主机站点的根目录,
//ServaerName为网站的域名
//ServerAlias为网站的第二域名
//ErrorLog为站点的错误日志
//CustomLog为站点的访问日志
用户认证
用户认证用来对某些目录中的网页进行访问控制,当用户访问这些页面的时
候需要输入用户名和密码进行认证。
编辑/httpd-vhosts.conf
<VirtualHost*:80>
ServerAdminwebmaster@dummy-host.example.com
DocumentRoot"/usr/local/apache2.4/docs/abc.com"
ServerNameabc.com
ServerAliaswww.abc.comaaa.com
<Directory/usr/local/apache2.4/docs/abc.com>
AllowOverrideAuthConfig
AuthName"abc.comuserauth"
AuthTypeBasic
AuthUserFile/usr/local/apache2.4/docs/.htpasswd
requirevalid-user
</Directory>
ErrorLog"logs/abc.com-error_log"
CustomLog"logs/abc.com-access_log"common
</VirtualHost>
配置完成以后使用-t命令验证 -graceful重新读取配置
#/usr/local/apache2.4/bin/htpasswd -cm /usr/local/apache2.4/docs/.htpasswd lzh
//htpasswd为创建用户的工具,-c为create
//-m为指定密码加密的方式为MD5
.htpasswd为密码文件
lzh为创建的用户
创建完成以后使用curl命令验证 curl -xlocalhost:80-u lzh:123 abc.com -I
也可在windows上验证C:\Windows\System32\drivers\etc\hosts。打开文件在最后一行输入:你的IPwww.abc.com
#systemctlstopfirewalld
#setenforce0
然后,去浏览器访问www.abc.com会有弹窗出现。
域名跳转
当我们变更网站域名或者申多个域名指向一个网站的时候,这个时候我们就
会用到域名跳转。
例如:设置不是111.com开头的网站都跳转到111.com
编辑/httpd-vhosts.conf配置文件
<VirtualHost*:80>
ServerAdminwebmaster@dummy-host.example.com
DocumentRoot"/usr/local/apache2.4/docs/www.111.com"
ServerNamewww.111.com
ServerAlias111.com
<IfModulemod_rewrite.c> //-需要mod__rewrite模块
RewriteEngineon //打开rewrite功能
RewriteCond%{HTTP_HOST}!^111.com$ //定义rewrite的条件,当
主机名不是111.com时满足条件
RewriteRule^/(.*)$http://111.com/$1[R=301,L] //定义rewrite规则,
RewriteRule后面分为三个部分,第一部分为当前网址
//第二部分为要跳转的网址,第三部分是选项,需要括号括起来。
</IfModule>
ErrorLog"logs/111.com-error_log"
CustomLog"logs/111.com-access_log"common
</VirtualHost>
配置域名跳转 需要rwrite模块支持 在httpd.conf中取消注释LoadModule rewrite_module modules/mod_rewrite.so
使用绝对路径创建www.111.com/index.html 写入www.111.com
创建123.php文件
写入<?php
echo"www.111.com/123.php"
?>
使用-t、graceful命令重新读取配置
使用curl命令 #curl-xlocalhost:802111.com.cn-I 可以看到状态码为301,跳转的网址为111.com
访问日志
访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问题
日志格式的介绍,可以参考
# vi /usr/local/apache2.4/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b" common
其中,%h是来源IP,%l是远端登录名, %u是远程用户名, %t是时间,%r是请求的第一行, %>s指的是最后请求的状态, %b以CLF格式显示的除HTTP头以外传送的字节数
访问日志不记录静态文件
项目中的CSS、图片、js都是静态文件。一般会将静态文件放到一个单独的目录中,以方便管理
首先配置 httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>
在www.111.com下创建image目录 用于存放图片做测试 并上传一张照片做测试
上传完成以后 使用 curl -xlocalhost:80 www.111.com/image/linux.jpg -I查看 并观察 tail -f /usr/local/apache2.4/logs/111.com-access_log
完成以后编辑配置文件httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image- request
SetEnvIf Request_URI ".*\.css$" image- request
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" combined env=!image-request
</VirtualHost>
配置完成以后 使用-t命令查看错误 使用graceful重新读取配置
curl -xlocalhost:80 www.111.com/image/linux.jpg -I
查看日志文件 [root@localhost logs]# cat 111.com-access_log
访问日志切割
日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件。
配置httpd-vhosts.conf文件
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com- access_%Y%m%d.1og 86400" combined env=!image-request
配置完成以后用-t验证 使用greaceful重新读取即可
rotatelogs为apache的日志切割工具,-l表示以当前系统时间进行切割,logs/123.com-access_%Y%m%d.1og定义了日志的切割名称,86400以天为单位,换算成秒就是86400。