如何在Windows Azure中部署Orchard CMS?

ron*_*ray 6 deployment installation azure 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).这一次,我可以得到安装屏幕,但是在安装完成后,它给了我另一个黄色的死亡屏幕,上面有几条错误消息,基本上提醒我对Media,Themes,Modules和其他一些文件夹给予适当的许可...... .如果我甚至无法为Azure设置远程桌面连接,如何如上所述?

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

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

谢谢!

Mik*_*din 1

我没有让 ClickToBuildToAcure.cmd 脚本正常工作,这就是为什么我编写了自己的脚本,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();
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我在部署 /App_Data/ 目录中的站点时遇到问题。将包上传到 Azure 时,请确保它是空的。

  3. 您需要告诉 Autofac 使用一些 Azure 特定类进行设置和博客存储。您可以在 /Config/Host.config 和 /Config/Sites.config 中找到它们。请访问我上面的博客文章,看看我是如何设置它们的。

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

  5. 请务必确保 ServiceConfiguration.cscfg 中的 DataConnectionString 设置正确。我很长一段时间都在用头撞墙,因为我在那里放置了另一个帐户的连接字符串。

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

祝你好运!