如何在Windows Azure中部署Orchard CMS?

时间:2011-06-22 15:09:39

标签: deployment azure installation orchardcms

专家,

有没有人在Azure中成功构建和部署Orchard CMS(1.1及以上版本)?

我尝试按照此处的建议构建源代码(从Codeplex repo中提取):http://www.orchardproject.net/docs/Deploying-Orchard-to-Windows-Azure.ashx但仍然失败。如果您看到该文章的评论,您会看到一些人在使用ClickToBuildAzurePackage.cmd时遇到同样的问题。它总是失败!!它根本不起作用!

接下来,我下载了源代码包(Orchard.Web.1.2.41.zip)并尝试打开Orchard.Azure解决方案,构建并发布它(配置了远程桌面连接)。在发布之前,我还在ServiceConfiguration.cscfg文件中放入了正确的DataConnectionString。它给了我一个黄色的死亡屏幕,上面写着这条消息:

没有一个构造函数找到策略'Autofac.Core.Activators.Reflection.BindingFlagsConstructorFinder'

接下来,我尝试仅部署Azure软件包(没有源代码,Orchard.Azure.1.2.41.zip)。这一次,我可以得到安装屏幕,但是在安装完成后,它给了我另一个黄色的死亡屏幕,上面有几条错误消息,基本上提醒我对媒体,主题,模块和其他一些文件夹给予适当的许可...... 。如果我甚至无法为Azure设置远程桌面连接,如何如上所述呢?

我放弃了这一点......我开始认为Orchard CMS(1.1及以上版本)还没有为Azure做好准备。我可以在Azure中运行1.0.2版本并运行(直接部署Azure-ready软件包,我没有构建源代码)。

任何人都可以分享他们在此问题上的经验以及让Orchard CMS(1.1及以上版本)在Azure中顺利运行的分步指南吗?我是否可以知道我们是否也可以在Azure中为Orchard CMS设置2个实例?为实现这一目标,我需要考虑/做些什么?

谢谢!

4 个答案:

答案 0 :(得分:4)

自2012年6月起,还可以在 Windows Azure网站上轻松托管Orchard。

以下是如何引导:How to setup Orchard CMS on Windows Azure Web Sites with a Windows Azure SQL Database

这是一种替代方法,在原始问题时尚不存在,但对于希望在Windows Azure上轻松部署Orchard CMS的未来读者可能仍然感兴趣。

答案 1 :(得分:1)

我自己没有这样做。

但我已经阅读了一些关于将Orchard部署到Azure的博客文章 - 例如见http://litemedia.info/automate-deploy-of-your-orchard-cms-to-azure - 所以我相信可以做到。

在死亡问题的特定黄色屏幕上 - 确保您已使用NuGet解析AutoFac依赖关系 - 请参阅http://litemedia.info/deploy-orchard-cms-to-azure

答案 2 :(得分:1)

我做了大约十几次没有问题。关于ClickTobuild,你是从Visual Studio命令提示符那样做的吗?

答案 3 :(得分:1)

我没有让ClickToBuildToAcure.cmd脚本工作,这就是为什么我写了my own one,Stuart帮助链接到。我的博客http://litemedia.info正在Azure上运行,这些博客文章描述了我是如何做到的。

一些指针

  1. 与运行本地相比,我的Global.asax.cs在Azure上看起来有点不同。

    public class AzureApplication : HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        }
    
        protected void Application_Start()
        {
            CloudStorageAccount.SetConfigurationSettingPublisher(
                (configName, configSetter) =>
                    configSetter(RoleEnvironment.GetConfigurationSettingValue(configName))
                );
    
            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
            RoleEnvironment.Changing += (sender, e) =>
            {
                // If a configuration setting is changing
                if (e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange))
                {
                    // Set e.Cancel to true to restart this role instance
                    e.Cancel = true;
                }
            };
    
            RegisterRoutes(RouteTable.Routes);
            Starter.LaunchStartupThread(MvcSingletons);
        }
    
        protected void Application_BeginRequest()
        {
            Context.Items["originalHttpContext"] = Context;
            Starter.OnBeginRequest(Context, MvcSingletons);
        }
    
        protected void Application_EndRequest()
        {
            Starter.OnEndRequest();
        }
    
        static void MvcSingletons(ContainerBuilder builder)
        {
            builder.Register(ctx => RouteTable.Routes).SingleInstance();
            builder.Register(ctx => ModelBinders.Binders).SingleInstance();
            builder.Register(ctx => ViewEngines.Engines).SingleInstance();
        }
    }
    
  2. 我在/ App_Data /目录中部署网站时出现问题。将包上传到Azure时,请确保它为空。

  3. 您需要告诉Autofac将一些Azure特定类用于设置和博客存储。您可以在/Config/Host.config和/Config/Sites.config中找到它们。转到我上面的博文,了解我如何设置它们。

  4. 我花了几个小时搜索未复制到Azure包的程序集。确保所有引用都是“Copy Local”,甚至是MVC3引用。

  5. 确保您在ServiceConfiguration.cscfg中设置了正确的DataConnectionString。我长时间撞在墙上,因为我在那里为另一个帐户添加了一个连接字符串。

  6. 如果您打算从脚本部署,则需要设置将用于部署的证书。我使用Visual Studio创建证书,然后仅从我的脚本中引用它。

  7. 祝你好运!