wexin

[笔记]windows64配置php、apache、mysql的环境

1. 安装php和apache

windows下的php安装文件从http://windows.php.net/download可以获得。从当前该站点提供的可供下载的php windows版本来看,有以下版本可用:

image

先搞清选哪个版本。X86和X64代表适用32位还是64的操作系统。VC11和VC14,Thead Safe与Non Thead Safe含义不明确,官方说明如下:

image

image

综上,如果是跟apache一起用,就要选TS(Thead Safe);如果跟IIS一起用,就要选NTS(Non Thead Safe)。同时它建议从Apache Lounge去下载apache的安装文件,如果是从apache.org下载的apache安装文件,那么php的安装文件就不能选VC9+及以上的版本,要选VC6的版本。但是最前面给出的可下载版本中没有VC6,只有VC11跟VC14。所以待会得从Apache Lounge去下载apache。VC的含义是:

image

VC9,11,14代表的是这个php安装文件是用Visual Studio的哪个版本编译出来的,比如VC9的安装文件,使用VS2008 SP1编译出来的。

搞清楚这些之后,Php跟apache安装文件的版本就很好选择了。最终php的安装文件选:php-5.6-ts-VC11-x64,apache的安装文件选:httpd-2.4.23-win64-VC11.zip。把这两个文件下载下来,然后解压到本地目录,基本上就算安装完了。

image

2. 简单配置

2.1 php

打开php解压目录,找到php.ini-development,复制一份,命名为php.ini。

image

2.2 apache

打开解压目录,找到conf/httpd.conf文件,复制一份,然后以当天日期改下文件名:

image

apache的配置都在httpd.conf里处理,复制是为了用来备份和对比。

以命令行的形式,进入到解压目录下的bin目录,通过命令来管理apache服务器的状态:

启动:httpd.exe
停止:httpd.exe  stop
重启:httpd.exe  restart

启动前,先打开httpd.conf,把ServerRoot的值改成apache的安装目录。默认情况下这个ServerRoot的值是:

image

不过这个默认值不止ServerRoot这个配置项里面出现了,其它地方也有:

image

所以不能只改ServerRoot,其它地方都得改,采用全部替换:

image

最后再启动服务:

image

看到服务器已经正常启动了,只是有一个类似警告之类的提醒(之后解决)。打开浏览器访问http://localhost/,就能看到apache返回的内容:

image

3. apache配置php

先在apache解压目录的htdoc下新建一个index.php的文件,写入以下内容:

image

由于还未配置php的模块,所以此时如果直接访问这个文件,apache不会把它当成php脚本执行,而是当成文本直接输出:

image

接下来在httpd.conf里,加入这一段代码:

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module "d:/dev/php5.6.28/php5apache2_4.dll"
# configure the path to php.ini
PHPIniDir "d:/dev/php5.6.28"

<IfModule php5_module>
    <FilesMatch "\.ph(p[2-6]?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    RewriteEngine On
    RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
    DirectoryIndex index.html index.php
</IfModule>
复制代码

重启服务器,再访问刚才的Index.php页面:

image

如果看到这个页面,说明php已经配置成功了。

3. apache部署说明

apache默认的部署文件夹为htdoc,It works这个字符串就是由htdoc下的index.html输出的,所以前面在测试Php的时候,要把Index.php也加在htdoc下。

传统部署方式中,一个项目,可以在htdoc下新建一个文件夹来存放代码。多个项目通过url来区分访问,比如localhost/projectA,localhost/projectB。这种方式问题多,不宜在生产环境使用。

apache提供虚拟主机VirtualHost的方式来部署项目,灵活性很强。

默认情况下, 在httpd.conf文件内,apache是通过以下两个关键配置把htdoc部署出来的:

image

DocumentRoot设置这个项目的根路径,Directory可以对这个项目的一些子目录进行自定义的配置。另外还有一个ServerName用来配置应用的名称, 默认情况下SererName被注释了:

image

前面在启动Apache的时候报了一个警告:

image

这个警告就是由于ServerName没有启用引起的。把ServerName改一下并启用,再重新启动,就会发现那个警告不会出现了:

image

image

综上,apache默认情况下会把htdoc部署成为一个应用,并且这个应用的名字由ServerName来指定。简单层面,把一些php项目,丢到htdoc下就能运行。但是更好的方式是使用虚拟主机的方式来部署。

4. 虚拟主机的配置

配置前须知:

httpd.conf中的Listen配置项,可以指定apache监听特定的ip和端口,比如把默认的Listen配置:

image

改成:

image

就可以监听本机任意ip地址的80端口。

虚拟主机的配置,可以不放在httpd.conf里面,apache单独提供了extra/httpd-vhosts.conf文件来配置虚拟主机。在使用httpd-vhosts.conf前,需要在httpd.conf里面启用这个配置文件:

image

把#号去掉就可以了:

image

然后到apache解压目录的extra目录下,找到httpd-vhosts.conf,复制一个备份:

image

再打开httpd-vhosts.conf,清空里面所有的内容,然后粘贴以下的代码:

<VirtualHost *:80>
    ServerName demo1
    DocumentRoot "D:/my/php_demo/demo1"
    <Directory "D:/my/php_demo/demo1">
        Options Indexes
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    ServerName demo2
    DocumentRoot "D:/my/php_demo/demo2"
    <Directory "D:/my/php_demo/demo2">
        Options Indexes
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>
复制代码

以上代码部署两个应用,分别是demo1和demo2。这两个应用的代码分别在D:/my/php_demo/demo1和D:/my/php_demo/demo2。这两个应用很简单,都只包含了一个index.php文件,分别输出demo1和demo2两个字符串,用来验证是否能通过虚拟主机的部署方式正确的访问到项目:

image

image

在以上配置中,两个应用的ServerName分别是demo1和demo2。意味着可以通过http://demo1/和http://demo2/  来访问应用。但是在此之前,还需必须demo1和demo2添加到本机的hosts文件中,才能http://demo1/和http://demo2/ 正确的解析到本机IP:

image

hosts文件位于:C:\Windows\System32\drivers\etc

最后重启apache,分别访问http://demo1/和http://demo2/ ,就能正确访问到两个应用:

imageimage

注意:当采用虚拟主机部署后,默认的htdoc应用就无法通过ServerName来访问了,此时再通过httpd.conf里面的ServerName访问,会被引导到虚拟主机里面配置的第一个应用,所以如果还想要htdoc能继续访问你的话,就得用httpd.conf里面的关于htdoc的配置,另外做成一个虚拟主机来配置。

5. 其它

php.ini文件还有内容需要配置:

image

这个extendsion_dir用来指定php扩展的存放目录,虽然它就在php解压目录的ext目录里面,但是图中的那个配置是错的,尽管它没有启用。实际上要把这个改成启用,把前面的分号去掉,同时还得用绝对路径来指定这个目录的地址:

image

另外如果要通过php访问mysql数据库的话,还得把mysql相关的扩展启用:

image

去掉前面分号即可。

6. 安装mysql

下载社区版本,下载地址:http://dev.mysql.com/downloads/mysql/

image

有两种方式安装mysql。第一种是选msi文件;第二种是下载mysql的压缩包。本次选择直接下载压缩包,卸载的时候方便:http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-winx64.zip

下载完以后,解压:

image

解压后的目录本身是不存在my.ini文件的,需要把my-default.ini复制一个,然后重名为my.ini

打开ini文件,将baseDir和DataDir改成以下内容:

image

分别对应mysql的安装目录以及mysql数据文件的存放目录。

回到Mysql的安装目录,新建一个data文件夹:

image

以管理员打开CMD,然后切换到mysql安装目录的下的bin目录,运行

image

http://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html

运行完毕,mysqld将会在data文件夹下初始化mysqld默认数据库,同时建立root用户,密码为空。

再通过mysqld –console命令启动mysql服务:

image

--console能够看到mysqld启动过程中的错误信息。

启动成功后,新开CMD窗口,使用mysql –u root就能登录服务器了:

image

需把mysql的bin目录添加到path环境变量,以便更简单地执行命令。

 

参考资料:

http://php.net/manual/zh/install.unix.php

http://httpd.apache.org/docs/current/platform/windows.html#winsvc

http://httpd.apache.org/docs/current/configuring.html

http://httpd.apache.org/docs/current/vhosts/

posted @   流云诸葛  阅读(1105)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示