小技巧:使用appcmd来自动化部署IIS网站

小技巧:使用appcmd来自动化部署IIS网站

作者:BlogUpdater |  时间:2017-04-11 |  浏览:2473 |  评论已关闭 条评论

在工作中,时常会花费宝贵的时间做重复的事情,比如使用IIS图形界面部署一个新网站。今天我们就来聊一下如何使用appcmd这一工具来简化这个工作。

appcmd,是一个微软操作系统自带的命令行工具,位于系统的C:\windows\system32\inetsrv路径下(对于Win7 32位操作系统而言)。我们可以使用“appcmd /?”这一指令查看此工具的基本用法:

=======================================================

C:\Windows\System32\inetsrv>appcmd /?

通用 IIS 命令行管理工具。

APPCMD (命令) (对象类型) <标识符> </参数1:值1 …>

支持的对象类型:

SITE 虚拟站点的管理
APP 管理应用程序
VDIR 管理虚拟目录
APPPOOL 管理应用程序池
CONFIG 管理常规配置节
WP 管理工作进程
REQUEST 管理 HTTP 请求
MODULE 管理服务器模块
BACKUP 管理服务器配置备份
TRACE 使用失败请求跟踪日志

(要列出每个对象支持的命令,请使用 /?,例如“appcmd.exe site /?”)

常用参数:

/? 显示上下文相关帮助消息。

/text<:value> 以文本格式(默认)生成输出。
/text:* 在详细信息视图中显示所有对象属性。
/text:<attribute> 显示每个对象的
指定特性的值。
/xml 以 XML 格式生成输出。
使用此参数生成的输出可发送至
以 /in 模式运行的其他命令。
/in or – 自标准输入读取和操作 XML 输入。
使用此参数可操作运行于 /xml 模式的
其他命令生成的输入。
/config<:*> 显示所显示对象的配置。
/config:* 还包括继承的配置。
/metadata 在显示配置时显示配置元数据。

/commit 设置用于保存配置更改的配置路径。
可以指定具体的配置路径、“site”、
“app”、“parent”或“url”以保存到该命令正在编辑的
路径的适当部分,也可以设置为对应的配置级别
的“apphost”、“webroot”或“machine”。
/debug 显示命令执行的调试信息。

-使用“!”以转义与常用参数同名的参数,
例如“/!debug:value”设置一个名为“debug”的配置属性。

=======================================================

这里首先需要注意的是,使用此工具时,需要提升为管理员权限,否则会出现权限问题。

第二个,是了解这个工具的帮助系统。它的帮助系统非常一致和统一,以下一site这一参数做介绍。

执行:appcmd site /?,即打开和site相关的帮助信息,如下图所示:

=======================================================

C:\Windows\System32\inetsrv>appcmd site /?
虚拟站点的管理

APPCMD <命令> SITE [标识符] [-参数1:值1 …]

支持的命令:

list 列出虚拟站点
set 配置虚拟站点
add 添加新虚拟站点
delete 删除虚拟站点
start 启动虚拟站点
stop 停止虚拟站点

(要获取每个命令的帮助,请使用 /?,例如“appcmd.exe add site /?”。)

=======================================================

 

如果想继续了解site下各个命令的使用方法,还可以继续执行:appcmd list site /?。

=======================================================

C:\Windows\System32\inetsrv>appcmd list site /?
列出虚拟站点

APPCMD list SITE [标识符] [-参数1:值1 …]

列出计算机上的虚拟站点。此命令可用于使用特定站点的标识符或 url 查找该站点,或者基于指定的站点属性匹配零个或多个站点

支持的参数:

identifier

要查找的站点的站点名称或 url

/site.name

要查找的站点的站点名称或 url (与标识符相同)

/?

显示可用于查找一个或多个站点对象的动态站点属性
示例:

appcmd list sites

列出计算机上的所有站点。

appcmd list site “Default Web Site”

查找站点“Default Web Site”。

appcmd list site http://localhost/app1

查找与指定的 url 关联的站点。

appcmd list site /serverAutoStart:false

查找“serverAutoStart”配置属性设置为“false”的所有站点。

=======================================================

这样,在了解appcmd的统一的帮助系统使用方法之后,我们就可以查询其他所有功能指令的使用方法了。

 

第三个,就是执行具体的功能指令了,以下列举一个具体的新站点部署实例作为参考:

创建应用程序池:

appcmd.exe add apppool /name:(应用程序池名称)

创建站点:

appcmd.exe add site /name:(站点名称) /id:2 /bindings:http://*:80 /applicationDefaults.applicationPool:(应用程序池名称) /physicalPath:(站点根目录)

添加模块映射(因PHP在IIS上解释执行需要添加FastCGI模块映射(注意这里的/后的+代表添加,-代表移除,不带任何符合代表修改):

添加Web Server下的FastCGI模块路径:appcmd set config /section:system.webServer/fastCgi /+[fullPath='(php-cgi.exe全路径)’]
设置最大请求数目:appcmd set config /section:system.webServer/fastCgi /[fullPath='(php-cgi.exe全路径)’].instanceMaxRequests:200
设置最大实例数目:appcmd set config /section:system.webServer/fastCgi /[fullPath='(php-cgi.exe全路径)’].maxInstances:4
在站点下添加模块映射:appcmd set config (站点名称) /section:system.webServer/handlers /+[name=’FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor='(php-cgi.exe全路径)’]

添加默认页:

设置index.php为默认页): appcmd set config (站点名称) /section:system.webServer/defaultDocument /+files.[value=’index.php’]

启动站点:

appcmd start site (站点名称)

重启Web服务器已应用配置更改:

sc stop w3svc

sc start w3svc

至此,一个全新的站点就完成在IIS上的部署了。

本次试验测试环境:

OS: Windows 7 x86

IIS: IIS7.5

标签:

评论已关闭。