在IIS上托管一个angular-fullstack Yeoman站点

时间:2015-01-23 22:17:34

标签: iis hosting yeoman angular-fullstack

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

如何配置Windows Server以托管我的应用程序?我是否需要有两个IIS站点(一个用于"公用和#34;一个用于"服务器")?我是否需要在Windows Server上安装grunt,bower等?

3 个答案:

答案 0 :(得分:1)

您无需手动安装grunt或bower。使用以下命令在本地安装在package.json中声明的节点组件:

npm install

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这只是为了向您提供解决方案的提示。这不是一个详尽的逐步回答。

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

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

我在部署之前手动创建网站(不知道如何远程执行此操作。继续使用。这就是我发现此问题的原因)。然后我只是同步我的计算机中的目录(你的/ dist文件夹)和远程服务器中的路径。

这是我的一个Gruntfile.js,其中包含grunt.initConfig()

中定义的2个示例

'备份'将包(zip文件)保存在当前远程目录中。 第二个名为“操作”的任务同步位于<%= 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');