安装包准备
PHP安装与配置
php下载
- 解压到安装目录,复制一份php.ini-production并重命名php.ini

修改配置
-
指定扩展路径

-
开启开发常用扩展(根据开发需求自行删掉注释符号
;即可)

安装第三方拓展
安装redis
安装Xdebug
bash
[xdebug]
zend_extension=xdebug
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
xdebug.idekey=PHPSTORM

Apache
下载



- windows下apache安装启动说明文档
- 下载后解压到安装目录里

httpd.conf配置
修改 SRVROOT 改成当前软件实际存放目录

增加默认解析文件

加载PHP
bash
# 加载PHP模块(根据PHP版本调整,如php8.2)
LoadModule php_module "D:/MySoft/php/82/php8apache2_4.dll"
# 指定PHP配置文件路径(好像php8以上可以不用这行)
PHPIniDir "D:/MySoft/php/82"
# 关联PHP文件解析
AddType application/x-httpd-php .php
注意如果是php8以下,则LoadModule php_module需要修改为LoadModule php7_module如php7.4,则应该是
LoadModule php7_module "D:/MySoft/php/74/php7apache2_4.dll"

开启url重写功能
bash
LoadModule rewrite_module modules/mod_rewrite.so

开启ssl以及缓存支持
bash
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

配置ssl缓存
bash
# 优化HTTPS性能:会话缓存
SSLSessionCache shmcb:${SRVROOT}/logs/ssl_scache(512000)
SSLSessionCacheTimeout 300
你想知道配置 SSLSessionCache 和不配置它的核心区别,简单来说:配置后能大幅提升 HTTPS 访问性能、降低服务器负载;不配置则 HTTPS 仍能正常使用,但每次连接都要重新完成 TLS 握手,性能和体验会变差。
一、先理解 TLS 握手的核心成本
当浏览器访问 HTTPS 网站时,客户端和 Apache 之间必须完成「TLS 握手」:
- 双方协商加密算法、验证 SSL 证书、生成会话密钥;
- 这个过程需要消耗 CPU 算力(尤其是证书验证),且单次握手耗时约 100-300ms;
- 如果没有缓存,同一客户端每次访问(甚至刷新页面)都要重新握手。
二、配置 vs 不配置 SSLSessionCache 的核心区别
| 维度 | 配置 SSLSessionCache |
不配置 SSLSessionCache |
|---|---|---|
| TLS 握手方式 | 首次完整握手,后续复用缓存的「会话票证/ID」,仅需"简化握手"(耗时 < 10ms) | 每次访问都要完整 TLS 握手(耗时 100-300ms) |
| 服务器 CPU 负载 | 低(仅首次握手消耗算力) | 高(每次连接都要做证书验证、密钥协商) |
| 客户端访问速度 | 快(简化握手减少延迟) | 慢(每次都要等完整握手) |
| 高并发表现 | 稳定(缓存复用降低资源消耗) | 易卡顿(大量完整握手占用 CPU) |
| 功能可用性 | HTTPS 正常,且性能优化 | HTTPS 功能正常,但无性能优化 |
三、通俗举例(帮你理解)
- 配置了缓存:就像你去咖啡店办了会员卡,第一次进店需要实名登记(完整握手),之后每次进店只需出示会员卡(简化握手),不用重复登记;
- 没配置缓存:每次进店都要重新实名登记、填信息,虽然也能进店消费(HTTPS 能访问),但每次都要花额外时间,咖啡店也需要反复核对信息(服务器耗资源)。
四、补充说明(新手易忽略)
- 不配置也不会报错 :Apache 只是会报
AH01873: Init: Session Cache is not configured警告,但 HTTPS 核心功能不受影响; - 缓存只对"同一客户端"生效:缓存的是客户端和服务器的会话信息,不同客户端之间不共享;
- 缓存大小建议 :
(512000)表示 512KB 缓存空间,足够支撑几千个并发会话,普通网站无需调整;如果是高并发场景(比如每秒数百次 HTTPS 请求),可适当调大(如 1024000)。
总结
- 核心区别 :配置
SSLSessionCache是对 HTTPS 连接的性能优化,而非功能必需------不配置 HTTPS 也能用,但性能差、服务器负载高;配置后能复用 TLS 会话,大幅降低握手耗时和 CPU 消耗; - 使用建议 :只要启用了 HTTPS(
mod_ssl),就建议配置该指令,几乎无成本却能显著提升 HTTPS 体验; - 关键规则 :该指令必须放在全局配置中(如
httpd.conf),不能放在<VirtualHost>内,否则会报语法错误。
配置虚拟主机
增加443端口监听(https)

加载虚拟主机配置

配置虚拟主机
conf/extra/httpd-vhosts.conf
bash
# 1. 80端口http
<VirtualHost *:80>
DocumentRoot "E:/wwwroot/www.test.com"
ServerName www.test.com
ErrorLog "logs/www.test.com-error.log"
CustomLog "logs/www.test.com-access.log" common
</VirtualHost>
# 2. 80端口(HTTP)配置:仅做强制HTTPS跳转,不处理业务
<VirtualHost *:80>
DocumentRoot "E:/wwwroot/www.thinkphp.com/public"
ServerName www.thinkphp.com
ErrorLog "logs/www.thinkphp.com-error.log"
CustomLog "logs/www.thinkphp.com-access.log" common
# 核心:开启重写引擎 + 强制HTTPS跳转规则
RewriteEngine On
# 匹配非HTTPS的请求
RewriteCond %{HTTPS} off
# 跳转到HTTPS地址(301永久重定向,SEO友好)
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [L,R=301]
</VirtualHost>
# 3. 443端口(HTTPS)配置:处理实际业务,必须配置证书
<VirtualHost *:443>
DocumentRoot "E:/wwwroot/www.thinkphp.com/public"
ServerName www.thinkphp.com
ErrorLog "logs/www.thinkphp.com-ssl-error.log"
CustomLog "logs/www.thinkphp.com-ssl-access.log" common
# HTTPS核心配置(替换为你的证书实际路径)
SSLEngine on
# 证书文件(.crt 或 .pem)
SSLCertificateFile "${SRVROOT}/conf/ssl/www.thinkphp.com+3.pem"
# 私钥文件(.key)
SSLCertificateKeyFile "${SRVROOT}/conf/ssl/www.thinkphp.com+3-key.pem"
# 可选:CA证书链(如果是第三方证书,比如Let's Encrypt需要)
# SSLCertificateChainFile "${SRVROOT}/conf/ssl/chain.pem"
# 可选:TP框架需要的重写规则(如果框架伪静态失效可加)
<Directory "E:/wwwroot/www.thinkphp.com/public">
AllowOverride All
Require all granted
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</Directory>
</VirtualHost>
开始安装Apache
管理员打开控制台切换到Apache目录

bash
# 安装
httpd -k install
# 启动
httpd -k start
# 停止
httpd -k stop
# 重启
httpd -k restart
## 访问虚拟域名
注意虚拟域名还需要在C:\Windows\System32\drivers\etc\hosts添加解析127.0.0.1 www.thinkphp.com







