在上一篇文章中,提到iis與apache共用80端口,但是發現很多問題,例如 IIS網站有支付功能,而微信支付是不支持帶有端口的網址的,雖然通過apche代理,在外面看來沒有端口,可是內部還是避免不了,所以還是要放棄上一篇使 用的方法
網絡上也有很多其他的共用80端口的方法,比如 設置 iis的ip地址與apche的IP地址,並進行綁定,可是感覺畢竟不是最終解決的辦法,網絡搜羅的辦法在此也貼出來
- 方法一:
- IIS5,多IP下共存,IIS為192.168.0.1,apache為192.168.0.2
- c:\Inetpub\Adminscripts
- cscript adsutil.vbs set w3svc/disablesocketpooling true
- 該命令反饋如下disablesocketpooling : (BOOLEAN) True
- 重啟IIS
- Inetpub\AdminScripts>cscript adsutil.vbs set w3svc/disablesocketpooling true
- 由於 DisableSocketPooling 在 IIS 6.0 元數據庫架構 (MBSchema.xml) 中被定義為有效屬性,所以,您仍然可以使用 Adsutil.vbs 設置該屬性,但這種設置不起作用。IIS 6.0 中的功能是新增的核心級別驅動程序 HTTP.sys 的一部分。要配置 HTTP.sys,您必須使用 Httpcfg.exe
- 方法二:
- IIS6,多IP下共存,IIS為192.168.0.1,apache為192.168.0.2
- 到2003的CD下的 support/tools/Support.cab。解壓出httpcfg.exe文件,COPY到windows/system32/目錄下,用法自己看幫助
- 命令行
- 綁定到某IP: httpcfg set iplisten -i 192.168.0.1
- 即命令使用IIS的只監聽指定的IP及端口
- 查看綁定: httpcfg query iplisten
- 刪除綁定: httpcfg delete iplisten -i 192.168.0.1
- 命令行
- net stop Apache2
- net stop iisadmin /y
- net START Apache2
- net START w3svc
- 保證iis下的ip設置為全局默認,Apache中httpconf設置listen 192.168.0.2:80,就應該可以兩個服務同時運行,相互不沖突了。
- IIS的訪問地址為http://192.168.0.1,Apache訪問地址為http://192.168.0.2
- 提醒:IIS要指定為IP地址192.168.0.1 端口80;Apache 設置listen 192.168.0.2:80。關鍵是IIS用httpcfg命令綁定后,要重啟系統,僅僅重啟服務是不行的。
- 方法三:
- 將apache設為使用80端口,IIS使用其它端口,比如81,然后將apache作為IIS的代理。
- 在httpd.conf里面,取消下面四行的注釋:
- LoadModule proxy_module modules/mod_proxy.so
- LoadModule proxy_connect_module modules/mod_proxy_connect.so
- LoadModule proxy_http_module modules/mod_proxy_http.so
- LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
- 然后建立一個虛擬主機,將該域名的所有訪問轉向81端口。
- ServerName iloves.vicp.net
- ProxyPass / http://localhost:81/
- ProxyPassReverse / http://localhost:81/
- 這樣,對外就可以只需要一個端口,即可同時使用apache和IIS的功能了
- 方法四:
- 網上常用的單IP共用80端口方法,不過不推薦,只是使用Apache的代理,速度有影響將apache設為使用80端口,IIS使用其它端口,比如81,然后將apache作為IIS的代理。
- 在httpd.conf里面,取消下面四行的注釋:
- LoadModule proxy_module modules/mod_proxy.so
- LoadModule proxy_connect_module modules/mod_proxy_connect.so
- LoadModule proxy_http_module modules/mod_proxy_http.so
- LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
- 然后建立一個虛擬主機,將該域名的所有訪問轉向81端口。
- ServerName iloves.vicp.net
- ProxyPass / http://localhost:81/
- ProxyPassReverse / http://localhost:81/
- 這樣,對外就可以只需要一個端口,即可同時使用apache和IIS的功能了
- 類推,使用第二種方法,你可以在IIS上配置PHP4,Apache2中配置PHP5,只需要IIS中安裝PHP4,把php.ini復制到\windows目錄即可,這個就不用說了吧,Apache2中,只要把PHP5的php.ini放在PHP5安裝目錄里面就行了
- 配置Apache以支持PHP5:
- LoadModule php5_module “D:/PHPServer/PHP5/php5apache2.dll”
- AddType application/x-httpd-php .php
- DirectoryIndex index.html index.php
- PHPIniDir “D:/PHPServer/PHP5″
- 其中最重要的一條就是 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才會退出。