下载 Apache windows 编译版
有两个网站提供 windows 环境的编译版下载
本文下载的版本:httpd-2.4.46-win64-VS16
下载 PHP5.6.40
与 nginx 不一样,Apache 要下载线程安全版,即 ts 版。
在官方的下载页面,已经找不到5.x的版本了,只能到 php 所有版本下载列表页面 下载
本文下载的,php5.6.40 针对 Apache 的版本:php-5.6.40-Win32-VC11-x64
配置 PHP5.6.40
将 PHP 解压至目录:c:/dev/php5.6.40-TS
复制 php.ini-development 为 php.ini,修改配置。
以后如果需要修改 php.ini, 修改之后,重启 apache 服务即可生效。
常规配置
找到下面的配置项,并作相应的修改
1
2
3
4
5
6
7
8
9
10error_log = c:/dev/php5.6.40-TS/logs/php_errors.log
; 以下配置,把前面的注释去掉
extension_dir = "c:/dev/php5.6.40-TS/ext"
date.timezone = "Asia/Shanghai"
cgi.fix_pathinfo=1
extension=php_gd2.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll在 [opcache] 下面添加如下配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16; dll地址
zend_extension=php_opcache.dll
; 开关打开
opcache.enable=1
; 开启CLI
opcache.enable_cli=1
; 可用内存, 酌情而定, 单位为:Mb
opcache.memory_consumption=528
; Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)
opcache.interned_strings_buffer=8
; 对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值
opcache.max_accelerated_files=10000
; Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 单位为秒
opcache.revalidate_freq=1
; 打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高
opcache.fast_shutdown=1
开启 curl
如果需要开启 curl,还需要做如下操作:
- 找到
extension=php_curl.dll
,把前面的注释去掉。 - 把 PHP 根目录下的,下面三个文件放到 path 环境变量包含的目录下,或者直接复制到 Apache 下的 bin 目录下也行。
- libeay32.dll
- ssleay32.dll
- libssh2.dll
- 重启 Apache
查看 puhInfo()
,curl 如下:
配置 XDebug
下载列表,找到对应的版本,记得是针对 PHP 5.6 线程安全版(带 ts 的版本)
本文下载的版本:php_xdebug-2.5.5-5.6-vc11-x86_64.dll
下载之后,剪切至 PHP 的 ext 目录,在 php.ini 最后添加如下信息:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30[xdebug]
zend_extension = c:/dev/php5.6.40-TS/ext/php_xdebug-2.5.5-5.6-vc11-x86_64.dll
;开启远程调试
xdebug.remote_enable=1
xdebug.profiler_enable=1
;xdebug.profiler_enable=off
xdebug.profiler_enable_trigger=off
xdebug.profiler_output_name=cachegrind.out.%t.%p
xdebug.profiler_output_dir="tmp"
xdebug.show_local_vars=0
xdebug.remote_connect_back=1
;开启自动跟踪
xdebug.auto_trace=1
;开启异常跟踪
xdebug.show_exception_trace=1
;开启异常跟踪
xdebug.remote_autostart=1
;收集变量
xdebug.collect_vars=1
;收集参数
xdebug.collect_params=1
;trace输出路径
xdebug.trace_output_dir="tmp/xdebug"
;以下三个分别是主机、端口、句柄
xdebug.remote_host="localhost"
;注意,这里的端口,在 nginx 环境需要手动运行 php-cgi,而php-cgi 的商品默认为 9000,所以这里需要配置 xcebug 为不同的端口。
;但在 Apache 环境,不需要运行 php-cgi,所以,不存在端口冲突,用 xdebug 的默认端口 9000 即可,这样也不用修改 PHPStorm 的配置。
;xdebug.remote_port=9001
xdebug.remote_handler="dbgp"
配置 Apache 支持 PHP
nginx 支持 PHP 需要先运行 php-cgi,而 Apache 只要配置好就可自动支持 php。
在 http.conf 文件中 LoadModule 的最后一行添加如下内容:
1
2
3
4
5
6# added manual
Define PHPROOT c:/dev/php5.6.40-TS
LoadModule php5_module ${PHPROOT}/php5apache2_4.dll
AddType application/x-httpd-php .php .html .htm
PHPIniDir ${PHPROOT}
LoadFile ${PHPROOT}/libssh2.dll#ServerName www.example.com:80
,改为:ServerName localhost:80
DirectoryIndex index.html
改为DirectoryIndex index.php index.html
配置 Apache 的虚拟主机
找到下面的配置,去掉前面的#
,配置虚拟主机需要用到 httpd-vhosts.conf1
Include conf/extra/httpd-vhosts.conf
修改 httpd-vhosts.conf,添加如下内容
建议:将 php 项目都放到变量 devProjectRoot 指定的目录下,这个目录下的子目录不用单独配置访问权限,否则需要单独配置目录访问权限。1
2
3
4
5
6
7
8
9
10
11
12
13Define devProjectRoot "C:/workspace/php"
<Directory "${devProjectRoot}">
AllowOverride None
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot "${devProjectRoot}/dz"
ServerName dz.dev.com
ErrorLog "logs/dz.dev.com-error.log"
CustomLog "logs/dz.dev.com-access.log" common
</VirtualHost>
完整配置一个虚拟主机
以一个静态网站为例1
2
3
4
5
6
7
8
9
10
11
12Define 5k8Root "C:/workspace/5k8.top"
<Directory "${5k8Root}/public">
AllowOverride None
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot "${5k8Root}/public"
ServerName docs.5k8.top
ErrorLog "logs/docs.5k8.top-error.log"
CustomLog "logs/docs.5k8.top-access.log" common
</VirtualHost>
一个网站多个域名
nginx 可以直接绑定多个域名,用空格隔开即可,Apache 需要通过 ServerAlias 来添加额外的域名,如下:1
2
3
4
5
6
7<VirtualHost *:80>
DocumentRoot "${5k8Root}/public"
ServerName docs.5k8.top
ServerAlias www.5k8.top doc.5k8.top
ErrorLog "logs/docs.5k8.top-error.log"
CustomLog "logs/docs.5k8.top-access.log" common
</VirtualHost>
安装 VC11 运行库
暂时没有找到官网下载地址,请自行百度并下载,或者从这里下载:链接:https://pan.baidu.com/s/1qSSk4AzcaEQxWxjCTVVWEQ 提取码:8fu2
安装 Apache 作为 windows 服务
以管理员身份运行 cmd,进入 Apache 的解压目录下的 bin 目录,执行命令 httpd -k install -n Apache
1
2
3
4
5C:\dev\Apache24\bin>httpd -k install -n Apache
Installing the 'Apache' service
The 'Apache' service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.
对应的卸载命令:
httpd -k uninstall -n Apache
请忽略最后一行带 Errors 的提示: Errors reported here must be corrected before the service can be started.
,这一行只是一个提示,意思是在服务启动前,必须把这里显示的错误改好,如果下面没有别的提示,则表示配置已经成功了。
启动 apache 服务:1
2
3C:\dev\Apache24\bin>net start apache
Apache 服务正在启动 ...
Apache 服务已经启动成功。
检查 Apache 的配置是否正确
使用命令:httpd.exe -n "apache" -t
1
2C:\dev\Apache24\bin>httpd.exe -n "apache" -t
Syntax OK
c:\dev\Apache24\bin\httpd.exe -n "apache" -t
配置 ssl 站点(https 开头,非 http 开头)
- 准备好针对 Apache 的证书,建议放到 Apache 根目录下的 cert 目录,后面的配置信息会指到这个目录下
修改 httpd.conf,去掉下面配置项前面的注释,就是去掉前面的
#
号1
2LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so在
conf/extra
目录添加一个用于配置 ssl 站点的文件,比如:httpd-vhosts-ssl.conf
- 在 httpd.conf 下添加一行:
Include conf/extra/httpd-vhosts-ssl.conf
- 修改
httpd-vhosts-ssl.conf
,添加站点配置,例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19Listen 443
Define devProjectRoot "C:/workspace/php"
Define certRoot "C:/dev/Apache24/cert"
<Directory "${devProjectRoot}/">
AllowOverride all
Require all granted
</Directory>
<VirtualHost *:443>
DocumentRoot "${devProjectRoot}/wkb-oms-client"
ServerName pdd.wangkebao.net:443
SSLEngine on
SSLCertificateFile ${certRoot}/5973377_pdd.wangkebao.net_public.crt
SSLCertificateKeyFile ${certRoot}/5973377_pdd.wangkebao.net.key
SSLCertificateChainFile ${certRoot}/5973377_pdd.wangkebao.net_chain.crt
ErrorLog "logs/pdd.wangkebao.net-error.log"
CustomLog "logs/pdd.wangkebao.net-access.log" common
</VirtualHost>