18 LAMP(中)

18 LAMP(中)11.16-11.17Apache默认虚拟主机(上下)1.打开Windows系统中hosts文件:路径:C:\Windows\System32\drivers\etc2.用记事本打开Windows系统下的hosts文件

11.16-11.17Apache默认虚拟主机(上下)

1. 打开Windows系统中hosts文件 :

路径:C:\Windows\System32\drivers\etc

clipboard.png

2. 用记事本打开Windows系统下的hosts文件 :

自定义设定域名指向ip:Linux服务器ip  自定义网址

192.168.223.128  www.abc  www.123.com

(自定义的网址,在windows下访问会跳到前面Linux服务器ip)

clipboard.png

记得保存hosts记事本!!!

3. 在Windows系统下,查看hosts里设定的网址,是否跳转到Linux 服务器ip :

C:\Users\VULCAN>ping www.abc.com

C:\Users\VULCAN>ping www.123.com

clipboard.png

4. 编辑httpd.conf配置文件 :

[root@hao-001 ~]# vim /usr/local/apache2.4/conf/httpd.conf

搜索:httpd-vhosts关键词,把这行行首#号 删掉!!!(解除注释)

clipboard.png

5. 编辑虚拟主机配置文件 :

[root@hao-001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

更改内容:

<VirtualHost *:80>

   DocumentRoot “/data/wwwroot/abc.com”

   ServerName abc.com

   ServerAlias www.abc www.123.com

   ErrorLog “logs/abc.com-error_log”

   CustomLog “logs/abc.com-access_log” common

</VirtualHost>

<VirtualHost *:80>

   DocumentRoot “/data/wwwroot/111.com”

   ServerName 111.com

   ServerAlias www.example.com

   ErrorLog “logs/111.com-error_log”

   CustomLog “logs/111.com-access_log” common

</VirtualHost>

clipboard.png

DocumentRoot:定义网站根目录

ServerName:指定主域名

ServerAlias:指定别名域名(可以有多个别名域名,同时指向一个ip)

ErrorLog:设定错误日志

CustomLog:设定访问日志

6. 创建上面文件中对应的网站目录 :

[root@hao-001 ~]# mkdir /data/wwwroot/

[root@hao-001 ~]# mkdir /data/wwwroot/abc.com/

[root@hao-001 ~]# mkdir /data/wwwroot/111.com/

7. abc网站目录,创建对应文件 :

[root@hao-001 ~]# vim /data/wwwroot/abc.com/index.php

添加内容:

<?php

echo “abc.com”;

8.111网站目录,创建对应文件 :

[root@hao-001 ~]# vim /data/wwwroot/111.com/index.php

添加内容:

<?php

echo “111.com”;

9. 检查配置文件语法是否正确无误 ?

[root@hao-001 ~]# /usr/local/apache2.4/bin/apachectl -t

clipboard.png

10. 重新加载配置文件(不会重启服务) :

[root@hao-001 ~]# /usr/local/apache2.4/bin/apachectl  graceful

11. curl -x的作用 :

[root@hao-001 ~]# curl -x192.168.223.128:80 abc.com

clipboard.png

www.123.com 是第一个(默认)虚拟主机的主域名

www.baidu.com 是没有设定过的域名,

www.baidu.com这种没有设定过的域名,会解析到默认虚拟主机主域名!!!

 

[root@hao-001 ~]# curl -x192.168.223.128:80 111.com

clipboard.png

111.com 是第二个虚拟主机的主域名

www.example.com 是第二个虚拟主机的别名域名

www.baidu.com 是没有设定过的域名,

www.baidu.com这种没有设定过的域名,会解析到默认虚拟主机主域名!!!

因此:只有设定过的域名,才能会解析到对应的主域名上,

没设定过得域名,都会解析到默认虚拟主机域名上!!!

1. 编辑第二个虚拟主机,设定Apache用户认证(访问网站需要用户密码认证)

[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

插入内容如下(设定指定网站访问认证参数如下,位置在虚拟主机下面添加) :

   <Directory /data/wwwroot/111.com>

      AllowOverride AuthConfig

      AuthName “111.com user auth”

      AuthType Basic

       AuthUserFile /data/.htpasswd

       require valid-user

   </Directory>

clipboard.png

2. 第一次创建可访问用户名,自定义密码 (-c 参数 自动创建生成密码文件) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/htpasswd -c -m 密码文件 自定义用

[root@hao-01 ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd hao1clipboard.png

3. 第二次后创建可访问用户名,自定义密码(不要加-c 参数 会覆盖掉密码文件的) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/htpasswd  -m /data/.htpasswd hao2

clipboard.png

4. 查看密码文件内容 :

[root@hao-01 ~]# cat /data/.htpasswd

clipboard.png

5. 检测虚拟主机配置文件是否有错误 ?

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t

clipboard.png

6. 启动apache2.4/httpd :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl start

clipboard.png

7. 重新加载配置文件(不会重启服务) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl graceful

8. curl 访问这个虚拟主机的主域名111.com,是否访问成功 ? 报错如下 :

[root@hao-01 ~]# curl  -x127.0.0.1:80  111.com  -I

报错 :401(用户认证加密访问受限了)

clipboard.png

9. 用记事本打开Windows系统中hosts文件 :

路径:C:\Windows\System32\drivers\etc

clipboard.png

添加上虚拟主机2的设定的主域名:111.com

clipboard.png

(记得保存hosts记事本)

10. 在Windows上,检查Linux服务器ip的80端口是否打开 ?

C:\Users\VULCAN>telnet 192.168.223.128 80

clipboard.png

11. Linux服务器上打开80端口(必须是httpd已启动) :

[root@hao-001 ~]# iptables -I INPUT -p tcp –dport 80 -j ACCEPT

(关闭80端口:iptables -D INPUT -p tcp –dport 80 -j ACCEPT )

12. 再次在Windows上,检查Linux服务器ip的80端口是否打开 ?

C:\Users\VULCAN>telnet 192.168.223.128 80

快捷键组合退出: Ctrl 跟 ]

clipboard.png

13. Window游览器上,访问虚拟主机2加密认证的主域名111.com地址 :

此时,有些游览器会报401,并让其登陆加密访问的用户密码,就是刚刚设定的!

clipboard.png

14. 用curl命令,来访问虚拟主机2加密认证的主域名111.com :

-u用来指定用户名密码,此时就是200 ok成功!

[root@hao-01 ~]# curl -x127.0.0.1:80  -uhao:admin 111.com -i

clipboard.png

 

下面的方法用于 :

主网站的下级网站,不想被其他人访问时候,增加的用户认证!

1. 编辑虚拟主机配置文件中,第二个虚拟主机参数 :

针对单个文件进行认证:

[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

增加内容(注意增加位置,,如图):

   <FilesMatch 123.php>

   </FilesMatch>

clipboard.png

2. 检测虚拟主机配置文件是否有错误 ?

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t

3. 重新加载配置文件(不会重启服务) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl  graceful

4. 创建并编辑123.php文件到111.com目录下 :

[root@hao-01 ~]# vim /data/wwwroot/111.com/123.php

添加内容:

<?php

echo “123.php”;

5. 访问111.com不会受限 :

(设定了:访问111.com下123.php才会需要认证)!

[root@hao-01 ~]# curl -x127.0.0.1:80 111.com -i

clipboard.png

6. 用curl命令,访问111.com/123.php,访问是受限的,

(针对这个123.php文件做了认证,需要-u跟用户名密码才可访问)

[root@hao-01 ~]# curl -x127.0.0.1:80 111.com/123.php -i

clipboard.png

7. 用curl命令,访问111.com/123.php (-u 参数跟用户名 密码) :

[root@hao-01 ~]# curl -x127.0.0.1:80 -uhao1:admin 111.com/123.php -i

clipboard.png

11.19-11.20 域名跳转(上下)

1. 编辑虚拟主机配置文件,更改第二个虚拟主机做实验 :

[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

添加内容(这里定义的www.111.com是别名域名跳转到的 网站域名):

   <IfModule mod_rewrite.c>

       RewriteEngine on

       RewriteCond %{HTTP_HOST} !^111.com$

       RewriteRule ^/(.*)$ http://www.111.com/$1 [R=301,L]

   </IfModule>

clipboard.png

2. 检测虚拟机配置文件是否有错误 :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t

3. 重新加载配置文件(不会重启服务) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl graceful

4. 查找apache是否加载了rewrite模块 ?

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite

没查到rewrite模块,看下吗步骤打开!

5. 编辑httpd.conf文件 :

[root@hao-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf

查找rewrite,找到含有rewrite行,把这行前的#号删掉!

18 LAMP(中)clipboard.png

6. 检测虚拟机配置文件是否有错误 :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t

7. 重新加载配置文件(不会重启服务) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl  graceful

8. 再次查找apache是否加载了rewrite模块?

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite

18 LAMP(中)clipboard.png

9. 用curl 命令访问别名域名,跳转到了设定跳转的域名下!

[root@hao-01 ~]# curl -x127.0.0.1:80 www.example.com

clipboard.png

在虚拟机配置文件中,下图位置,设定跳转到指定的网站域名!!!

clipboard.png

11.21 Apache访问日志

1. 两种日志格式:combined 、 commo

clipboard.png

2. 更改虚拟主机配置文件,把日志格式改为combined :

[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

更改内容(更改访问日志格式):

commo改为:combined

clipboard.png

3. 检测虚拟机配置文件是否有错误 :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t

4. 重新加载配置文件(不会重启服务) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl graceful

5. 在Windows上,访问到111.com/123.php网站(需要先把这个网站地址,发在其他博客或帖子中,再点击这个超链接111.com/123.php,即可在服务器上记录上访问日志!

6. 查看Apache,combined格式的访问日志 :

[root@hao-01 ~]# tail /usr/local/apache2.4/logs/111.com-access_log

clipboard.png

由上图看出,从51cto博客里页面,跳转到了这个111.com下的123.php

11.22 访问日志不记录静态文件

• 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录

1. 编辑虚拟机配置文件,增加访问日志不记录图片静态文件等规则:

[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

增加内容(针对访问日志过滤掉图片访问):

 SetEnvIf Request_URI “.*\.gif$” img

   SetEnvIf Request_URI “.*\.jpg$” img

   SetEnvIf Request_URI “.*\.png$” img

  SetEnvIf Request_URI “.*\.bmp$” img

   SetEnvIf Request_URI “.*\.swf$” img

   SetEnvIf Request_URI “.*\.js$” img

   SetEnvIf Request_URI “.*\.css$” img

  CustomLog “logs/111.com-access_log” combined env=!img

clipboard.png

2. 检测虚拟机配置文件是否有错误 :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t

3. 启动apache2.4/httpd :

[root@hao-01 apache2.4]# /usr/local/apache2.4/bin/apachectl start

4. 重新加载配置文件(不会重启服务) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl  graceful

5. 进入111网站目录下 :

[root@hao-01 ~]# cd /data/wwwroot/111.com

6. 从window上传一张图片到当前目录下 :

[root@hao-01 111.com]# rz

clipboard.png

[root@hao-01 111.com]# ls

clipboard.png

7. curl命令访问111.com/图片名称,可以通(200 OK) :

[root@hao-01 111.com]# curl -x127.0.0.1:80 111.com/1.jpg -I

clipboard.png

8. 在Windows游览器中,不断刷新访问111.com/图片名称 :

111.com/1.jpg

clipboard.png

9. 查看访问日志,有没有刚刚访问111.com/1.jpg jpg格式的访问日志 ???

[root@hao-01 111.com]# tail /usr/local/apache2.4/logs/111.com-access_log

clipboard.png由上图可以看出,没有的,没有记录1.jpg的访问日志呢!

11.23 访问日志切割

• 日志一直记录总有一天会把整个磁盘占满,

所以有必要让它自动切割,并删除老的日志文件

1. 编辑虚拟机配置文件,把日志规定为以每天日期创建为一个访问日志文件 :

[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

访问日志增加更改如下规则(设定日志切割成多个文件):

CustomLog “|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400” combined env=!imgclipboard.png

2. 检测虚拟机配置文件是否有错误 ?

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t

3. 重新加载配置文件(不会重启服务) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl  graceful

4. 用curl命令,访问111.com网站下的123.php文件 :

[root@hao-01 ~]# curl -x127.0.0.1:80 111.com/123.php

5. 列出 apache访问日志目录下全部日志(可看到以日期命名的日志) :

[root@hao-01 ~]# ls /usr/local/apache2.4/logs/

clipboard.png

6. 查看刚刚访问后,生成的日期命名的日志内容(刚刚访问123.php):

[root@hao-01 ~]# cat /usr/local/apache2.4/logs/123.php/111.com-access_20170801.log

clipboard.png

11.24 静态元素过期时间

1. 修改虚拟主机配置文件,定义静态图片等元素过期时间 :

[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

插入内容(静态图片等元素过期时间的定义) :

<IfModule mod_expires.c>

   ExpiresActive on

   ExpiresByType image/gif  “access plus 1 days”

   ExpiresByType image/jpeg “access plus 24 hours”

   ExpiresByType image/png “access plus 24 hours”

   ExpiresByType text/css “now plus 2 hour”

   ExpiresByType application/x-javascript “now plus 2 hours”

   ExpiresByType application/javascript “now plus 2 hours”

   ExpiresByType application/x-shockwave-flash “now plus 2 hours”

   ExpiresDefault “now plus 0 min”

</IfModule>

clipboard.png

2. 检测虚拟机配置文件是否有错误 :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t

3. 重新加载配置文件(不会重启服务) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl graceful

4. 编辑apache主配置,搜索到expires这行(删除行首的注释符#号) :

clipboard.png

5. 搜索apache,expire模块是否打开 ?

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep expire

clipboard.png

6. 用curl命令,访问111.com目录下的静态图片1.jpg :

(显示了当前访问时间和缓存静态过期时间,过期就会清理掉了)

[root@hao-01 ~]# curl -x127.0.0.1:80 111.com/1.jpg -I

clipboard.png

今天的文章18 LAMP(中)分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/59882.html

(0)
编程小号编程小号

相关推荐

发表回复

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