Apache安装与配置

install

  • 下载地址:https://www.apachelounge.com/download/,选择2.4.33版本64位
  • 将程序解压到一个英文目录下,以管理身份打开cmd
  • cd <解压目录>/bin,执行命令切换到apache解压的盘符的bin目录
  • httpd.exe -k install -n "Apache",执行命令对bin目录下的httpd进行安装,-n参数是指定服务器的名称,默认名称是Apache24,很丑陋,所以改成了Apache
  • httpd.exe -k uninstall -n "Apache",执行命令可对apache进行卸载
  • 执行完安装命令之后,会有一个错误,大概意思是在conf目录下的http.cof 配置文件中指定的根目录serveroot并不是一个有效的目录
Errors reported here must be corrected before the service can be started.
httpd.exe: Syntax error on line 37 of C:/apache/conf/httpd.conf: ServerRoot must be a valid directory
  • 我们找到这个配置文件,37行指定的根目录是ServerRoot "C:/Apache24",但是我们解压后因为改了名字,所以再配置文件我们也需要做出相应的更改,修改为ServerRoot "C:/apache"
  • 再去执行cmd命令,httpd.exe -t,对httpd.exe是否正确安装进行测试,发现又报了错误,错误还是在上面的配置文件中,大概意思是在248行,DocumentRoot 'C:/Apache24/htdocs' 不是一个目录或者不可读,其实还是和改了名字有关系,所以选中出现错误的地方,利用sublime中快捷键一直按ctrl+d直到文件最后,进行修改
AH00526: Syntax error on line 248 of C:/apache/conf/httpd.conf:
DocumentRoot 'C:/Apache24/htdocs' is not a directory, or is not readable
  • 修改之后再次执行httpd.exe -t 测试命令,发现Syntax OK,但是其实还是有一个错误,大概意思缺少服务器的域名,提示我们通过ServeName这个指令进行全局设置。这里需要说明的是,这个报错我们其实可以忽略,因为我们之后需要做虚拟主机
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::dd08:7c28:a78f:e5bd. 
Set the 'ServerName' directive globally to suppress this message
  • 此时我们通过运行=>services.msc打开服务,看到apache服务已经被成功安装,但是并没有显示启动。

start

  • httpd.exe -k start -n "Apache" 执行命令后,还是会报上面的AH00558错误,这里我们忽略,此时再去查看服务,Aapche服务已经正在运行了

  • 此时我们再浏览器中输入127.0.0.1,就会弹出it works

DNS

  • 这里我们再介绍下DNS的概念,客户在发送的请求的时候,首先会从本地的hosts文件下去找域名匹配的ip,否则则会去DNS服务器去解析,再获取ip后才会去web服务器上获取数据。我们可以通过修改本地C:\Windows\System32\drivers\etc下的hosts文件,依然能够访问
127.0.0.1    wuqiuxue.dec

端口

  • 端口就好比是与外界交往的门,只有通过这个门,数据才会传递。在我们输入127.1.0.0的ip地址时,我们并没有输入端口号,因为url会默认添加一个80端口。同时apache的conf目录下的httpd.conf配置文件中的58行,用了Listen 80 进行了配置。所以客户输入ip地址,自然是去找这个ip地址下的拥有80端口的apache服务器。我们可以通过cmd执行netstat -ano命令查看端口占用情况,确实看到本地有一个服务将80端口占用,这里有这个服务的pid号——5424,通过执行tasklist|findstr "5424"命令,我们就可以查到是哪个服务占用了此端口,很显然是apache.

网站根目录

  • 服务器将网站的根目录默认指向的是DocumentRoot "c:/apache/htdocs",htdocs下有一个index.html文件,很麻烦,我们可以自定义网站根目录。但是这里需要再次澄清一个概念,客户通过apache服务器80端口访问服务器磁盘上的数据,但是并不是代表可以访问所有服务器上所有的文件,这里apache有权限的设置,/ 斜杠代表的是服务器上所有的文件,大概意思是所有重写被拒绝,所有需求被拒绝

  • 因为是拒绝访问,所以我们在将网站根目录地址更改的时候,还要对这个改过的目录进行设定,系统默认设定是是Require all granted,所以我们也就不用改了

默认文档

  • 当客户端访问的是一个目录而不是具体文件,服务器默认就会返回这个目录下的某个文档(可以设置),这个被称之为默认文档。默认文档可以配置多个,用空格隔开,从前往后寻找,直到找到可用的为止,如果没有找到则启用一个目录浏览器

目录浏览

  • 启用目录浏览是很丑陋的,所以我们要进行设置,还是在网站根目录中进行配置,将index删除即可

虚拟主机

  • 一台机器上如果部署多个站点,那么我们需要通过配置虚拟主机的方式解决
  • httpd.conf在主配置文件中,虚拟主机的引入被注释了,解除注释。然后找到所在目录,找到虚拟配置文件进行更改,这样的方式是为了减少对主配置文件的修改,做到功能化单一化,当然即使我们改错了也没事,我们可以通过conf目录下的original目录进行恢复操作,这里存放这系统的默认配置

  • 找到配置虚拟主机的httpd-vhosts.conf文件,修改里面的配置文件,因为是修改了域名,所以我们还需要在hosts文件进行域名与ip地址的绑定
  • 别名一般就是在顶级域名前加上www.  这被称为二级域名

  • 如果还需要需要另外一个站点,那么我们还需要再配置一个虚拟主机,具体配置如下,同样还需要再hosts文件进行域名绑定,但是此时这样设置会报错,无法获取服务

  • 原因很简单,因为在配置第一个虚拟主机的时候,网站的根目录地址与主配置文件的地址相同,而主配置文件已经对了这个根目录进行了权限修改,而第二个虚拟主机所指定网站根目录显然是没有进行权限修改,保险起见,将第一个虚拟主机也添加一个directory的设置

  • 同时我们也可以将这两个站点都放在www下,只是不同的文件夹,而且也不用配置文件权限,因为主配置文件对www已经配置过了
  • 只要配置了虚拟主机,流程就不会再走主配置文件的中的网站根目录配置,如果再浏览器上输入127.0.0.1,本来这是指向主配置文件的,现在默认走第一个虚拟主机的配置

请求的流程

  • 客户端请求的是一个静态页面,那么服务器会原封不动的发给客户,这是静态网站,而动态网站,会根据每一次的请求,动态执行一段代码,这里我们介绍PHP
  • 服务器根据url地址去找对于的文件,如果发现文件不是静态文件,那么它会将此文件发给其他程序让其解析,最后将执行结果发给客户
  • apache服务器就相当与包工头,主要是分配任务,php就相当与农民工,主要是处理代码,现在我们来安装php,不然apache有任务也处理不了

PHP安装与配置

  • 下载地址:https://windows.php.net/download#php-7.1,解压到指定文件夹下,我们需要选择Thread Safe版本的,这个版本与apache搭配,non-Thread Safe是与iis搭配
  • 打开apache主配置文件,进行加载配置,将php解压目录下的php7apache2_4.dll文件的路径放入,如果路径存在空格,需要用双引号将整个路径包裹起来

  • 在模块设置的标签内,还要进行设置,虽然引入了mine.typeswen文件,但是里面不包括php,所以自己手动添加

  • 既然支持了php,那么我们还将默认文档进行追加,也支持index.php

随机推荐

  1. 数学之路-分布式计算-storm(3)

    .安装zookeeper 本博客全部内容是原创.假设转载请注明来源 http://blog.csdn.net/myhaspl/ myhaspl@aaayun:~/jzmq-master$cd .. m ...

  2. AutoCAD如何添加网络打印机 添加公司打印机

    1 请确认你已经连接了这台网络打印机,你没法打AutoCAD图纸,但是应该能打Word文档.能打Word文档说明你驱动装好了,通信也没问题,只是AutoCAD的配置不对导致的.   2 点击打印,打印 ...

  3. react 开发过程中的总结/归纳

    1.点击元素,获取绑定该事件的父级元素,使用 e.currentTarget.e.target 获取的是,出发该事件的元素,该元素有可能是所绑定事件的元素的子元素. 2.使用 react router ...

  4. HDU 1505 City Game(DP)

    City Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  5. [RK3288][Android6.0] 调试笔记 --- 录音音量从HAL到APP层会变小问题【转】

    本文转载自:http://blog.csdn.net/kris_fei/article/details/72783843?locationNum=9&fps=1 Platform: Rockc ...

  6. 一位ACMer过来人的心得(转)

    刻苦的训练我打算最后稍微提一下.主要说后者:什么是有效地训练? 我想说下我的理解.很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了.其实,这既不是充分条件.也不会是必要条件. 我觉 ...

  7. android短信拦截

    广播分2种,无序广播和有序广播.可以理解为散列和队列广播. 首先无序广播,不能中断,分发机制有点类似散列发送.这种广播的的发送为:context.sendBroadcast这种广播是不能中断的,请看A ...

  8. linux 基础 —— 网络管理

    Linux 最强大的功能是什么?网络功能. 修改 dns 服务器(解析域名到 ip 地址): $ sudo vim /etc/resolvconf/resolv.conf.d/base # 添加如下内 ...

  9. nginx 静态目录配置规则,路径匹配与本地资源

    经常配了nginx静态目录,死活访问不了,每次访问404.查看文档后,发现nginx配置静态目录使 用以下规则 假如nginx是在本机,静态目录也是在本机, 1.子目录匹配 如下配置 location ...

  10. Python---scikit-learn(sklearn)模块

    Python在机器学习方面一个非常强力的模块---scikit-learn模块,它作为数据挖掘和数据分析方面的一个简单而有效的工具,主要包括6大功能:分类(Classification),回归(Reg ...