在上一篇文章中,提到iis与apache共用80端口,但是发现很多问题,例如 IIS网站有支付功能,而微信支付是不支持带有端口的网址的,虽然通过apche代理,在外面看来没有端口,可是内部还是避免不了,所以还是要放弃上一篇使 用的方法

网络上也有很多其他的共用80端口的方法,比如 设置 iis的ip地址与apche的IP地址,并进行绑定,可是感觉毕竟不是最终解决的办法,网络搜罗的办法在此也贴出来

  1. 方法一:
  2. IIS5,多IP下共存,IIS为192.168.0.1,apache为192.168.0.2
  3. c:\Inetpub\Adminscripts
  4. cscript adsutil.vbs set w3svc/disablesocketpooling true
  5. 该命令反馈如下disablesocketpooling : (BOOLEAN) True
  6. 重启IIS
  7. Inetpub\AdminScripts>cscript adsutil.vbs set w3svc/disablesocketpooling true
  8. 由于 DisableSocketPooling 在 IIS 6.0 元数据库架构 (MBSchema.xml) 中被定义为有效属性,所以,您仍然可以使用 Adsutil.vbs 设置该属性,但这种设置不起作用。IIS 6.0 中的功能是新增的核心级别驱动程序 HTTP.sys 的一部分。要配置 HTTP.sys,您必须使用 Httpcfg.exe
  9. 方法二:
  10. IIS6,多IP下共存,IIS为192.168.0.1,apache为192.168.0.2
  11. 到2003的CD下的 support/tools/Support.cab。解压出httpcfg.exe文件,COPY到windows/system32/目录下,用法自己看帮助
  12. 命令行
  13. 绑定到某IP: httpcfg set iplisten -i 192.168.0.1
  14. 即命令使用IIS的只监听指定的IP及端口
  15. 查看绑定: httpcfg query iplisten
  16. 删除绑定: httpcfg delete iplisten -i 192.168.0.1
  17. 命令行
  18. net stop Apache2
  19. net stop iisadmin /y
  20. net START Apache2
  21. net START w3svc
  22. 保证iis下的ip设置为全局默认,Apache中httpconf设置listen 192.168.0.2:80,就应该可以两个服务同时运行,相互不冲突了。
  23. IIS的访问地址为http://192.168.0.1,Apache访问地址为http://192.168.0.2
  24. 提醒:IIS要指定为IP地址192.168.0.1 端口80;Apache 设置listen 192.168.0.2:80。关键是IIS用httpcfg命令绑定后,要重启系统,仅仅重启服务是不行的。
  25. 方法三:
  26. 将apache设为使用80端口,IIS使用其它端口,比如81,然后将apache作为IIS的代理。
  27. 在httpd.conf里面,取消下面四行的注释:
  28. LoadModule proxy_module modules/mod_proxy.so
  29. LoadModule proxy_connect_module modules/mod_proxy_connect.so
  30. LoadModule proxy_http_module modules/mod_proxy_http.so
  31. LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
  32. 然后建立一个虚拟主机,将该域名的所有访问转向81端口。
  33. ServerName iloves.vicp.net
  34. ProxyPass / http://localhost:81/
  35. ProxyPassReverse / http://localhost:81/
  36. 这样,对外就可以只需要一个端口,即可同时使用apache和IIS的功能了
  37. 方法四:
  38. 网上常用的单IP共用80端口方法,不过不推荐,只是使用Apache的代理,速度有影响将apache设为使用80端口,IIS使用其它端口,比如81,然后将apache作为IIS的代理。
  39. 在httpd.conf里面,取消下面四行的注释:
  40. LoadModule proxy_module modules/mod_proxy.so
  41. LoadModule proxy_connect_module modules/mod_proxy_connect.so
  42. LoadModule proxy_http_module modules/mod_proxy_http.so
  43. LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
  44. 然后建立一个虚拟主机,将该域名的所有访问转向81端口。
  45. ServerName iloves.vicp.net
  46. ProxyPass / http://localhost:81/
  47. ProxyPassReverse / http://localhost:81/
  48. 这样,对外就可以只需要一个端口,即可同时使用apache和IIS的功能了
  49. 类推,使用第二种方法,你可以在IIS上配置PHP4,Apache2中配置PHP5,只需要IIS中安装PHP4,把php.ini复制到\windows目录即可,这个就不用说了吧,Apache2中,只要把PHP5的php.ini放在PHP5安装目录里面就行了
  50. 配置Apache以支持PHP5:
  51. LoadModule php5_module “D:/PHPServer/PHP5/php5apache2.dll”
  52. AddType application/x-httpd-php .php
  53. DirectoryIndex index.html index.php
  54. PHPIniDir “D:/PHPServer/PHP5″
  55. 其中最重要的一条就是 PHPIniDir,用来指明php.ini文件所在位置,即PHP5的安装目录,注意所有目录的应该改为D:/PHPServer/PHP5这种格式,而非D:\PHPServer\PHP5,IIS的访问地址为http://192.168.0.1,Apache访问地址为http://192.168.0.2

思来想去,还是决定使用IIS部署PHP,这样可以一劳永逸,而且如果以后有其他的语言,比如asp等,也都继续考虑使用IIS发布

一、安装PHP环境 
1、打开php官网,下载PHP5.6环境; 
2、点击DownLoad,找到5.6或其他版本,点windows download;

3、根据电脑对应系统的版本下载Non Thread Safe(非线性安全),Apach对应下载Thread Safe(线性安全); 

下载出来的文件 php-5.6.28-nts-Win32-VC11-x64.zip

注意的是,在选择php版本的时候,注意最好与你原项目的版本一致,否则可能会一直报错,导致不知道什么原因,我就是因为直接选择了最高的php版本,导致程序一直报错,切记

在上面的都设置完成之后,注意要等待一会儿,网站才能正常访问

4、压缩包解压后,找到php.ini-development或php.ini-production文件,选择其中一个复制一份改名为php.ini,用记事本打开,找到 ;extension_dir,,改为 extension_dir = “D:\php\php-5.6.30-nts-Win32-VC11-x64\ext”,找到;extension=php_bz2.dll等以;extension=开头处,去掉对应开头的”;”,这里的”;”相当于c#中的注释,去掉”;”即相当于去掉注释,使对应的项目变为可用; 
 
 
二、配置IIS6 
1、IIS选中部署的网站,双击右侧的处理程序映射,点击右侧操作中的添加模块映射,请求限制中勾选文件或文件夹选择项; 
 
 
 
2、下载VC++2012运行库,这步必不可少: 
php5.5系列x86地址:http://www.upupw.net/website/n33.html 
php5.5系列x64地址:http://www.upupw.net/website/n43.html

vcredist_x64.exe

亲测地址可能要多打开几次才有效,打开后点击“云端下载”; 
三、检测效果: 
1、在本地打开部署在IIS上的网站; 
2、可能会出现这样的问题:未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“; 
3、 根据MSDN的解释:如果安装了 .NET Framework 4,随后启用了 .NET Framework 3.5WCF HTTP 激活,则会发生此错误。 
4、解决办法:若要解决该问题,请在 Visual Studio 2010 命令提示符下运行下面的命令行:aspnet_regiis.exe -i -enable或在cmd中运行:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i -enable;

注意的是,在选择php版本的时候,注意最好与你原项目的版本一致,否则可能会一直报错,导致不知道什么原因,我就是因为直接选择了最高的php版本,导致程序一直报错,切记

在上面的都设置完成之后,注意要等待一会儿,网站才能正常访问

接下来就是安装mysql了

第一步:下载安装包

下载 地址:http://www.mysql.com/

   

截止到目前(2016/7/24) ,官网的最新版本是5.7.13,不过自己没有使用该版本,下载的是之前的版本5.6.31。

平台默认为Windows。

mysql-5.6.37-winx64.zip

确认自己的机器字长,点击download即可。

第二步:解压

解压之后可以将该文件夹改名,放到合适的位置。我是将文件夹改名为MySQL Server 5.6,放到D:\Program Files\MySQL路径中。当然你也可以放到自己想放的任意位置。

第三步:配置(不要急着使用,最好先配置)

配置环境变量PATH后,以后打开mysql就可以不用切换目录。原理:简单来说,环境变量里面的PATH,就是cmd系统的查找目录路径。你输入一个指令,系统怎么知道这个指令有没有呢?系统是怎么做的?其实系统是在当前目录和系统环境变量PATH里面的路径里进行查找,以找到的第一个为准,找不到就报错。所以设置PATH之后,可以省去每次用命令切换目录的麻烦。 打个比方:系统就像一辆公交车,按着既定的路线走。环境变量里面的路径就是行驶路线。到了一个站(找到第一个目录)就下车(运行)。

过程:计算机—>系统属性—>高级系统配置—>环境变量

选择PATH,在其后面添加: 你的mysql bin文件夹的路径 (如:我的是:D:\Program Files\MySQL\MySQL Server 5.6\bin ) 修改后的PATH为:

PATH=…….;D:\Program Files\MySQL\MySQL Server 5.6\bin (需注意:1.必须在原有PATH后加英文输入下的分号;2.是追加,不是覆盖。)

第四步:修改配置文件

配置完环境变量之后先不要启动mysql,还需要修改一下配置文件,mysql-5.6.1X默认的配置文件是在D:\Program Files\MySQL\MySQL Server 5.6\my-default.ini,可以自己再建立一个my.ini文件,在其中修改配置:

[mysqld] basedir=C:\Program Files\MySQL\MySQL Server 5.6(mysql所在目录) datadir=C:\Program Files\MySQL\MySQL Server 5.6\data (mysql所在目录\data)

mydefault.ini内容如下:

my.ini内容如下:

第五步:安装mysql

首先,以管理员身份运行cmd(必须以管理员身份运行,否则权限不够,会出错)

接着,进入D:\Program Files\MySQL Server 5.6\bin目录,

然后,执行命令mysqld –install,若无错,则会提示安装成功。

注:若之前安装过mysql,但由于某种原因未卸载干净,当再次安装mysql时,会提示此服务已存在。可用sc delete mysql命令,删除之前的版本,再执行mysqld –install命令。

第六步:启动mysql服务器

在cmd中 输入net start mysql 命令。

第七步:登录mysql

在cmd中,输入 mysql -u root -p,第一次登录没有密码,直接回车,登陆成功。

退出mysql的命令是exit 。直接关闭cmd窗口是没有退出的,要输入exit才会退出。

IIS部署PHP项目并与mysql完美结合的更多相关文章

  1. 通过IIS部署Flask项目

      本文主要介绍在Windows Server 2012R2上通过IIS部署Flask项目的过程,以及对TTFB延迟大问题的思考.关于如何申请云服务器,注册(子)域名,备案,开放云服务器端口,获取SS ...

  2. IIS部署php项目——discuz论坛

    1.安装CgiModule模块 首先,IIS要部署php项目,需要CgiModule模块的支持,所以首先我们要确认这个模块是否存在 打开IIS管理器: 我这里是存在的: 如果不存在,可以自行在控制面板 ...

  3. IIS部署.NET项目的有关事项_2015.07.02

    今天在做项目中的关于发送邮件的一些功能.在部署服务的时候遇到了一些奇葩的问题,基本上是和IIS有关的问题. 首先,项目是基于.NET Framework4.0 版本的,由于本人用的是一台新配置好的机器 ...

  4. iis部署php项目

    今天跟着学习了如何在IIS下部署php项目,操作很简单,记录一下步骤! 1.启动iis服务器 最后点击确定就完成了 2.打开iis 点击进入即可 3.创建网站 进入添加网站. 添加注意事项如图所示! ...

  5. [转]iis部署php项目

    阅读目录 1.启动iis服务器 2.打开iis 3.创建网站 4.php设置 ①添加默认文档 ②处理程序映射 1.安装urlrewrite 2.使用URL重写 今天跟着学习了如何在IIS下部署php项 ...

  6. IIS部署Python-django项目

    1.安装CgiModule模块 首先,IIS要部署django项目,需要CgiModule模块的支持,所以首先我们要确认这个模块是否存在 打开IIS管理器: 我这里是存在的: 如果不存在,可以自行在控 ...

  7. 在腾讯云&阿里云上部署JavaWeb项目(Tomcat+MySQL)

    之前做项目都是在本地跑,最近遇到需要在在云服务器(阿里云或者腾讯云都可以,差不多)上部署Java Web项目的问题,一路上遇到了好多坑,在成功部署上去之后写一下部署的步骤与过程,一是帮助自己总结记忆, ...

  8. 解决微信浏览器缓存站点入口文件(IIS部署Vue项目)

    最近开发的微信公众号项目中(项目采用Vue + Vux 构建,站点部署在IIS8.5上),遇到个非常奇葩的问题,发布站点内容后,通过微信打开网址发现是空白页面(后来验证是微信浏览器缓存了入口文件-in ...

  9. 云服务器部署Python项目(nginx+uwsgi+mysql+项目)

    python项目部署到云服务器 关注公众号"轻松学编程"了解更多. 一.硬件准备 云服务器,系统ubuntu_16_04 . 注意:要在安全组中开放Http的80端口. 二.软件准 ...

随机推荐

  1. Servlet线程安全 Filter http://zwchen.iteye.com/blog/91088

    概述 在探讨java线程安全前,让我们先简要介绍一下Java语言. 任何语言,如C++,C#,Java,它们都有相通之处,特别是语法,但如果有人问你,Java语言的核心是什么?类库?关键字?语法?似乎 ...

  2. SharePoint2013导入Excel到列表

    using Microsoft.SharePoint; using System; using System.Collections.Generic; using System.ComponentMo ...

  3. (转)Unity3d游戏开场CG动画播放方式

    1.在一个plane上播放 1 2 3 4 5 6 7 8 9 10 11 12 using UnityEngine; using System.Collections; public class M ...

  4. PHP中通过数组遍历找出最小值

    举例: $a = array(1,2,4,0,9,8,6);//定义一个数组 $len = count($a);//获取数组的长度 $min = $a[0];//默认情况下数组的第一个值是最小的 fo ...

  5. NodeJS版本EasyDarwin开源流媒体服务器开发心得

    title: Node版本EasyDarwin开发心得 date: 2018-03-27 22:46:15 tags: 年后着手Node版本EasyDarwin的开发工作,截止到今天2018年03月2 ...

  6. LibSvm添加到Matlab

    1.下载libSVM工具包 http://pan.baidu.com/s/1bnGNTBT或者下载最新版的到http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 2.解压 ...

  7. 常用代码块:创建httpclient 2

    HttpGet httpGet = new HttpGet(url);SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(ne ...

  8. python函数回顾:setattr()

    描述 setattr 函数对应函数 getatt(),用于设置属性值,该属性必须存在. 语法 setattr 语法: setattr(object, name, value) 参数 object -- ...

  9. A Simple Web Server

    介绍 在过去20几年里,网络已经在各个方面改变了我们的生活,但是它的核心却几乎没有什么改变.多数的系统依然遵循着Tim Berners-Lee在上个世纪发布的规则.大多数的web服务器都在用同样的方式 ...

  10. Unity3D游戏开发从零单排(六) - 人物运动及攻击连击

    提要 今天要实现的是一个简单人物控制器. 包括用w,a,s,d来控制人物上下左右跑动,鼠标左击发出连招,都是基于老的lagacy的动画.尽管unity3d自带有charactorcontroller, ...