搭建IIS与SQL Server开发环境指南

本指南旨在帮助开发者在Windows 10 Pro操作系统上搭建一个适合开发的网站或应用程序环境。将使用Microsoft IIS和Microsoft SQL Server 2014作为示例。请注意,本文不适用于生产环境,仅供开发和学习使用。

将不提供截图,但会在后续更新中添加。请持续关注本页面。

IIS Express与IIS的区别

自Visual Studio 2012起,微软引入了IIS的轻量级版本——IIS Express。虽然在开发过程中使用调试器(F5)运行解决方案并捕获错误非常方便,但为了在开发周期中模拟真实情况,选择使用完全托管的IIS版本而非Express版本。

系统要求

本文需要已经安装了以下软件:

  • MicrosoftSQL Server及其相关服务。
  • Microsoft IIS:
    • 对于Windows客户端版本:打开控制面板 -> 程序和功能 -> 打开或关闭Windows功能。
    • 对于Windows服务器版本:打开服务器管理器 -> 添加角色和功能(开发目的不需要IIS可承载核心)。

配置IIS

请记住,以下设置仅适用于开发/内部使用,不适用于生产环境。可以将其作为指南,但必须根据设置/要求进行适当的替换。

打开IIS管理控制台(快捷方式:开始 -> 运行 -> inetmgr)。

在左侧选择“应用程序池”,然后在中间找到网站/应用程序正在运行的应用程序池。右键单击并选择“高级设置”。

确保“Managed Pipeline Mode”设置为“Integrated”。不再使用经典管道,除非知道自己在做什么,否则不应该使用它!

向下滚动列表,直到看到“Identity”设置。点击“...”按钮并选择想要使用的帐户。对于本文,将使用“Network Service”帐户,它将允许拥有所需的所有权限,而不会过多地暴露系统。请阅读有关“Network Service”帐户以及其他可用帐户的信息。

如果系统连接到AD,可能需要咨询系统管理员。根据经验,曾在不允许使用“Network Service”帐户的AD机器上工作过。

现在点击“确定”,然后再次点击“确定”。现在已经配置了应用程序池。

在左侧展开“站点”,然后选择需要配置的网站/应用程序。

双击“身份验证”磁贴。确保以下设置:

  • 匿名身份验证已启用,其余已禁用。

这也取决于要求,所以可能与此处不同。

右键单击“匿名身份验证”并选择“编辑”。

将身份更改为“应用程序池身份”。

以上应该使应用程序/网站处于IIS的工作状态。可能仍然无法访问它,所以请继续阅读本文的其余部分。

目录权限

作为标准做法,所有的网站/应用程序(统称为“站点”)都放置在默认的IIS托管目录中,即C:\wwwroot\inetpub。

使用Windows资源管理器前往托管目录。

右键单击站点文件夹,然后选择“属性”。

在“安全”选项卡中,为在IIS中选择的帐户授予以下权限(对于,是NetworkService)。如果帐户不在顶部的列表中,请确保首先将其添加。

  • 修改
  • 读取和执行
  • 列出文件夹内容
  • 读取
  • 写入

注意:可能希望考虑使用高级安全编辑器,以启用安全对象的传播到所有子项。这将确保在根目录内创建的任何新文件或目录都将从其父对象继承权限。这确实使一切变得更容易 - 对于本文,实际上不需要它,所以不会讨论它。如有疑问,请随时提问,会回复。

配置SQL Server

从这里开始,将看到站点无法访问或与数据库引擎通信。为什么?因为它没有所需的权限。现在有两种方法可以做到这一点,每种方法都有其自己的优缺点;简而言之:

  • 仅限数据库访问:可以配置系统帐户(NETWORK SERVICE)仅访问指定的数据库。在这种情况下,该帐户将只被允许与指定的数据库(s)通信。认为这在安全性方面提供了一点点更多的安心。这通常是更喜欢的方法。喜欢限制人们和软件做他们不应该做的事情。
  • 服务器范围访问:可以配置系统帐户(NETWORK SERVICE)访问整个数据库服务器,包括附加到该实例/引擎的所有数据库。这种方法不像上面提到的方法那样安全,强烈不建议使用。

如果选择使用这种方法,请考虑每次添加新数据库时,都需要去配置该数据库的权限。如果需要每周配置数据库权限,这可能会变得相当繁琐。

打开SQL ServerManagement Studio(快捷方式:开始 -> 运行 -> ssms)。

在提示时连接。

在左侧展开“安全性”,然后展开“登录名”。

如果没有列出网络服务(应该是NT AUTHORITY\NETWORK SERVICE):

  • 右键单击“登录名”文件夹,然后选择“新建登录名”。
  • 在顶部的“登录名”字段中,输入NETWORK SERVICE。如果它拒绝接受,请尝试输入NT AUTHORITY\NETWORK SERVICE。
  • 现在在左侧选择“服务器角色”选项卡。
  • 可以勾选任何喜欢的角色,但对来说,将给它'public'访问权限。
  • 现在在左侧选择“用户映射”选项卡。
  • 勾选希望允许此服务帐户访问的所有数据库。
  • 对于每个选定的数据库,在架构列中,将值设置为dbo(或在数据库中使用的任何架构)。
  • 然后,一次选择一个数据库行,并为其设置以下权限
db_datareader db_datawriter public

现在点击“确定”。

如果已经有网络服务帐户列出,请编辑该登录条目,然后按照上面的步骤(5-9)进行。

对于引擎级别来说,这就是全部。仍然需要将服务帐户添加到最初选择的每个数据库中,如步骤6中所述。所以:

  • 在左侧展开“数据库”。
  • 展开“安全性”文件夹,然后展开“用户”。

服务帐户应该在那里列出。右键单击并“属性”服务帐户(对于,是NT AUTHORITY\NETWORK SERVICE)。

在左侧选择“可安全”选项卡。

点击“搜索”按钮。

选择“特定对象”,然后点击“确定”。

现在点击“对象类型”按钮。

向下滚动并勾选架构。点击“确定”。

在下面的文本框中,输入要授予访问权限的架构(与步骤7中相同)。在例子中,将是dbo。点击“确定”。

在底部,选择想要为该数据库授予的所有权限。在例子中,需要对数据库有相当广泛的访问权限,所以将选择这些权限:

Alter Control Create Sequence Delete Execute Insert References Select Update

现在点击“确定”。

重复上述步骤,为每个选定的数据库进行操作。

打开SQL ServerManagement Studio(快捷方式:开始 -> 运行 -> ssms)。

在提示时连接。

在左侧展开“安全性”,然后展开“登录名”。

如果没有列出网络服务(应该是NT AUTHORITY\NETWORK SERVICE):

  • 右键单击“登录名”文件夹,然后选择“新建登录名”。
  • 在顶部的“登录名”字段中,输入NETWORK SERVICE。如果它拒绝接受,请尝试输入NT AUTHORITY\NETWORK SERVICE。
  • 现在在左侧选择“服务器角色”选项卡。
  • 可以勾选任何喜欢的角色,但对来说,将给它'public'访问权限。
  • 点击“确定”。

对于引擎级别来说,这就是全部。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485