一、Apache简介
1、www概念解析
Internet:也就是我们平时所说的互联网,有时候也叫因特网。Internet是网络与网络之间串连成的庞大网络,这些网络以一组通用的协议(TCP/IP)相连,形成逻辑上的单一的、巨大的国际网络。
Intranet:也就是我们平时所说的企业内部网,或者直接简称为内网,它通常建立在一个企业或组织的内部,并为其成员提供信息共享和交流服务,比如说文件传输、电子邮件、万维网访问等等。
万维网:英文全称是World Wide Web,更多的时候,我们直接使用Web或者WWW来称呼万维网。它是一个由许多相互链接的超文本组成的系统,通过互联网(Internet)访问。 万维网使用的是
HTTP协议,它是互联网所能提供的服务之一。它是靠着互联网运行的一种服务。
TCP/IP:是Transmission Control Protocol/Internet Protocol的简称,翻译成中文是传输控制协议/因特网互联协议,一般情况下,我们都是直接使用TCP/IP这个简称。TCP/IP是Internet最基本的协议,它定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用四层的层级结构,每一层都通过呼叫它的下一层所提供的的服务来完成自己的需求。
TCP/IP协议的图示:
应用层 TeInet、FTP和e-mail等
传输层 TCP和UDP
网络层 IP、ICMP和IGMP
链路层 设备驱动程序及接口卡
HTTP:HTTP协议位于应用层,英文 HyperText Transfer Protocol,也就是超文本传输协议的意思。这是万维网上使用的一种协议,也是位于TCP/IP协议栈的应用层的一个协议。所有的www文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTTP请求响应模型:
Client(客户端) — 发起请求 —> Serve(服务器端) — 回送响应 —> Client(客户端) 这样的设计也一定程度上限制了HTTP协议的使用,它没法实现在客户端没有发起请求的情况下,服务器将消息推送到客户端。
Web服务器:一般指网站服务器,它一般是驻留在计算机中的一种程序,可以向浏览器等Web客户端发送文档。目前最主流的三个Web服务器是Apache、 Nginx 、以及微软的IIS
2、Apache服务器简介
Apache:全称Apache HTTP Server,它支持多平台,可以在大多数计算机操作系统中云心,它速度快、运行稳定而且安全,同时,它可以通过简单的API进行扩展,能够将PHP/Python等解释器编译到服务器中,所以Apache的应用非常的广泛。它使用非常广泛,其他使用广泛的是Nginx 、微软的IIS。
发展简史:当Internet最开始在美国大学流行的时候,NCSA组织了一些研究生开始编写基于HTTP协议的Server端和Client端程序。Client端程序叫做mosaic,Server端程序在当时被称作NCSA HTTP Server,它完整地实现了HTTP协议,最早的Web Server,也是现在Apache HTTP Server 的前身。
3、Apache与开源世界
Apache软件基金会:成立于1999年,它是一个非盈利组织,英文是Apache Software Foundation 简称ASF。Apache软件基金会最早源于开发Apache HTTP服务器的一个爱好者组织“Apache组织”。现在,Apache软件基金会主要为开源项目提供组织、法务和其他形式的支持,它所支持的项目和软件都遵循Apache许可证。Apache软件基金会目前已经拥有150个世界级项项目,超过500名个人成员,拥有4000名提交者。Apache软件基金会除了它自身,它所拥有的那些开源项目,Apache许可证、Apache贡献者协议许可证和开放合作的模式(称为“Apache之道”)的影响力要远远超过Apache软件基金会本身。
二、Windows下Apache服务器的安装与配置
1、下载apache服务器
首先如何从Apache官网下载windows版apache服务器
① 登录 http://httpd.apache.org
② 点页面左侧 Download!
③ 点页面右侧 a number of third party vendors.
④ 点 ApacheHaus 或者 Apache Lounge
⑤ 点 ApacheHaus 之后往下拉点,然后找到 你所需要的(是64位还是32位)点击 Download 下面的小房子图形。
2、解压apache压缩包
官网下载之后解压,解压到当前文件夹会出现一个Apache24 文件夹,把他放在F盘下(或者其他盘,我这里放在了F盘下的app文件夹下)。
3、修改httpd.conf文件
一定要把ServerRoot 的值修改为apache的安装路径,我这里是"F:/app/Apache24"
打开httpd.conf(我这里路径是F:/app/Apache24/conf/httpd.conf),大概在39和40行:
Define SRVROOT “F:/app/Apache24” # 表示定义一个变量SRVROOT,它的值为"F:/app/Apache24"
ServerRoot “${SRVROOT}” # ServerRoot表示apache的安装目录 。 ${SRVROOT}表示调用变量SRVROOT
注意:直接复制我的电脑下的文件路径是反斜杠"",需要修改为正斜杠"/",否则会导致文件路径找不到
4、安装apache服务
打开cmd命令提示符窗口,进入Apache24中的bin文件夹(f: 进入f盘 然后 cd f:\Apache24\bin ),然后输入httpd -k install
( 或者cmd窗口输入 “D:\WAMP\Apache\bin\httpd.exe” -k install -n apache
切记包含引号。该命令的意思是,安装apache服务,并将该服务名称命名为apache(你也可以改成别的),回车。服务安装完毕,完毕后,会自动测试,若有问题,窗口会提示错误,此时请根据错误自行排查。 )
5、安装成功验证:
开始–>运行–>services.msc–>确定(或回车键Enter)—>服务列表中查看Apache服务,存在说明安装成功。
或者计算机右键 点管理 点服务和应用程序 点服务,然后服务列表中查看Apache服务,存在说明安装成功。
6、启动Apache
找到Apache24安装目录中的bin文件夹下的ApacheMonitor 双击运行即可,然后点击Start 就启动了Apache服务
或者打开cmd命令提示符窗口 ,直接输入net start Apache2.4 启动Apache
或者打开cmd命令提示符窗口,然后 进入bin目录下 输入httpd -k start 启动Apache
注意:
①如果启动apache时失败,请查看是否是一下原因:
- 你的80端口是否被其他程序(如:迅雷)占用。
- 你的httpd.conf配置文件中,Define SRVROOT “F:app/Apache24”是否正确
- 你安装Apache24的路径中不能含有中文。
- 可能还有其他原因
②如果启动apahce时突然报”无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题”。
解决方案是:下载vc++2015 并安装,链接在下面,这个直接下载安装就可以了。
电脑需要VC运行环境:
VC9 x86 :http://www.microsoft.com/en-us/download/details.aspx?id=5582
VC9 x64 :http://www.microsoft.com/en-us/download/details.aspx?id=15336
VC11 x86 or x64:http://www.microsoft.com/en-us/download/details.aspx?id=30679
VC14 x86 or x64 :http://www.microsoft.com/en-us/download/details.aspx?id=48145
7、判断Apache服务运行是否成功
启动apache之后,打开浏览器输入localhost或127.0.0.1 会出现apache安装成功时默认的页面,则Apache服务运行成功
8、windows系统下apache服务的卸载
1)、首先关闭Apache服务(方式很多):dos命令行中运行命令 net stop Apache2.4。(进入控制面板,管理工具,服务,看下apache程序的服务名是什么,这里是Apache2.4)
2)、dos命令行中运行命令 sc delete Apache2.4
3)、删除安装目录即完成卸载。
或者
运行cmd,进入apache程序所在目录下的bin目录 输入命令 httpd –k uninstall
9、Apache windows常用命令:(需要进入bin目录下输入以下命令)
安装:httpd -k install
启动:httpd –k start
停止:httpd –k stop/shutdown
重启:httpd –k restart
启动、重启、停止指定服务的名称:后面各自加上-n “服务器名称”
例如:启动指定服务的名称httpd –k start -n “服务器名称”
检查配置文件,OK标识没问题: httpd -t
参考阅读:
https://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html
https://jingyan.baidu.com/article/574c52194c596b6c8d9dc10a.html
三、那么apache服务器如何配置多站点呢
1、让Apache在启动时能加载虚拟主机模块。
打开Apache安装目录下conf/httpd.conf文件,找到下面两行文字,把最前面的 # 号去掉,然后保存。
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#Include conf/extra/httpd-vhosts.conf
2、接着找到同一文件中的DocumentRoot和Directory,改为站点目录的上一级目录
例如站点放在 D:/Appserv/www/1 和 D:/Appserv/www/2,则改为以下形式
DocumentRoot"D:/Appserv/www"
<Directory"D:/Appserv/www">
3、配置完成后即可打开Apache安装目录下/conf/extra/httpd-vhosts.conf文件,在最后添加如下:
DocumentRoot是文件放置路径,ServerName是网站域名:
<VirtualHost *:80> # <VirtualHost *:80> 改成 <VirtualHost 127.0.0.2:80>
DocumentRoot "D:/Appserv/www/1"
ServerName www.xxx.com # www.xxx.com这样浏览器打不开 改成: 127.0.0.2 这样在浏览器能打开
</VirtualHost>
<VirtualHost *:80> # <VirtualHost *:80> 改成 <VirtualHost 127.0.0.3:80>
DocumentRoot "D:/Appserv/www/2"
ServerName www.xxx1.com # www.xxx1.com这样浏览器打不开 改成: 127.0.0.3 这样在浏览器能打开
</VirtualHost>
注意:
后来发现不用写成IP地址形式,用网站域名www.xxx.com形式时在浏览器也能打开 ,这就需要在hosts文件(hosts文件所在文职: c:\windows\system32\drivers\etc)中添加
映射关系,(一个IP地址可以对应多个域名)。写法如下:
127.0.0.1 www.xxx.com
127.0.0.1 www.xxx1.com
hosts文件添加映射关系后,在httpd-vhosts.conf文件最后添加如下形式,在浏览器输入www.xxx.com 和www.xxx1.com也都能打开了
<VirtualHost *:80>
DocumentRoot "D:/Appserv/www/1"
ServerName www.xxx.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "D:/Appserv/www/2"
ServerName www.xxx2.com
</VirtualHost>
4、最后重启Apache服务就配置完成。
四、apache中httpd.conf文件、httpd-vhosts.conf文件以及虚拟主机配置
httpd.conf文件中:
39行 40行
Define SRVROOT "F:/app/Apache24" # 定义一个变量SRVROOT,它的值为"F:/app/Apache24"
ServerRoot "${SRVROOT}" # ServerRoot apache安装的根目录
67行
Listen 80 # 监听端口 80
232行
ServerName localhost:80 # 主机(站点)的名字:ServerName “主机名”
256行 257行
DocumentRoot "${SRVROOT}/htdocs" 网站根目录
<Directory "${SRVROOT}/htdocs">
188行
# LoadModule vhost_alias_module modules/mod_vhost_alias.so
去掉#意思是启用apache的虚拟主机功能。
509行
# Include conf/extra/httpd-vhosts.conf
去掉这一行的#意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置。打开它就可以在httpd-vhosts.conf文件里写虚机配置,而不是一定要在 httpd.conf 里面写了。直接在httpd.conf中写配置也可以,但不建议这么做。
httpd-vhosts.conf文件:
修改默认站点根目录这是对于apache2.4来说,如果你原先httpd.conf中的根目录修改了,那么这里也要改,因为打开多站点功能后该设置会覆盖httpd.conf文件中的部分设置。否则可能会出现Forbidden。
33-36行:
<VirtualHost _default_:80> #这一行为默认设置,端口默认为80,必须为httpd.conf中你监听的端口
DocumentRoot "${SRVROOT}/htdocs" #这一行为默认设置,由于我的默认站点根目录修改了,所以在这里也要将它改掉,否则会出现Forbidden
#ServerName www.example.com:80
</VirtualHost>
一个虚拟主机配置如下:
#由于多个虚拟机一同工作,每个虚拟机必须配置ServerName(访问的域名)
<VirtualHost *:80> #这一行"*:80"在httpd.conf的配置文件中必须监听该端口
ServerName www.study.com #设置主机名(域名名称)
ServerAlias study.com #设置主机别名,即用该别名也可以访问(前提是域名解析正确)
Errorlog "logs/dumy-host.example.com-error.log" #错误的访问日志
CustomLog "logs/dumy-host.example.com-access.log" common #访问日志文件
DocumentRoot "Ezitudy" #设置该站点根目录(网站目录)
<Directory "E:/www/study"> #设置文件夹访问控制,其路径要和上一行的DocumentRoot一样
Options Indexes #用于显示设定“可显示文件列表”(当无可显示网页的时候)
AllowOverride All #启用文件夹访问控制的文件.htaccess设置
Require all granted #请求控制
DirectoryIndex index.php index.html #默认打开的页面设置
</Directory>
</VirtualHost>
依照上面的写法,httpd-vhosts.conf文件中可以设置多个站点(虚拟主机)
五、Apache目录结构
bin 该目录用于存放apache常用的命令,比如httpd
cgi-bin 该目录存放linux下的常用命令.sh
conf 存放配置文件httpd.conf
htdocs 存放我们的站点文件(默认情况下),如果有多个站点,可以通过文件夹分类
icons 存放图标
include
lib
logs 记录apache相关日志
modules apache模块
目录结构参考:https://www.cnblogs.com/EricZLin/p/9139059.html 这个链接的Apache的安装和配置写的也不错
阿帕奇(apache)服务器的下载、安装与配置请参考百度经验 https://jingyan.baidu.com/article/d8072ac47baf0eec95cefdca.html
最后扩展阅读:
Apache2.4虚拟主机和多站点配置:https://blog.youkuaiyun.com/the_victory/article/details/51006167
apache虚拟主机配置的三种方式 : https://blog.youkuaiyun.com/qq_38083665/article/details/80720226
apache虚拟主机: https://www.cnblogs.com/hzk001/p/11748204.html
Hosts文件:
https://baike.baidu.com/item/hosts/10474546?fromtitle=Hosts文件&fromid=8971674&fr=aladdin
https://jingyan.baidu.com/article/9f7e7ec04dacc06f281554dd.html