鸿 网 互 联 www.68idc.cn

ServerCore上部署IIS7全程攻略

来源:互联网 作者:佚名 时间:2015-06-04 21:17
—— 全程记录 Server Core 上部署 IIS + PHP FastCGI + MySQL 近段时间由于网站服务器断电而出现一系列问题 让人感到很是郁闷!虽然目前 Blog 能够正常运转 但是效率明显降低很多 于是萌发将系统升级到 Windows Server 平台的想法 这几天一直都在做 Windows

  —— 全程记录 Server Core 上部署 IIS + PHP FastCGI + MySQL

  近段时间由于网站服务器断电而出现一系列问题让人感到很是郁闷!虽然目前 Blog 能够正常运转但是效率明显降低很多于是萌发将系统升级到 Windows Server 平台的想法这几天一直都在做 Windows Server 和 IIS 的评估测试收获颇丰!不敢独享特以大家都很关注的 Server Core 为中心撰写此篇关于在 Server Core 上部署 IISPHP FastCGI 和 MySQL 的 Blog 与大家一同学习分享同时也希望大家能参与讨论

  之所以拿 Server Core 来讲我个人感觉非常有代表性而且在部署过程中通过相对复杂的命令行反而更能深入地了解和认识 Server Core 与 IIS 的特性和相关知识

  目标

  此次部署过程将使大家详细了解如何在一台全新安装的 Windows Server Web Edition Server Core (以下简称WSWebCore)上部署以 IIS 为 Web 平台的 PHP + MySQL 服务器同时会向大家展现如何修改服务器名称分配静态IP开启远程桌面在防火墙上开启远程桌面支持开启自动更新安装 II安装配置 PHP FastCGI 以及 安装 MySQL 的全部过程

  涉及到的关键词Windows Server WebServer CoreIISFastCGIPHPNetshScregeditwsfPkgmgrOcsetupOclistAppcmd

  测试环境

  宿主

  ThinkPad X BMT/G*/G/ABG/Windows Vista Ultimate with SP

  虚拟机平台Virtual PC with SP

  虚拟机Windows Server Web Edition Server Core分配 M 内存和 G VHD桥接到宿主ABG开启VT支持

  Step By Step 安装 WSWebCore 的过程就不再复述对于新一代操作系统的安装过程所体现出的特性相信不少朋友与我有一样的认可度

  在开始之前我们先来了解并确定一些信息!根据新加坡 网站的数据了解到他们在 WS 发布之际就已经开始在测试评估该产品并取得了让人为之兴奋的成果经过他们的实际评估在 WS 的 IIS 上以 FastCGI 方式运行 PHP 的效率远远高出原生的 LAMP 环境而这个数据着实的让人为之震惊和兴奋!足足的高出一倍还多%!

  注意这个数据是在没有进行任何优化的情况下得到的如果这个数据还不能让你振奋你现在就可以打开该网站亲身体验一下最终的效果(图

  

  正如我之前提到的此次使用 Server Core 主要还是为了让大家能够额外了解到 Core 的一些操作特性在未来我还会与大家分享在 Windows Server 上部署 IIPHP FastCGI 等等的心得体会如果您的工作领域涉及到 Web 服务我想现在就选择升级到 WS是非常明智的不论你是运行 ASP 还是 ASPNET(注意Server Core 不支持 NET)甚至是 PHPWS 都提供了更强劲的动力支持它更加稳定效率更高更安全针对资源的控制更为出色

  很早以前我就开始了针对 WS 系列产品的测试和评估而这次当我怀着测试看看的心情接触了 WS 的 Web 版本我深深地被吸引了要知道如果你仅仅只是为了部署一台用于 Web 服务的服务器选择 WSWeb 意味着你拥有更大的剩余磁盘空间减少更多不必要的角色和功能更低的设备性能需求更廉价得软件授权费用!从而在减少安全隐患的同时还提升了运营系统的性能和稳定性最终有效地降低了 TCO(总体拥有成本)

  下面让我们进入主题跟随我一起来体验一下这让人振奋的过程 

  启动我事先安装好的 WSWebCore键入帐号密码进入系统操作界面!(图

  

  

  GOD!来到这令人熟悉的命令行界面是一个什么样的感觉?是不是跟我之前一样马上开始在脑袋里搜索原来所知道的命令?!但是又突然觉得不知所措?!OK还是先静下心不要慌张回到今天的主题中跟随我的节奏继续下去才会有更大的收获!

  友情提示如果命令行窗口被不小心关闭了只需同时按下Ctrl+Shift+Esc即可调出任务管理器重新启动cmd即可

  一套全新的系统在部署运营程序之前我想还是应该先为其命名一个简单而又易于标注的计算机名重新命名前我们可以使用hostname命令来获取当前的计算机名之后使用netdom renamecomputer /newname:webcore依照提示键入Y最后使用shutdown r t 重新启动计算机使其新命名生效使用netdom renamecomputer help可以获得详细参数说明(图

  

  

  重新启动之后我们就需要为服务器配置一个静态IP在配置之前我们可以通过netsh interface ipv show interfaces来获取当前网络适配器的信息从而得知我要配置静态IP的网络连接名称为本地连接序列号(idx)为之后键入netsh interface ipv set address name= source=static address= mask= gateway=配置了 IP 之后我们还要为其指定 DNS 地址

  为此键入netsh interface ipv set dnserver name= source=static address= primary为其指定主 DNS 服务器并再键入netsh interface ipv add dnsserver name= address= index=为其指定辅助 DNS 服务器当然可以使用该命令指定更多的 DNS 服务器地址只需注意结尾的index=X

  另外需要提示的是以上为了能够让大家详细了解命令和参数故使用的是完整的命令格式如果你认真地学习了netsh你会发现其实完全可以简写完成!(图

  

  为了方便今后远程管理还需要启用远程桌面支持为此键入cscript c:\windowssystemscregeditwsf /ar 启用远程桌面为了让旧版的远程桌面连接器也能访问还需要键入cscript c:\windowssystemscregeditwsf /cs 最后使用netsh advfirewall firewall set rule group=远程桌面 new enable=yes命令行在防火墙中允许远程桌面通过(图

  

  

  在进入重头戏前我们忽略了什么?!自动更新服务要知道系统没有打开自动更新是多么可怕的事情键入cscript c:\windowssystemscregeditwsf /au 即可打开自动更新将结尾的/au 改为/au v则可以看到当先的配置状态(图

  

  

  在 Server Core 下安装 IIS 有两种方法一个是使用ocsetup命令而另外一个也就是网上轻易能查找到的pkgmgr方式两者的区别我会在以后与大家详细探讨而此次则以pkgmgr命令进行安装支持 CGI 的 IIS首先我们可以使用oclist命令来列出当前的角色功能安装状态内容如下所示

  

 Use the listed update names with Ocsetupexe to install/uninstall a server role or optional feature
  Adding or removing the Active Directory role with OCSetupexe is not supported It can leave your server in an unstable state Always use DCPromo to install or uninstall Active Directory
  ======================================
  MicrosoftWindowsServerCorePackage
  Not Installed:BitLocker
  Not Installed:BitLockerRemoteAdminTool
  Not Installed:IISWebServerRole
  |
  | Not Installed:IISFTPPublishingService
  | |
  | | Not Installed:IISFTPServer
  | |
  |
  |
  | Not Installed:IISWebServer
  | |
  | | Not Installed:IISApplicationDevelopment
  | | |
  | | | Not Installed:IISASP
  | | |
  | | |
  | | | Not Installed:IISCGI
  | | |
  | | |
  | | | Not Installed:IISISAPIExtensions
  | | | |
  | | | | Not Installed:IISASP
  | | | |
  | | |
  | | |
  | | | Not Installed:IISISAPIFilter
  | | |
  | | |
  | | | Not Installed:IISServerSideIncludes
  | | |
  | |
  | |
  | | Not Installed:IISCommonHttpFeatures
  | | |
  | | | Not Installed:IISDefaultDocument
  | | |
  | | |
  | | | Not Installed:IISDirectoryBrowsing
  | | |
  | | |
  | | | Not Installed:IISHttpErrors
  | | |
  | | |
  | | | Not Installed:IISHttpRedirect
  | | |
  | | |
  | | | Not Installed:IISStaticContent
  | | |
  | |
  | |
  | | Not Installed:IISHealthAndDiagnostics
  | | |
  | | | Not Installed:IISCustomLogging
  | | |
  | | |
  | | | Not Installed:IISHttpLogging
  | | |
  | | |
  | | | Not Installed:IISHttpTracing
  | | |
  | | |
  | | | Not Installed:IISLoggingLibraries
  | | |
  | | |
  | | | Not Installed:IISODBCLogging
  | | |
  | | |
  | | | Not Installed:IISRequestMonitor
  | | |
  | |
  | |
  | | Not Installed:IISPerformance
  | | |
  | | | Not Installed:IISHttpCompressionDynamic
  | | |
  | | |
  | | | Not Installed:IISHttpCompressionStatic
  | | |
  | |
  | |
  | | Not Installed:IISSecurity
  | | |
  | | | Not Installed:IISBasicAuthentication
  | | |
  | | |
  | | | Not Installed:IISClientCertificateMappingAuthentication
  | | |
  | | |
  | | | Not Installed:IISDigestAuthentication
  | | |
  | | |
  | | | Not Installed:IISIISCertificateMappingAuthentication
  | | |
  | | |
  | | | Not Installed:IISIPSecurity
  | | |
  | | |
  | | | Not Installed:IISRequestFiltering
  | | | |
  | | | | Not Installed:IISASP
  | | | |
  | | |
  | | |
  | | | Not Installed:IISURLAuthorization
  | | |
  | | |
  | | | Not Installed:IISWindowsAuthentication
  | | |
  | |
  |
  |
  | Not Installed:IISWebServerManagementTools
  | |
  | | Not Installed:IISIISManagementCompatibility
  | | |
  | | | Not Installed:IISLegacyScripts
  | | |
  | | |
  | | | Not Installed:IISMetabase
  | | | |
  | | | | Not Installed:IISFTPServer
  | | | |
  | | | |
  | | | | Not Installed:IISLegacyScripts
  | | | |
  | | |
  | | |
  | | | Not Installed:IISWMICompatibility
  | | | |
  | | | | Not Installed:IISLegacyScripts
  | | | |
  | | |
  | |
  | |
  | | Not Installed:IISManagementScriptingTools
  | |
  |
  Not Installed:NetworkLoadBalancingHeadlessServer
  Not Installed:SNMPSC
  Not Installed:TelnetClient
  Not Installed:WASWindowsActivationService
  |
  | Not Installed:WASProcessModel
  | |
  | | Not Installed:IISASP
  | |
  | |
  | | Not Installed:IISBasicAuthentication
  | |
  | |
  | | Not Installed:IISCGI
  | |
  | |
  | | Not Installed:IISClientCertificateMappingAuthentication
  | |
  | |
  | | Not Installed:IISCustomLogging
  | |
  | |
  | | Not Installed:IISDefaultDocument
  | |
  | |
  | | Not Installed:IISDigestAuthentication
  | |
  | |
  | | Not Installed:IISDirectoryBrowsing
  | |
  | |
  | | Not Installed:IISHttpCompressionDynamic
  | |
  | |
  | | Not Installed:IISHttpCompressionStatic
  | |
  | |
  | | Not Installed:IISHttpErrors
  | |
  | |
  | | Not Installed:IISHttpLogging
  | |
  | |
  | | Not Installed:IISHttpRedirect
  | |
  | |
  | | Not Installed:IISHttpTracing
  | |
  | |
  | | Not Installed:IISIISCertificateMappingAuthentication
  | |
  | |
  | | Not Installed:IISIPSecurity
  | |
  | |
  | | Not Installed:IISISAPIExtensions
  | | |
  | | | Not Installed:IISASP
  | | |
  | |
  | |
  | | Not Installed:IISISAPIFilter
  | |
  | |
  | | Not Installed:IISLoggingLibraries
  | |
  | |
  | | Not Installed:IISODBCLogging
  | |
  | |
  | | Not Installed:IISRequestFiltering
  | | |
  | | | Not Installed:IISASP
  | | |
  | |
  | |
  | | Not Installed:IISRequestMonitor
  | |
  | |
  | | Not Installed:IISServerSideIncludes
  | |
  | |
  | | Not Installed:IISStaticContent
  | |
  | |
  | | Not Installed:IISURLAuthorization
  | |
  | |
  | | Not Installed:IISWindowsAuthentication
  | |
  |
  Not Installed:WindowsServerBackup

  在了解了系统角色和功能的安装状态之后就可以根据需要来进行 IIS + CGI 的定制安装为此键入start /w pkgmgr /iu:IISWebServerRole;IISWebServer;IISCommonHttpFeatures;IISStaticContent;IISDefaultDocument;IISHttpErrors;IISApplicationDevelopment;IISCGI;IISHealthAndDiagnostics;IISHttpLogging;IISPerformance;IISHttpCompressionStatic;WASWindowsActivationService;WASProcessModel

  注意命令行中间没有换行有关 pkgmgr 安装 IIS 的有关参数可以参考在 Server Core 下执行 IIS 的完整安装脚本方式安装 IISIIS安装场景对照表这几篇日志其实经过我个人亲身实践证明IIS 的默认安装包含了静态内容的访问支持而这些功能也正是我们所需要的那么我个人认为使用ocsetup反而更为简便因为不需要再输入繁琐的命令参数

  在执行start /w ocsetup IISWebServerRole再执行start /w ocsetup WASWindowsActivationService才算真正的安装上了 IIS因为 IIS 需要 WASWindowsActivationService支持至此还只是完成了一半因为我们完成了 IIS 的默认安装并没有安装上 CGI 支持为此我们还需要执行start /w ocsetup IISCGI才是真正的完成安装当安装了IISCGI后系统会提示重新启动根据向导完成即可!

  而使用pkgmgr则不会出现此步骤而两者的区别也并非仅仅如此!这里大家不禁要问到为什么每个执行命令先都要加上start /w 这是为了能够识别出该命令是否执行结束如果不加之那么在执行命令后会直接回到光标状态而很难识别该命令的是否执行完毕(图

  

  完成了 IIS + CGI 支持的安装后我们便可以开始安装配置 PHP首先我们还是需要从PHP 官方站点下载 PHP 的 noinstall 安装包并将其解压缩到对应的位置c:php之后根据实际需要选择 phpinidist 或 phpinirecommended 作为默认的 php 配置文件此次选择 phpinidist 作为配置文件为此执行copy c:\phpphpinidist c:\phpphpini之后根据自己的实际需要修改 phpini

  可以参考FastCGI PHP on Windows Server 完成上述工作之后我们需要将 PHP 集成到 FastCGI 中为此执行appcmd set config section:systemwebserver/fastcgi /+[fullpath=c:\phpphpcgiexe]我们可以使用appcmd list config section:systemwebserver/fastcgi来查看验证写入是否正确appcmd是 IIS 的命令行管理工作功能很强大使用非常方便通过appcmd我们完全可以轻易的对 IIS 进行诸如备份修改配置创建网站……(图

  

  

  在完成了 PHP 与 FastCGI 的集成之后我们还需要添加扩展来执行解释 PHP 文件为此键入appcmd set config section:systemwebserver/handlers /+[name=PHPFastCGIpath=*phpverb=*modules=FastCgiModulescriptprocessor=c:\phpphpcgiexe]同样在添加之后我们可以使用appcmd list section:systemwebserver/handlers来查看验证这里需要注意是请正确键入命令行中FastCgiModule的大小写格式(图

  

  

  至此就完成了 PHP FastCGI 的安装这里不要忘记indexphp添加到默认文档中为此执行appcmd set config /section:defaultDocument /+files[value=indexphp]下来我们进入c:\inetpubwwwroot目录执执行notepad phpinfophp根据提示创建该文件并编辑该文件写入好了现在我们可以在另外一台客户端计算机上打开浏览器测试一下成果!以上环节中涉及到的一些命令和参数我会在以后向大家一一介绍其实细心体会这些命令行和参数还是非常通俗易懂的!(图

  

  

  大工程都已经完成了那么接下来就要开始安装 MySQLMySQL 在 WS 下的安装过程并没什么特别之处之所以要拿出来讲讲主要是为了保证该日志的连贯性和完整性PHP 离开了 MySQL 就显得不完美了!MySQL 我们可以从 官方网站下载到同样请选择下载 noinstall 的版本

  MySQL 手工安装非常简单首先选择一个 适合自己硬件的 MySQL 的配置文件(myhugeinimyinnodbheavyGinimylargeinimymediuminimysmallini)将其拷贝到c:windows目录下并命名为myini之后执行notepad myini进行编辑[mysqld]段落首行加入basedir = c:/mysqldatadir = c:/mysql/data保存退出

  之后进入到c:/mysqlbin目录执行start cmd && mysqld因为在手工启动 MySQL 服务后该窗口会暂时被冻结在 MySQL 运行状态无法执行其他命令所以在启动 MySQL 前我现打开一个 CMD 窗口在新打开的窗体中键入mysqladmin u root status && mysqladmin u root shutdown用于检查 MySQL 的运行状态之后再去手工停止 MySQL 服务

  确认没有问题之后执行mysqld install && net start mysql将 MySQL 添加为系统服务并启动该服务(图

  

  好了今天到这里就算是结束了在最后与大家分享一个经验在部署 Server Core 时可能服务器处于企业内部环境为了方便文件的存取和系统的调试可以使用netsh firewall set opmode disable先暂时关闭防火器之后待工作完毕后再重新启动防火墙不更加方便!当然这只是个建议如果安全系数要求比较高就可以忽略这个经验了!此外这里还涉及到了一些其他的常规操作创建一个新网站绑定域名备份 IIS 的配置……等等还是放到以后再与大家分享

网友评论
<