目录
11.16/11.17Apache默认虚拟主机
11.18Apache用户认证
11.19/11.20域名跳转
11.21Apache访问日志
11.22访问日志不记录静态文件
11.23访问日志切割
11.24静态元素过期时间
11.16/11.17Apache默认虚拟主机
1访问web服务,本质上看(从协议上)是访问某个IP的主机上的某个端口(默认是80)。通常需要通过访问不同的域名或者端口实现对不同网站的访问(具体到服务器里就是不同目录),这个时候就需要设置虚拟主机(VirtualHost).通常分为这样3种:
基于主机
基于端口
基于IP
2 首先我们要在配置文件中打开虚拟主机这个模块 httpd-vhost,非常重要
//这里去掉下面这个#号不然的话,虚拟配置文件不会生效# Virtual hostsInclude conf/extra/httpd-vhosts.conf
3现在正式编辑虚拟主机的配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
//每个VirtualHost *:80 代表一个主机,一个主机就是一个网站,虚拟主机配置文件可以定义多个VirtualHost。在虚拟主机里有一个默认虚拟主机(第一段VirtualHost ),就是无论任何域名解析到这个IP上都会访问这个虚拟主机。当搜索所有配置段,你发现访问的域名没有在配置里面出现,那它就会默认走虚拟主机的配置。 //更改后的配置[# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf<VirtualHost *:80> DocumentRoot "/data/wwwroot/test.com" //这个为该虚拟主机站点的根目录,网站的程序就放在这个目录下面。 ServerName test.com //网站的域名,不支持写多个 ServerAlias www.test.com www.123.com//为网站的第二域名,只有alias可以写多个域名,用空格分隔。 ErrorLog "logs/test.com-error_log" //站点的错误日志记录的目录 CustomLog "logs/test.com-access_log" common //站点的访问日志的目录</VirtualHost> <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.hahaha.com ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common</VirtualHost>
4 下面我们为网站设置数据目录文件夹,并且设置两个首页文件
//存放网站的目录# mkdir -p /data/wwwroot/test.com
# mkdir -p /data/wwwroot/123.com
# vim /data/wwwroot/test.com/1.php<?phpehco test.com;?>
# vim /data/wwwroot/123.com/1.php<?phpehco test.com;?>
5 检查配置文件语法,并重新加载配置文件,用curl访问网站试下
# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
2.Apache用户认证
1有些网站为了增加安全性,在你打开网站时,要输入用户名和密码,这里的用户名和密码还不是你自己能注册的,得管理员给你权限。通常这样的做法不多,但是有这样一种可能,打开网站时不需要认证,但你打开某个特定的页面时,通常是只允许内部人员打开,就要用户认证。
htpasswd命令
选项说明:
passwdfile:包含用户名及其密码的用户密码文件。如果使用了"-c"选项,则会创建或覆盖文件。不使用"-n"选项时必须指定passwdfile参数。
username:为指定的用户名创建密码。如果该用户记录已存在,则更新。
-c:创建用户密码文件passwdfile,如果文件已经存在则会覆盖已存在的文件。不能和"-n"一起使用。
-n:在标准输出中输出结果,而不是将其写入到用户密码文件中。该选项会忽略用户密码文件passwdfile参数。不能和"-c"选项一起使用。
-m:使用MD5加密算法。默认。
-d:使用crypt()函数计算密码,不安全。
-s:使用SHA加密算法。安全。
-P:强制不加密密码,保持明文状态,不安全。
-B:强制bcrypt加密密码,非常安全。
-D:从用户密码文件中删除指定的用户及其密码。
-b:使用批处理模式,即非交互模式,可以直接待加密的传递明文密码。
password:指定要输入的明文密码。只能在批处理模式中使用,即和"-b"一起使用。
2 检查配置文件语法,重新加载配置文件,测试网站页面
# /usr/local/apache2.4/bin/apachectl -t
Syntax ok
# /usr/local/apache2.4/bin/apachectl graceful
11.19/11.20域名跳转
域名跳转类似于将网页重新指向另一个网站,但区别是域名跳转会将域名本身重新指向网站,而不使用HTML或脚本来进行重新指向。如果网站有多个域名,而又不希望分散权重,则可以通过开启Rewrite设置,将多个域名都301跳转到主域名之下。
22.21Apache访问日志
1 Apache日志文件为系统管理员提供了有用的信息,比如,为 Web 服务器排障,保护系统不受各种各样的恶意活动侵犯,或者只是进行各种各样的分析以监控 HTTP 服务器。根据你 Web 服务器配置的不同,其错误/访问日志可能放在你系统中不同位置。
2 查看apache日志文件
#ls /usr/local/apache2.4/logs
11.22访问日志不记录静态文件
如果一个网站访问量特别大,那么访问日志就会很多,但有一些访问日志我们其实是可以忽略掉的,比如网站的一些图片,还有js、css等静态对象。而这些文件的访问往往是很大的,而且即使记录这些日志也没有什么用,下面我们来讲一下怎么不记录这些文件。
11.23访问日志切割
6.1 为了避免长时间访问后生成大量的日志而导致磁盘空间不足。打开虚拟主机配置文件,修改以下内容将以每天生成的访问日志分隔成多个文件。
11.24静态元素过期时间
浏览器访问网站的图片时会把静态的文件缓存在本地电脑里,这样下次再访问时就不用去远程下载了。如果网站图片更新了呢,那么应该访问新图片才是。所以这就涉及到静态文件缓存时长的问题了,也就是“缓存过期时间”。
直播课堂笔记:
下载apr-1.6、apr-util-1.6以及httpd-2.4,分别解压三个源码包
把apr-1.6.3 放到httpd源码包的/srclib/下,改名apr
把apr-util-1.6.1 放到httpd源码包的/srclib/下,改名apr-util4)编译参数./configure --prefix=/dir/ --enable-so --enable-mpms-shared=all --with-mpm=event --enable-mods-shared=most --with-included-apr
说明:这里的/dir/为apache安装路径,根据需求定目录
apache的一些学习文档: https://github.com/aminglinux/apache