Apache

推荐链接

链接目录

查找旧版本的几种方法

https://www.apachelounge.com/

在这里插入图片描述

在这里插入图片描述

这里尤其是要注意上面的链接,如果点击搜索搜索不出来对应的版本,那么找一个类似的版本,看头上链接的规律,那么有很大几率搜索出来

Windows下Apache安装步骤

Apache配置文件httpd.conf

ServerRoot "/apache" #你的apache软件安装的位置。其它指定的目录如果没有指定绝对路径,则目录是相对于该目录。 

Listen 80 #服务器监听的端口号。 

ServerName localhost:80 #主站点名称(网站的主机名)。 

DocumentRoot "/web/" #主站点的网页存储位置。 也就是你PHP项目存放的路径,例如wampserver的根路径是 "/wamp64/www"

<Directory "D:/wamp64/www">

ScriptAlias /cgi-bin/ "/cgi-bin/"

<Directory "D:/wamp64/Apache24/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

#引用PHP和apache的集成包
LoadModule php5_module "D:/wamp64/bin/php/php5.6.25/php5apache2_4.dll" #如果没有集成包,可以在网上找类似的so文件,网上有相应教程
AddHandler application/x-httpd-php.php
PHPIniDir "D:\wamp64\bin\php\php5.6.25" #php.ini存在的目录


#如果PHP成功运行,但是网站url报错,可以试着修改下面的代码
LoadModule rewrite_module modules/mod_rewrite.so
AllowOverride All


<IfModule dir_module>
    #DirectoryIndex index.html
      DirectoryIndex index.php index.php3 index.html index.htm
</IfModule>
<Directory> 
配置块通常用于对特定目录应用自定义配置,以满足特定需求。你可以在 <Directory> 块中设置一系列的指令,这些指令将仅适用于被指定的目录及其子目录。
以下是一些常见的 <Directory> 块中使用的指令:
Options: 设置目录的选项,如 Indexes(启用目录索引)、FollowSymLinks(跟随符号链接)等。
AllowOverride: 指定是否允许使用 .htaccess 文件来覆盖全局配置,以实现特定目录的自定义配置。
Require: 定义访问控制规则,指定哪些用户或来源可以访问目录中的内容。
DirectoryIndex: 指定目录索引文件的名称,默认情况下,Apache 在访问一个目录时会尝试加载文件列表或默认文件(如 index.html、index.php)。
AddHandler、SetHandler: 用于设置特定文件类型的处理程序,如 PHP 脚本的处理程序。
RewriteRule: 定义 URL 重写规则,用于重定向或修改请求 URL 的行为。



<IfModule dir_module> 
表示一个条件块,用于检查是否加载了 dir_module 模块。如果该模块已加载,条件块中的指令将生效。
DirectoryIndex index.html
这个指令指定了默认的目录索引文件名称为 index.html。当用户请求一个目录时(例如 http://example.com/),如果在该目录中存在 index.html 文件,Apache 将返回该文件作为默认响应。

Windows下Apache部署SSL证书让网站支持https的配置方法(自签证书)

如果是集成环境,一般情况下会自带openssl,如果按照上文下载apache.zip进行配置,请检查是否配置了相应文件,
[Apache安装目录]/modules/ mod_ssl.so
[Apache安装目录]/bin/ openssl.exe, libeay32.dll, ssleay32.dll, openssl.cnf
[Apache安装目录]/conf/ openssl.cnf
如果bin目录下没有openssl.cnf,需要将conf下的openssl.cnf拷贝一份到bin目录下

步骤一
备份,备份,备份(重要的事情说三遍)
[Apache安装目录]/modules
[Apache安装目录]/bin
[Apache安装目录]/conf
文件夹下面的建议全部备份一遍

步骤二

在httpd.conf 中添加下列两行(有的话把文件前面的注释“#”符号去掉)
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf

在遇见:"Syntax error on line 76 of C:/apache/conf/extra/httpd-ssl.conf:SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?)."
错误时候可以尝试将下面这个的# 去除
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

步骤三
日志的路径很重要,很重要,一定要根据自己安装的apache路径来定,一帮情况下,报错都是日志路径设置错误

在conf\extra目录下,编辑 httpd_ssl.conf
Listen 443
SSLPassPhraseDialog builtin
SSLSessionCache "dbm:D:/wamp64/Apache24/logs/ssl_scache"
#SSLSessionCache "shmcb:D:/wamp64/Apache24/logs/ssl_scache(512000)"
(以上2种请自行监测,如有一种导致服务器启动不了,就换成另一种)

#下面带路径的都要注意,最好用绝对路径,server.crt和server.key这个就是openssl进行生成的,名称可以随意修改
<VirtualHost _default_:443>
	DocumentRoot "D:/wamp64/www"
	ServerName localhost:443
	ServerAdmin admin@example.com
	ErrorLog "D:/wamp64/logs/apache_error.log"
	TransferLog "D:/wamp64/logs/access.log"
	
	SSLEngine on
	SSLCertificateFile "D:/wamp64/bin/apache/apache2.4.23/conf/server.crt"
	SSLCertificateKeyFile "D:/wamp64/bin/apache/apache2.4.23/conf/server.key"
	
	<FilesMatch "\.(cgi|shtml|phtml|php)$">
	SSLOptions +StdEnvVars
	</FilesMatch>
	<Directory "D:/wamp64/Apache24/cgi-bin">
	SSLOptions +StdEnvVars
	</Directory>
</VirtualHost>      

步骤四
CMD,进入到Apache安装目录下的bin目录下(权限不足可以使用PowerShell打开,权限还不足就右键目录:属性->安全->编辑)在这里插入图片描述

set OPENSSL_CONF=..\conf\openssl.cnf #临时设置了 OPENSSL_CONF 环境变量,只在当前的命令行会话中有效

openssl genrsa 1024 >server.key
openssl req -new -config openssl.cnf -key server.key >server.csr

之后就会要求输入一系列的参数:

#'Common Name建议和httpd.conf中serverName必须一致,否则有可能导致apache不能启动'

Country Name (2 letter code) [AU]:CN  国家代码(只支持两位字符)这里我填CN
State or Province Name (full name) [Some-State]: 所在省份
Locality Name (eg, city) []: 所在城市
Organization Name (eg, company): (组织名称)
Organizational Unit Name (eg, section) []: (组织单位名称)
Common Name (eg, YOUR name) []: localhost:80	申请证书的域名(建议和httpd.conf中serverName必须一致,不然可能会有未知错误)
Email Address []: 管理员邮箱
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: 交换密钥
An optional company name []: (可选的公司名称)


openssl req -x509 -days 5000 -config openssl.cnf -key server.key -in server.csr >server.crt

#执行完上面命令可以获得 server.crt、server.csr、server.key

步骤五
在bin 目录下,找到server.crt、server.csr、server.key三个文件,将此三个文件剪切到Apache的conf目录下。
然后重启apache
(PS:如果你自己在系统->关于->高级系统设置->环境变量) 里面设置了一些关于apache和openssl的环境变量,切记一定要重启电脑

Windows下 Apache配置虚拟主机

物理主机hosts文件位于(C:\Windows\System32\drivers\etc)

[Apache安装目录]在这里插入图片描述

多端口配置(IP不变而不同项目使用不同端口)

[Apache安装目录]\conf\httpd.conf

//进入conf文件夹下面的httpd.conf 文件,找到下面两句话,将	# 去除
#LoadModule rewrite_module modules/mod_rewrite.so
#Include conf/extra/httpd-vhosts.conf

//Listen 指令,它指定了 Apache 监听的端口。默认情况下,它通常是 Listen 80。
//在它下面添加一个新的 Listen 指令来指定额外的端口。
Listen 8081

[Apache安装目录]\conf\extra\httpd-vhosts.conf

/**
<VirtualHost *:80>: 定义了一个虚拟主机,它监听所有传入的请求(*)并使用端口 80。这表示该虚拟主机将处理通过 HTTP(非加密)协议访问的请求。
正常情况,系统已经有80端口了。需要做的事情就是原本的拷贝一份到下面,然后修改对应端口和虚拟主机的根目录就可以了,其他的不用修改。
*/

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>


<VirtualHost *:8081>
    ServerAdmin "指定了服务器管理员的电子邮件地址"
    DocumentRoot "虚拟主机的根目录,即服务器上该虚拟主机的网站文件的存放位置"
    ServerName "虚拟主机的主机名。这是用户在浏览器中输入的域名或 IP 地址,用于访问该虚拟主机"
    ErrorLog "错误日志文件的路径和文件名。当发生错误或警告时,Apache 将在这个文件中记录错误信息"
    CustomLog "访问日志文件的路径和文件名,以及要记录的日志格式"
</VirtualHost>

Apache开启Gzip压缩

[Apache安装目录]/conf/httpd.conf

'打开此文件查找如下三行代码,前面没有#符号即为正常的,若是有#符号则表示被注释掉了,删除前面的#符号即可'
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule filter_module modules/mod_filter.so


'在 Apache 配置文件 httpd.conf 的最后添加:'
<IfModule deflate_module>
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|doc|avi|mov|mp3|rm)$ no-gzip dont-vary
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
/**
IfModule deflate_module 是判断如果 deflate_module 模块加载的话,执行里面的配置。
SetOutputFilter DEFLATE 是设置输出为 deflate 压缩算法。
SetEnvIfNoCase Request_URI 是排除一些常见的图片,影音,文档等类型的后缀,不压缩。
AddOutputFilterByType DEFLATE 是对常见的文本类型,如html,txt,xml,css,js做压缩处理。
*/
//PHP中校验是否开启了gzip压缩
<?php
$isGzipEnabled = false;

if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
    $isGzipEnabled = true;
}

if ($isGzipEnabled) {
    echo "Apache 开启了 gzip 压缩。";
} else {
    echo "Apache 没有开启 gzip 压缩。";
}
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值