前提开发环境搭建:在官网下载Apache时,会出现选择版本问题,值得注意下载windows版本下的Apache时,下载文件后面带有_V11或者_V14的字体,这个是windows的运行库,可以到微软的官网下载,V11是Visual Studio 2012的运行库,如果安装了VS2012后就不需要再安装V11了。
其次是PHP5的下载,PHP官网下目前最新的版本是PHP7,但是目前用得最多的是PHP5,window下的PHP也区分V11和V14的区别,所以下载apache与PHP时最好是一致的vs运行库版本。
若安装时出现 提示计算机中丢失 VCRUNTIME140.dll 则是因为运行库V14未安装的问题
Apache24的搭建
1.修改httpd.conf文件
我下载的是httpd-2.4.23-x64-vc11-r3.zip,是V11的版本。Apache与tomcat的区别,我稍微提一下,Apache是web服务器,而Tomcat是Apache与Java sun公司的产品,Tomcat是java中selvert的容器,所以最大使用区别是,tomcat的java应用程序的服务器,使用tomcat需要搭建java开发环境jdk。
首先,httpd-2.4.23-x64-vc11-r3.zip解压得到的是Apache24文件夹,修改其下conf文件下的httpd.conf配置文件。
用记事本打开,找到:Define SRVROOT 这一项,将其值修改为Apache解压的目录:
值得注意的是,以后“${SRVROOR}”指Apache的安装目录
· 2.修改端口号
继续在httpd.conf文件中找到以下行,修改其端口号
端口号默认是80端口,我们修改不被占用的端口号,我们可以在d命令行里面输入以下命令查看端口号的使用情况,netstat -ano|findstr "端口号" 。
图中显示了使用8080端口的情况,其中最右边的数字是进程的ID
我们可以tasklist|findstr "进程ID"命令去查看进程ID的具体情况
这里可以看出进程ID1984被apache给占用了
3.修改个人配置文件
其中ServerAdmin是服务器的邮箱、ServerName是服务器的IP(这里可以填写域名地址)
这里下面的内容是关于服务器根目录的权限设置
基本修改以上内容后,就差不多可以了
4.启动Apache
打开CMD窗口,输入:"D:\...\Apache\bin\httpd.exe" -k install -n apache 切记,包含引号。
该命令的意思是,安装apache服务,并将该服务名称命名为apache(你也可以改成别的),回车。 服务安装完毕,完毕后,会自动测试,若有问题,窗口会提示错误,此时,请根据错误自行排查。
正常安装完毕如下图所示: 其中,Errors reported here must be corrected before the service can be started.意思是,若该句话后面有错误信息,则表示服务安装失败,需要先改正错误。若没有,则成功。
5.个人经验
完成上面步骤后,windows服务下就存在了apache服务项
6.浏览器输入http://localhost:端口号
PHP的搭建
首先在搭建php前,我们需要了解php区分线程安全与非线程安全版,线程安全就是在多线程环境下(客户端请求服务器的数量多的情况下,每一个客户端请求就会产生一个线程)也不会出现数据不一致,而非线程安全就有肯能出现数据不一致的情况。
单线程环境就是每次只处理一个线程,一个线程分配一个实例;多线程环境就是每次处理多个线程,但要确保每次分配给线程的实例是一致的;线程安全由于要确保数据的一致性,所以对资源的读写进行了控制,换句话说增加了系统开销。所以在单线程环境中效率比非线程安全的效率要低些,但是如果线程间数据相关,需要保证读写顺序,用线程安全模式。以下列举具体的区别:
1、windows + IIS + FastCGI :使用非线程安全版本。
解释:
以FastCGI方式安装PHP时,PHP拥有独立的进程,并且FastCGI是单一线程的,不存在多个线程之间可能 引发的相互干扰(这种干扰通常都是由于全局变量和静态变量导致的)。由于省去了线程安全的检查,因此使用 FastCGI方式比ISAPI方式的效率更高一些。
2、windows + IIS + ISAPI :使用线程安全版本。
解释:
PHP以ISAPI方式安装时,PHP没有独立的进程,而是作为DLL被IIS加载运行的,即是依附于Web服务器进 程的。当Web服务器运行在多线程模式下(IIS正是这种情况),PHP自然也就运行在多线程模式下。只要是在 多线程模 式下运行,就可能存在线程安全问题,因此应选择PHP的线程安全版本。
3、windows + Apache + PHP(模块) :使用线程安全版本。
解释:
如果你要在Apache中以模块方式安装PHP,则你应该使用PHP的线程安全的版本。原因是当PHP作为 Apache的 模块安装时,PHP没有独立的进程,而是作为模块以DLL的形式被加载到Apache中的,是随Apache的 启动而启动的,而Windows下的Apache为多线程工作模式,因此PHP自然也就运行在多线程模式下。因此,这种 情况下应使用PHP的线程安全版本。
4、windows + Apache + PHP(ISAPI) :使用线程安全版本。
解释:
由于以ISAPI方式来安装PHP时,PHP也没有独立的进程,也是作为模块被加载到Apache中的,因此,同样 也需要使用PHP的线程安全版本。
5、windows + Apache + PHP(FastCGI) :使用非线程安全版本。
解释:
如果你要在Apache中以FastCGI方式使用PHP,则同在IIS中使用FastCGI的PHP的情况一样,你应该使用 PHP的 非线程安全的版本。原因是在Apache中以FastCGI方式安装PHP时,PHP拥有独立的进程,并且 FastCGI是单一线程的,故应使用PHP的非线程安全版本以提高性能。
1.修改Apache的httpd.conf文件
添加php模块支持
我是采用上面的第3种方式:windows + Apache + PHP(模块) :使用线程安全版本;首先打开Apache的httpd.conf文件,在文件末尾添加一下绿色内容,红色部分为解释,不要添加到文件中:
#load php module
#PHP对Apache24支持的动态链接库dll的路径
LoadModule php5_module "G:/MZC/php-5.6.28-Win32-VC11-x64/php5apache2_4.dll"
AddHandler application/x-httpd-php .php .html .htm
# configure the path to php.ini
#PHP的解压根目录
PHPIniDir "G:/MZC/php-5.6.28-Win32-VC11-x64"
添加PHP文件后缀
在 apache 的配置文件约385行,添加 AddType application/x-httpd-php .php
添加后,形如:
.......
TypesConfig conf/mime.types(已有)
.......
AddType application/x-httpd-php .php
......
添加index.php
在 apache 的配置文件约 277行,添加 index.php,形如:
DirectoryIndex index.html index.php
设置时区,找到 ;date.timezone 改为 date.timezone = Asia/Beijing,服务器的时区设置
2. 修改PHP配置文件
将 PHP文件夹目录下的php.ini-development(开发环境,不对外公网开放)或者php.ini-product(产品环境,对外开放,其安全性能更高)二者选其一,复制并修改为 php.ini ,修改内容如下:
第 724行左右, 将 ;extension_dir = "ext" 修改为 extension_dir = " php根目录/ext",windows的斜杠为“/”
第 866行左右,如需要加扩展。只要将 ;extension前的分号去掉即可
3. 重新启动Apache
可在apache的bin目录下双击 'ApacheMonitor',对Apache进行重启,也可以在运行中打开services.msc,重启
4.浏览器中输入,端口号是我自己修改的
额外内容:
在php.ini中找到display_errors = Off,修改为display_errors = On,并且修改error_reporting的值,具体值可以参考百度,也可以默认不改