Apache是比较常用的web服务器软件,用来解析HTTP网页。这里需注意,apache本身并不能解析php页面,它是用来配置解析http页面的。当然,作为一款最流行的web服务器软件,apache支持SSL协议,支持虚拟主机等,这些功能我们稍后介绍。
Apache的官方下载地址为:http://httpd.apache.org/download.cgi,目前最新版本为2.4.46(Release 2020-08-07)。但该网站仅提供apache源码下载,不提供编译后的软件下载,我们选择Apache Haus Downloads,这是一款在windows下编译完成的apache二进制文件,在windows平台下可直接使用(下载地址:https://www.apachehaus.com/cgi-bin/download.plx),根据你服务器的操作系统选择对应的文件下载,作者使用的x64版本。
这里需要注意的是,这个二进制文件是基于x64位平台,VC15环境下编译的,因此,它所运行的操作系统必须满足以上条件,它不适用于XP和2003这样的32位操作系统,同时,你还需要在系统下安装VC15x64(visual studio 2017)运行库(下载地址: https://aka.ms/vs/16/release/vc_redist.x64.exe)。
将下载后的apache压缩包解压,将其中Apache24文件夹放在系统C盘根目录下,
先配置环境变量,右键点击“这台电脑”,选择“属性”,
在弹出的窗体中选择“高级系统设置”
在高级系统设置界面的“高级”选项卡中,单击“环境变量”
在弹出的“环境变量”窗体的下半部分“系统变量”中找到变量“Path”,点击编辑,
在弹出的对话框中,将光标移动到最后,键入英文;apache中bin的目录值(前文已将apache24放置于C盘根目录下,因此此处的值应为: ;C:\Apache24\bin)。
确定后,对环境变量界面也确认,至此环境变量配置生效。
注意:设置环境变量,目的是可以在windows的任何目录下可以使用环境变量path中所列目录中的可执行程序,而不必先定位至该目录下,然后再执行可执行程序,便于我们在控制台下通过命令启动apache服务器。
后面对于php和mysql的环境变量path配置与此相同,到时将不会细述,请读者对此处配置过程加以熟悉。
然后,不要忘记安装VC运行库,通过https://aka.ms/vs/16/release/vc_redist.x64.exe下载后的文件,双击运行安装即可。
此时,打开命令行,键入httpd –k start 回车后,不出现任何提示,即表明apache安装成功。
*几个重要文件的配置:
Apache服务器运行前,首先需要对几个文件进行配置,以便能够支持更多特性。
我们首先要熟悉一下apache24里面的目录结构。
bin目录:可执行文件目录。里面是apache2.4的全部可执行文件和动态链接库文件,其中比较重要的是httpd.exe文件,是web服务器主文件,监听网站端口,处理http消息,与用户交互等。还有其他的可执行文件,如ApacheMonitor.exe文件,用来监控web服务的运行状态;ab.exe/abs.exe用来测试http/https网站性能等。还有一些重要的动态链接库文件,有些是负责SSL运行的动态链接库,后面用到时会加以介绍。
需要指出的是,正如前文所述,我们一般设置bin目录为windows环境变量的目录值,目的是为了可以在命令行模式下,windows的任何路径下,均可以使用该目录下的可执行文件,而不用书写可执行程序的路径全名。
conf目录:这是配置文件目录。对apache服务器的个性化配置时,需要修改该目录下的文件。这里面比较重要的文件为httpd.conf,主要对apache服务器的通过属性进行配置;extra/httpd-vhosts.conf,主要是配置虚拟服务器的相关属性;extra/httpd-ssl.conf,主要对SSL(安全传输协议)的配置,主要配置SSL端口、目录、证书路径和私钥路径等。
其余路径(如include路径下为头文件,方便利用动态链接库进行再开发;icons路径下是图标文件;modules下是服务器的插件模块,对web服务进行扩展,如增加文件传输能力、图形处理能力、邮件和ftp服务能力、字符处理能力、数据库连接能力等;logs是日志目录,对web服务启动或运行时出现的信息进行记录,以便排除问题等),本文涉及较少,这里不做详细介绍。
(1)httpd.conf的配置
使用文本编辑工具(推荐使用Editplus、UltraEdit等工具),打开httpd.conf。
其中,行首为#的部分为注释部分,不会被apache服务器程序进行读取和执行,没有#部分为正式配置部分,会被服务器读取并运行。
首先为上图中的“Define SRVROOT "/Apache24"”,此处为服务器的根目录,应根据你的实际配置进行修改,前文所述,我们将apache的目录apache24放置于C盘的根目录下了,因此,此处应该为为“Define SRVROOT "C:/Apache24"”,如下图
(约67行左右,此行数根据apache具体版本不同,可能区别,但顺序一致,下同)我们向下阅读该配置文件,,有一处
这是配置apache的服务器监听端口,按照HTTP协议,默认端口就是80。因此,此处如无特殊需要,不需修改。注意:有关网络协议和端口相关知识,有兴趣的读者可以参考计算机网络相关书籍,这里不做详细介绍。
(约190行左右)再向下阅读此配置文件,是有关加载哪些动态库对象部分,此处先安装默认即可。但是,在动态库对象最后,我们要加入对php的支持,因为php解析器本身也是一个动态库对象。
在最后一行“#LoadModule”的后面加入下面的代码:
# php7 support
LoadModule php7_module "D:/php7/php7apache2_4.dll"
AddType application/x-httpd-php .php .html .htm
# configure the path to php.ini
PHPIniDir "D:/php7"
这里,我们使用的是php7.4.15(下载地址:https://windows.php.net/download#php-7.4-nts-vc15-x64),该php库与apache服务器所依赖的运行库均位VC15(VS2017),不必重复安装运行库。截至目前,php的最高版本为8.0,依赖运行库为VS2017/2019,读者们也可以下载使用,配置方法与此相同,这里的库文件和ini路径按照php实际存放路径仿照上述填写即可。
有关php7配置、特性细节,我们下一个小节进行描述。
(约223行左右)再向下看该配置文件,配置管理员邮箱,apache服务器遇到错误时,会向用户显示错误页面,上面会有管理员的邮箱地址,这个地方改为你的邮箱,有助于用户将错误信息及时通过邮件发给你(当然不改也可以,不影响使用)。
(约232行左右)向下看配置文件,此处需要配置服务器名和端口,服务器名是服务器识别自身的一个属性,需要根据实际情况进行配置,如果你前面已经申请了域名,你可以使用域名+端口的形式进行配置,如果没有域名,需要使用IP地址+端口的形式配置。
(约240行左右)此处开始配置网站目录,首先,这里给出了一个全部权限禁止访问的目录配置,而且说明了,你需要在其他目录明确的写出该目录可被访问的权限。这是一个安全配置,即先禁用全部,然后按照需要逐个放开权限,此处无需修改。
(约256行)此处为网站根目录及其访问权限配置,按下图配置即可。
如果还有其他目录,比如虚拟主机中另外端口对应其他目录,对那个目录也需要按上述方法配置权限。(不配置权限也可以在虚拟主机中使用,但可能由于权限太大,导致不可预料的安全问题。)有关此处配置的详细详细,读者可以参考apache相应文档,此处不再赘述。
(约289行)此处是配置apache服务器默认执行文件,即如果用户直接通过浏览器输入一个路径,而不指定具体的访问文件,apache应该解析该路径下的哪个文件呢?
下面两个配置是客户端无法显示*.ht*文件以及错误日志输入路径,按其配置即可(此处注意,如果在虚拟主机配置中配置了错误日志输出文件,则此处对虚拟主机无效,按虚拟主机配置执行)。
(约482行之前)这部分配置主要是错误级别配置、外部路径访问权限配置、压缩文件的支持、错误页面的自定义等,这些保持默认配置即可,并不影响本文所讨论的应用。
(约482行)从这里开始,为apache服务器增强能力配置,配置这部分内容,需要配合conf/extra/目录中其他文件配置。我们在此处需要为配置两个重要的能力:虚拟主机能力和SSL安全链接能力。(此处不做配置,apache服务器运行http协议已经没有问题了)。
虚拟主机主要是解决一个apache服务器运行多个网站的问题,这些网站(即多个网站空间路径)可以使用不同端口、不同地址、不同的域名,我们这里使用的不同的端口。
(约509行)虚拟主机需要增强能力httpd-vhosts的支持,如下图,将httpd-vhosts打开。
虚拟主机文件conf/extra/httpd-vhosts.conf文件的配置本文下面再做详细介绍。
(约525行)这里是这部分要详细介绍的SSL安全链接增强能力的支持。在微信服务号开发中,尤其是自定义菜单的链接,很多时候是需要安全链接的(也就是https链接),因此,这部分是必须要配置的。
请在此处加入下列配置代码,完成SSL能力配置,关于conf/extra/httpd-ssl.conf有关设置细节,在本文后面会有详细描述。
<IfModule ssl_module>
Include conf/extra/httpd-ssl.conf
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
<IfModule http2_module>
ProtocolsHonorOrder On
Protocols h2 h2c http/1.1
</IfModule>
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin: "*"
Header set Access-Control-Allow-Methods: "GET,POST,PUT,DELETE,OPTIONS"
Header set Access-Control-Allow-Headers: "Content-Type"
</IfModule>
该文件最后是关于Fast-CGI的配置,按照默认配置即可,至此,httpd.conf文件讲解和配置完成!
小结:本章详细描述了httpd.conf文件的组成和配置过程,之所以描述的如此详细,就是因为这个文件太重要了,它是apache服务器最重要的配置文件,没有之一!很多apache服务器出现问题,甚至安全问题,都与该文件配置问题相关。本书既然面向0基础的读者,有必要对这个文件进行详细描述,请读者务必数量掌握该文件的配置和重要属性的意义,后期网站出现问题时,可能需要从此处着手排除问题。
(2)extra/httpd-vhosts.conf的配置
extra/httpd-vhosts.conf是apache服务器的增强配置,主要用于配置多个网站空间时,虚拟主机的配置方案。要使extra/httpd-vhosts.conf生效,在前文中提及的httpd.conf必须解除Include conf/extra/httpd-vhosts.conf注释,使其生效。
(如果读者的网站至运行一个网站空间,则不必接触Include conf/extra/httpd-vhosts.conf注释,extra/httpd-vhosts.conf也无需配置也是可以的)
这里我们看一下extra/httpd-vhosts.conf文件的具体内容。
上图中是一个实体服务器上配置两个虚拟主机的例子,按照端口(一个是80端口-默认,一个是5094端口-自定义)不同进行分别配置,在每一个虚拟主机中写明各自的根目录地址,其他信息按照实际填写即可。
(3)extra/httpd-ssl.conf的配置
SSL作为安全链接传输协议,在微信服务号设置时,经常需要用到的。我们将网站配置成为SSL链接,有利于增强数据传输的安全性,这在敏感数据传输时尤为重要。
SSL也是apache服务器增强功能之一,在extra/httpd-ssl.conf进行配置。配置前,需在httpd.conf中打开Include conf/extra/httpd-ssl.conf。
我们下面详细介绍下extra/httpd-ssl.conf。
(约37行)这里是SSL链接默认的监听端口,按照协议要求,默认是443端口,这里无需修改。
(约63行开始)这个配置文件剩下部分是对SSL虚拟主机的配置,与上一个部分虚拟主机的配置相同,根目录、主机名称、错误日志、运行日志的路径是需要配置的,如下
(约74行)打开SSL引擎。
以上配置结束后,其余默认配置即可,你的https网站就可以访问了,但访问时浏览器会出现下列提示:
从英文的错误可以看出,是无效的授权证书错误,因此,我们必须还要配置正确的证书。
证书的获取,可以从腾讯云控制台来获取,具体为“云产品”中,“域名与网站”中选择“SSL证书”。
在“SSL证书”界面选择切换到“我的证书”,选择“申请免费证书”。
弹出的界面中,选择默认的“亚洲诚信”的免费证书即可,然后点击确定。
分步骤填写必要的信息。
验证成功后,在“我的证书”界面,可以查看已申请完成的证书。
点击已经申请完成的证书后面的“下载”将证书下载至本地。下载至本地的文件是一个以网站域名命名的zip压缩文件,将该文件解压后得到1个文本文件和4个文件夹,我们用的是apache服务器,所以我们要使用apache文件夹下的3个证书相关文件进行部署。
将这3个文件放置于服务器中的某个文件路径下,如放置于“C:/MyPHPSite/conf-on1BsW6mX0d/”路径(路径名由读者自定义,在配置文件下一致即可)下,
则
(约94行)将SSL证书文件的路径写成
(约104行)将SSL密钥文件的路径写成
(约116行)将CA认证文件的路径写成
最后,对网站路径访问权限进行配置
(约182行)
此处配置与前述httpd.conf中相应配置相同,请参考本文上述内容。
该配置文件其余部分,从其默认配置即可,至此,文件配置完成。
上述文件配置完成后,在服务器端浏览器中,输入http://127.0.0.1或 https://127.0.0.1 可以访问C:\MyPHPSite\ 下的网页index.php。
本章小结:请熟练掌握apache的配置文件和配置方法,尤其是根目录、访问权限、虚拟主机、安全链接等的定义和配置技巧,从某种程度上来讲,这并不比编写程序要简单。我们不但要会使用工具,我们也要熟悉我们的工具,常见的工具问题,我们应能及时排除,这就是我们花很大篇幅来介绍apache相关配置的意义所在!