该模块允许在第一次请求时自动安装应用程序和租户。
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实例,则可能需要分布式锁才能进行原子自动设置。
您应该在启动文件中启用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"
时间单位为毫秒。