三十四、www服务apache进阶
9.虚拟主机:部署多个站点,每个站点希望用不同的站点域名和站点目录,或者是不同的端口和不同的IP,则需要虚拟主机,简单理解就是一个http服务要配置多个站点,就要虚拟主机。
apache虚拟主机分为三类:1.基于域名 2.基于端口 3.基于IP 但是在企业中,主要是基于域名的虚拟机。
10.配置三个站点测试实战:
www.etiantian.org /var/html/www
blog.etiantian.org /var/html/blog
bbs.etiantian.org .var/html/bbs
1)创建三个站点文件
mkdir -p /var/html/{www,blog,bbs}
2)向文件中写入三个网址
for name in bbs www blog;do echo "http://$name.etiantian.org">/var/html/$name/index.html done
3)进行网点的查看
[root@djw3 extra]# for name in bbs www blog;do cat /var/html/$name/index.html;done
http://bbs.etiantian.org
http://www.etiantian.org
http://blog.etiantian.org
4)从配置文件extra中,httpd-vhosts.conf 文件可以配置多个域名,如下所示,在配置中,这里的配置优先于主配置 文件。

配置文件的更改后,还是访问不了,因为会有403表示没有权限,这里需要在directory中配置,表示允许客户端对站点进行访问,当请求到达此服务器后,先进行extra配置文件中的域名访问, 在进行默认首页的访问。

如果系统盘安装在C盘,那么hosts文件的位置在C:\Windows\System32\drivers\etc,前面已经讲解,这里不做说明。

进行测试,结果如下:
1)www.etiantian.org /var/html/www

2)blog.etiantian.org /var/html/blog

3)bbs.etiantian.org .var/html/bbs

测试完毕,访问成功!除了基于域名外,还有基于端口和基于IP的,这里不做详解,一般用不上。基于端口的,在httpd.conf和extra/http-vhost文件中修改就可以访问了,常常用于内网自己人使用;基于IP的需要添加网卡或者配置虚拟IP,比较麻烦,因为不常用,这里不做说明。
11、优化启动提示
检查域名
[root@djw3 ~]# /application/apache/bin/apachectl -t
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
或者 平滑重启
[root@djw3 ~]# /application/apache/bin/apachectl graceful
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
都会有这句:Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName,表示没有一个完整的域名,使用127.0.0.1作为一个服务名
fully qualified domain name ==FQDN 一个完整的域名
通过在conf文件中修改,如下:

重启启动,正常:

12.apache日志轮询技术实现
apache有两种日志格式:common和combined
可以在conf下的httpd.conf下看到此格式:

在extra添加的网站中进行配置,如下:

如上,查看日志在 logs/bbs-access_log
[root@djw3 logs]# cat bbs-access_log
192.168.0.101 - - [23/May/2019:16:39:49 +0800] "GET / HTTP/1.1" 200 25
192.168.0.101 - - [23/May/2019:16:39:50 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.0.101 - - [23/May/2019:16:40:51 +0800] "GET / HTTP/1.1" 403 202
192.168.0.101 - - [23/May/2019:16:40:51 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.0.101 - - [23/May/2019:16:42:49 +0800] "GET / HTTP/1.1" 304 -
但是以上方法并不具备轮询,我们需要轮询,所以需要安装轮询工具cronolog
[root@localhost ~]# wget https://files.cnblogs.com/files/crazyzero/cronolog-1.6.2.tar.gz
[root@localhost ~]# tar zxvf cronolog-1.6.2.tar.gz
[root@localhost ~]# cd cronolog-1.6.2
[root@localhost ~]# mkdir -p /usr/local/cronolog
[root@localhost cronolog-1.6.2]# ./configure --prefix=/usr/local/cronolog
[root@localhost cronolog-1.6.2]# make && make install
按天轮询(生产环境常见用法,推荐)
CustomLog "|/usr/local/cronolog/sbin/cronolog /application/apache/logs/djwaccess_bbs_%Y%m%d.log" combined
ErrorLog "|/usr/local/cronolog/sbin/cronolog /application/apahce/logs/djwerror_bbs_%Y%m%d.log"
(提示:cronolog轮询日志的正确写法,被轮询的日志路径要写全路径 (按天记录日志,日志不会自动覆盖))
在配置中,进行配置:
<VirtualHost *:80>
ServerAdmin 825822293@qq.com
DocumentRoot "/var/html/bbs"
ServerName bbs.etiantian.org
ServerAlias bbs.etiantian.com
CustomLog "|/usr/local/sbin/cronolog /application/apache/logs/djwaccess_bbs_%Y%m%d.log" combined
ErrorLog "|/usr/local/sbin/cronolog /application/apahce/logs/djwerror_bbs_%Y%m%d.log"
</VirtualHost>
想骂娘:这里花费了我大约3个小时,原因在于:百度的答案直接复制粘替后,感觉很简单,因为变更了配置文件,所以要重启服务,死活起不来。。。。。报错如下:
[root@djw3 extra]# /application/apache/bin/apachectl graceful
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
httpd not running, trying to start
想了很久,我之前也没动过什么东西要,在网上狂找答案,各种解释都试了,还是不能解决,没办法,怀疑是软件坏了,最后重新安装正常,看来真是坏了,最后重新配置,结果又报想通过的错误,气的我想砸电脑,深呼吸,走两圈,看电视,心情好点。。。。还原配置文件,在试试重启,又好了,初步怀疑配置文件有问题,然后改一步,重启一次,改一补,重启一次,最后定位到http-vhost文件在主配置文件中开启就会apache启动不起来,并不是报错。冷静下:
1)之前都可以,为什么现在不行,难道线程太多导致,不过就只是安装了个轮询日志cronolog
2)难道是cronlog影响的
3)重装cronolog ,测试还是不行。。。。我特么烦死了
网上找答案,,,,,,,,读了十几个片段,还是没有明确的答案
http-vhost文件和主配置文件看了又看,没问题呀,在放弃的时候,准备跳过的时候,死马当活马,看了一下日志,清空日志,在发送一次请求,原来如此:

没有路径,想了想,纯找的文件,当时确实没有配置轮询日志路径,导致apache启动不起来,奇葩,看了下网上,apache配置文件如果不正确,就很容易导致启动不起来软件。修改完成后,果然正确,接着就是各种报错,各种修改,又花了好多时间,因为是重新安装的软件,各种细节都要重启弄,真是一朝粗心,弄了快3个小时。。。
1)网上或者别人说的,要结合自己的环境
2)以前没报错,现在报错,就肯定是现在变更改动的配置有问题,不要轻易删除再安装,在要回到当初的情况很难很难,简直自己给自己找麻烦
3)要结合日志分析,效率更高
4)网上虽然没有自己的答案,但有一个相近的,他是删除了一个 "|",导致也报相同的错,要举一反三,当时急得的,也没多想,失败。。。。估计他还没弄明白,以为是少了“|”,解释就是少了个“|”,本质就路径配错了。
最后,打开日志目录,用tail -f 日志名称进行测试就ok了!
三十四、www服务apache进阶的更多相关文章
- JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫
JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接 ...
- Java进阶(三十四)Integer与int的种种比较你知道多少?
Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值 ...
- spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法
spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法 前言 本篇接着<spring boot / cloud ...
- spring boot 常见三十四问
Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一 Spring Boot.Spring MVC 和 Spring 有什么区别 ...
- COJ966 WZJ的数据结构(负三十四)
WZJ的数据结构(负三十四) 难度级别:C: 运行时间限制:20000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给一棵n个节点的树,请对于形如"u ...
- NeHe OpenGL教程 第三十四课:地形
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的?
原文:WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的? 服务端只有抛出FaultException异常才能被正常地序列化成Fault消息,并实现向客户 ...
- Gradle 1.12用户指南翻译——第三十四章. JaCoCo 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- SQL注入之Sqli-labs系列第三十四关(基于宽字符逃逸POST注入)和三十五关
开始挑战第三十四关和第三十五关(Bypass add addslashes) 0x1查看源码 本关是post型的注入漏洞,同样的也是将post过来的内容进行了 ' \ 的处理. if(isset($_ ...
- “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
随机推荐
- [GXYCTF2019]BabySQli
0x00 知识点 emmm这道题目就是脑洞得大,能猜后端源码 0x01 解题 查看源码: base32,base64解码得到 select * from user where username = ' ...
- opencv3。4安装出错
https://www.samontab.com/web/2017/06/installing-opencv-3-2-0-with-contrib-modules-in-ubuntu-16-04-lt ...
- Jquery输入框焦点事件及鼠表事件汇总
对于用户的输入框input,我们常常会用ajax来实现与后台的交互.输入框的内容我们可以用.val()方法获取,对于输入框内的事件,我们常用到焦点,如:input.blur.focus.... inp ...
- 洛谷 P1709 隐藏口令
题目描述 有时候程序员有很奇怪的方法来隐藏他们的口令.Binny会选择一个字符串S(由N个小写字母组成,5<=N<=5,000,000),然后他把S顺时针绕成一个圈,每次取一个做开头字母并 ...
- 洛谷 P2320 [HNOI2006]鬼谷子的钱袋
题目传送门 解题思路: 对于每一个数i,我们都可以用i/2来表示,而对于i/2我们可以用i/4表示......(以此类推) 举个例子,对于10,我们可以用5 + 5来表示,而5可以用 3 + 2表示, ...
- linux目录和安装目录学习
我一般会在/opt目录下创建 一个software目录,用来存放我们从官网下载的软件格式是.tar.gz文件,或者通过 wget+地址下载的.tar.gz文件 执行解压缩命令,这里以nginx举例 t ...
- Python说文解字_main
1. main函数: 我们知道很多的编程语言都要写一个main函数,比如在C# 中Main函数还需要大写.很多人疑惑为什么要写这么一个Main函数.其实这就是好比我们在建了一排房子,你从哪个门都可以进 ...
- 2019杭电暑假多校训练 第六场 Snowy Smile HDU - 6638
很多题解都是简单带过,所以打算自己写一篇,顺便也加深自己理解 前置知识:线段树.线段树维护最大字段和.二维坐标离散化 题解: 1.很容易想到我们需要枚举所有子矩阵来得到一个最大子矩阵,所以我们的任务是 ...
- 84.常用的返回QuerySet对象的方法使用详解:select_related, prefetch_related
1.select_related: 只能用在一对多或者是一对一的关联模型之间,不能用在多对多或者是多对一的关联模型间,比如可以提前获取文章的作者,但是不能通过作者获取作者的文章,或者是通过某篇文章获取 ...
- Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore , Condition
http://www.importnew.com/21889.html 1)CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同: CountDown ...