在 IIS 上托管 angular-fullstack Yeoman 站点

Hosting an angular-fullstack Yeoman Site on IIS

我有一个使用 angular-fullstack 生成器为 Yeoman 构建的项目。我想将其部署到 Windows 服务器 运行 IIS。我已经使用 Grunt 成功生成了 "dist" 文件夹,并将包含文件的 "public" 和 "server" 文件夹移动到我的 IIS 框中。

如何配置我的 Windows 服务器来托管我的应用程序?我是否需要两个 IIS 站点(一个用于 "public",一个用于 "server")?我需要在 Windows 服务器上安装 grunt、bower 等吗?

您不必手动安装 g运行t 或 bower。使用以下命令在本地安装 package.json 中声明的节点组件:

npm install

angular-fullstack 生成器创建一个Node.js 应用程序,因此您所要做的就是运行 服务器端应用程序。 运行 /server/app.js 和 Node.js

您可以在此处查看如何 运行 IIS 中的节点应用程序: http://www.hanselman.com/blog/InstallingAndRunningNodejsApplicationsWithinIISOnWindowsAreYouMad.aspx

您必须在 iisnode 上部署应用程序 为你做正确的配置 web.config 文件 我目前能够 运行 使用 nodejs 服务器的应用程序但不能在 iisnode 应用程序中因为我的 web.config 文件仍然工作正常 我发布了一个问题更多信息 here

这只是给你一个解决方法的提示。这不是详细的分步回答。

如果已经在使用 Grunt,您可以使用 this grunt plugin。 它是 msdeploy.exe 命令的包装器,因此您需要了解 here

在所有这些之前,您需要在您的服务器上安装 Web Deploy。有一些关于此的策略和帖子。我选择使用 Remote Agent 方式。

我在部署之前手动创建网站(还不知道如何远程执行此操作。正在处理它。这就是我发现这个问题的原因)。然后我只是同步我电脑中的目录(你的 /dist 文件夹)和远程服务器中的路径。

这是我的 Gruntfile.js 的一部分,在 grunt.initConfig()

中定义了 2 个示例

'Backup' 将当前远程目录保存在一个包(zip 文件)中。 名为 'Oper' 的第二个任务同步位于 <%= yeoman.dist %>

的当前构建
msdeploy: {
    backup: {
        options: {
            verb: "sync",
            source: {
                dirPath: '<%= deploy.Config.basePathOper %><%=deploy.Oper.Web %>,computerName=<%=deploy.Config.computerName %>,username=<%=deploy.Config.username %>,password=<%= deploy.Config.password %>'
            },
            dest: {
                package: '<%= deploy.Config.basePathOper %>\backups\web_' + grunt.template.today("yyyy-mm-dd-HH-MM-ss") + '.zip,computerName=<%=deploy.Config.computerName %>,username=<%=deploy.Config.username %>,password=<%= deploy.Config.password %>'
            }
        }
    },
    Oper: {
        options: {
            verb: 'sync',
            source: {
                dirPath: process.cwd() + '\<%= yeoman.dist %>'
            },
            dest: {
                dirPath: '<%= deploy.Config.basePathOper %><%=deploy.Oper.Web %>,computerName=<%=deploy.Config.computerName %>,username=<%=deploy.Config.username %>,password=<%= deploy.Config.password %>'
            }
        }
    }

我创建的任务看起来像这样

grunt.registerTask('deploy', function (target) {
  if (target === 'Oper') {
      grunt.task.run([
      'msdeploy:backup',
      'msdeploy:Oper'
      ]);
  }

});

别忘了加载插件:

grunt.loadNpmTasks('grunt-msdeploy');