OrchardCore模块 OrchardCore.AutoSetup

该模块允许在第一次请求时自动安装应用程序和租户。

JSON配置参数

AutoSetup参数是在appsettings.json中定义的。示例如下:

"OrchardCore": {
    "OrchardCore_AutoSetup": {
    "AutoSetupPath": "",
    "Tenants": [
        {
            "ShellName": "Default",
            "SiteName": "AutoSetup Example",
            "SiteTimeZone": "Europe/Amsterdam",
            "AdminUsername": "admin",
            "AdminEmail": "info@orchardproject.net",
            "AdminPassword": "OrchardCoreRules1!",
            "DatabaseProvider": "Sqlite",
            "DatabaseConnectionString": "",
            "DatabaseTablePrefix": "",
            "RecipeName": "SaaS"
        },
        {
            "ShellName": "AutoSetupTenant",
            "SiteName": "AutoSetup Tenant",
            "SiteTimeZone": "Europe/Amsterdam",
            "AdminUsername": "tenantadmin",
            "AdminEmail": "tenant@orchardproject.net",
            "AdminPassword": "OrchardCoreRules1!",
            "DatabaseProvider": "Sqlite",
            "DatabaseConnectionString": "",
            "DatabaseTablePrefix": "tenant",
            "RecipeName": "Agency",
            "RequestUrlHost": "",
            "RequestUrlPrefix": "tenant"
        }
    ]
}

参数说明

AutoSetupPath    为每个租户触发自动设置的URL。如果为空,将在第一个租户请求时触发自动设置,例如:/,/Tenant-Prefix。
Tenants    要安装的租户列表

ShellName    租户名称。不能为空,且只能包含字符。默认租户使用“Default”。
SiteName    站点名称
AdminUsername    租户的超级用户
AdminEmail    租户超级用户的邮箱
AdminPassword    租户超级用户的密码
DatabaseProvider    使用什么数据库
DatabaseConnectionString    数据库连接字符串
DatabaseTablePrefix    数据表前缀
RecipeName    租户安装配方名称。
RequestUrlHost    租户主机URL.
RequestUrlPrefix    租户URL前缀.

注意:

租户数组必须包含外壳名称等于默认值的根租户。
每个租户将按需安装(应第一个租户请求)。
如果提供了AutoSetupPath,则必须使用它来触发每个租户的安装,例如:/autosetup-rigger root租户的安装。/mytenant/autosetup-auto-install mytenant。

环境变量

由于JSON配置包含管理员敏感信息,因此建议改用环境变量。

"OrchardCore__OrchardCore_AutoSetup__AutoSetupPath": ""

"OrchardCore__OrchardCore_AutoSetup__Tenants__0__ShellName": "Default"
"OrchardCore__OrchardCore_AutoSetup__Tenants__0__SiteName": "AutoSetup Example"
"OrchardCore__OrchardCore_AutoSetup__Tenants__0__SiteTimeZone": "Europe/Amsterdam"
"OrchardCore__OrchardCore_AutoSetup__Tenants__0__AdminUsername": "admin"
"OrchardCore__OrchardCore_AutoSetup__Tenants__0__AdminEmail": "info@orchardproject.net"
"OrchardCore__OrchardCore_AutoSetup__Tenants__0__AdminPassword": "OrchardCoreRules1!"
"OrchardCore__OrchardCore_AutoSetup__Tenants__0__DatabaseProvider": "Sqlite"
"OrchardCore__OrchardCore_AutoSetup__Tenants__0__DatabaseConnectionString": ""
"OrchardCore__OrchardCore_AutoSetup__Tenants__0__DatabaseTablePrefix": ""
"OrchardCore__OrchardCore_AutoSetup__Tenants__0__RecipeName": "SaaS"

"OrchardCore__OrchardCore_AutoSetup__Tenants__1__ShellName": "AutoSetupTenant"
"OrchardCore__OrchardCore_AutoSetup__Tenants__1__SiteName": "AutoSetup Tenant"
"OrchardCore__OrchardCore_AutoSetup__Tenants__1__SiteTimeZone": "Europe/Amsterdam"
"OrchardCore__OrchardCore_AutoSetup__Tenants__1__AdminUsername": "tenantadmin"
"OrchardCore__OrchardCore_AutoSetup__Tenants__1__AdminEmail": "tenant@orchardproject.net"
"OrchardCore__OrchardCore_AutoSetup__Tenants__1__AdminPassword": "OrchardCoreRules1!"
"OrchardCore__OrchardCore_AutoSetup__Tenants__1__DatabaseProvider": "Sqlite"
"OrchardCore__OrchardCore_AutoSetup__Tenants__1__DatabaseConnectionString": ""
"OrchardCore__OrchardCore_AutoSetup__Tenants__1__DatabaseTablePrefix": ""
"OrchardCore__OrchardCore_AutoSetup__Tenants__1__RecipeName": "Agency"
"OrchardCore__OrchardCore_AutoSetup__Tenants__1__RequestUrlHost": ""
"OrchardCore__OrchardCore_AutoSetup__Tenants__1__RequestUrlPrefix": "tenant"

出于测试目的,您可以将上述环境变量添加到OrchardCore.Cms.Web项目的LaunchSettings.json文件中的“web”配置文件中。
然后,使用以下命令启动Web应用程序项目:

dotnet run -f net5.0 --launch-profile web 或 dotnet run -f netcoreapp3.1 --launch-profile web

启动AutoSetup功能

要启用AutoSetup功能,需要将其添加到Web项目的启动文件中:

    public void ConfigureServices(IServiceCollection services)
    {
        services
            .AddOrchardCms()
            .AddSetupFeatures("OrchardCore.AutoSetup");
    }

默认情况下,在源代码中包含的默认项目中启用此功能,但应用程序模板没有启用此功能,以防止在创建自定义项目时出现任何意外行为。

使用分布式锁

 如果启动共享同一数据库的多个OrchardCore实例,则可能需要分布式锁才能进行原子自动设置。

OrchardCore模块 OrchardCore.AutoSetup

 

 

 您应该在启动文件中启用Redis Lock功能。

    public void ConfigureServices(IServiceCollection services)
    {
        services
            .AddOrchardCms()
            .AddSetupFeatures("OrchardCore.Redis.Lock", "OrchardCore.AutoSetup");
    }

确保通过环境变量或配置文件设置Redis配置字符串。

"OrchardCore__OrchardCore_Redis__Configuration": "192.168.99.100:6379,allowAdmin=true"

配置参数是可选的,可以通过环境变量或配置文件设置。

"OrchardCore__OrchardCore_AutoSetup__LockOptions__LockTimeout": "10000"
"OrchardCore__OrchardCore_AutoSetup__LockOptions__LockExpiration": "10000"

时间单位为毫秒。

上一篇:percona-toolkit安装


下一篇:OrchardCore 如何动态加载模块?