解决 Sitecore xdbautomationworker 容器的 SQL Server 连接问题

问题描述

在将 Sitecore 数据库从生产环境迁移到非生产环境后,xdbautomationworker 容器出现了无法连接到 SQL Server 的问题。错误日志显示:

System.Data.SqlClient.SqlException (0x80131904): Only active directory users can impersonate other active directory users.

这个错误发生在尝试执行 Sitecore.Xdb.ReferenceData.SqlServer.Commands.GetDefinitionTypeCommand 时。

问题分析

  • 初步检查显示,所有相关的数据库连接字符串都使用了 SQL 身份验证。
  • 数据库用户似乎拥有足够的权限(db_datareader 和 db_datawriter 角色)。
  • 存储过程使用了 WITH EXECUTE AS OWNER 子句,这可能是导致问题的原因。

深入调查

我们进行了以下调查:

检查数据库所有者:

SELECT name , owner_sid 
FROM sys.databases

在Debian 12上配置Nginx、Cloudflare CDN和SSL证书

在本文中,我们将详细介绍如何在Debian 12服务器上配置Nginx,设置Cloudflare CDN,以及为需要直接访问源站的特殊程序申请SSL证书。这个过程涉及多个步骤,包括安装Nginx,配置域名,使用Cloudflare CDN,以及使用Certbot申请SSL证书。

0. 引用

https://certbot-dns-cloudflare.readthedocs.io/en/stable/
https://lucasc.me/post/howto-certbot-dns-cloudflare-in-webmin

1. 安装和配置Nginx

首先,我们在Debian 12服务器上安装Nginx:

sudo apt update
sudo apt install nginx

安装完成后,配置您的域名。编辑Nginx配置文件,通常位于/etc/nginx/sites-available/目录下。

2. 配置Cloudflare CDN

接下来,我们使用Cloudflare CDN来提高网站性能和安全性:

  • 在Cloudflare上注册账户并添加您的域名。
  • 更新域名的DNS记录,将其指向Cloudflare的名称服务器。
  • 在Cloudflare仪表板中,确保SSL/TLS设置为"Flexible"模式。

Sitecore XDB 容器连接问题:数据库迁移后的故障排除 | Sitecore XDB container connectivity issues: troubleshooting after database migration

Citation

https://sitecore.stackexchange.com/questions/23840/xdb-collection-shard0-login-failed-for-user

When performing database migrations in a Sitecore environment, particularly when copying from a production environment to a non-production environment, one may encounter several tricky issues. Recently, we faced an interesting case involving the Sitecore XDB container’s inability to connect after the database migration. This article will share our troubleshooting process and the final solution.

Problem Description:

After copying the production database to the non-production environment, the Sitecore XDB container began reporting connection errors. The error message indicated:

Database 'Sitecore.Xdb.Collection.Shard0' on server 'ahke-non-prod-sql1' is not currently available.

引用

https://sitecore.stackexchange.com/questions/23840/xdb-collection-shard0-login-failed-for-user

在 Sitecore 环境中进行数据库迁移时,特别是从生产环境复制到非生产环境时,可能会遇到一些棘手的问题。最近,我们遇到了一个有趣的案例,涉及 Sitecore XDB 容器在数据库迁移后无法连接的问题。本文将分享我们的故障排除过程和最终解决方案。

问题描述:

在将生产数据库复制到非生产环境后,Sitecore XDB 容器开始报告连接错误。错误信息显示:

Database 'Sitecore.Xdb.Collection.Shard0' on server 'ahke-non-prod-sql1' is not currently available.

Solr集群故障导致的项目不可用问题及解决方案

问题描述

在进行k8s节点升级后,我们的Solr集群出现了故障。由于我们的xdbsearch服务依赖于Solr集群,这个故障导致xdbsearch pod无法正常运行。同时,依赖于xdbsearch的其他pods也无法正常运行,从而导致整个项目不可用。

背景

使用Lens操作K8s, 它会自动映射端口
在Network > Services > Solr Cluster Headless 打开solr admin panel. 映射端口会定期更新,

解决 code-server 4.20 不再支持 glibc2.27 的问题:一次 Ubuntu 18.04 维护之旅

在这篇博客中,我将详细介绍一次 Ubuntu 18.04 系统维护的过程。我们的目标是升级 code-server 到最新版本,但由于系统中的 glibc 版本过低,我们需要进行一系列的操作来解决这个问题。

问题描述

我们的系统是 Ubuntu 18.04,安装的 glibc 版本是 2.27。然而,最新版本的 code-server 需要 glibc 2.28 或更高版本。因此,我们需要升级我们的 glibc。

解决方案

安装 glibc 2.28

我们首先尝试升级 Ubuntu 到最新版本,但由于 Python3 版本的问题,我们无法完成升级。因此,我们决定通过编译源码的方式来安装 glibc 2.28。

我们下载 glibc 2.28 的源码,然后进行编译和安装。然而,尽管我们已经安装了 glibc 2.28,但 ldd 命令仍然显示我们的 glibc 版本是 2.27。这是因为我们没有修改系统的动态链接库。

使用Cloudflare API自动切换DNS

在这篇文章中,我们将探讨如何使用Cloudflare API自动切换DNS。我们将使用Uptime Kuma来监控网站运行状态,并通过webhook进行通知。我们还将运行webhookd服务来接收Uptime Kuma的请求,并在网站状态出现问题时,使用Cloudflare API切换到备用服务器。

引用

https://github.com/louislam/uptime-kuma
https://github.com/ncarlier/webhookd
https://github.com/ncarlier/webhookd/issues/82
https://www.tech-otaku.com/web-development/using-cloudflare-api-manage-dns-records/

监控网站运行状态

首先,我们需要一个工具来监控我们的网站运行状态。这里,我们选择使用Uptime Kuma,它是一个功能强大的开源监控工具,可以帮助我们实时了解网站的运行状况。
当Uptime Kuma检测到网站状态发生变化时,它可以通过webhook发送通知。我们需要运行一个webhookd服务来接收这些通知。

如何在sitecore RichTextEditor中添加自定义 line-height属性

引用

https://jammykam.wordpress.com/2014/06/17/add-custom-drop-down-list-to-rich-text-editor-in-sitecore/
https://www.davidbuckell.com/blogs/development/sitecore/customising-the-rich-text-editor/adding-a-custom-dropdown-to-sitecore-rich-text-editor-toolbar/
https://sitecorerunner.com/2018/08/21/adding-rte-richtext-custom-dropdown-list-in-sitecore-9/

sitecore RichTextEditor是一个强大的文本编辑器,它可以让你在sitecore中创建和编辑富文本内容。它提供了很多常用的功能,比如字体、颜色、对齐、插入图片等。但是,有时候你可能需要一些更高级的功能,比如调整文本的行高。行高是指文本行之间的垂直距离,它可以影响文本的可读性和美观性。在sitecore richtexteditor中,你可以通过修改HTML源码来设置行高,但是这样做比较麻烦,而且需要一定的HTML知识。有没有一种更简单的方法呢?答案是肯定的。在本文中,我将教你如何在sitecore richtexteditor中添加一个自定义的下拉列表,让你可以方便地选择和插入不同的行高值。

在Core中创建Line-Height下拉列表

在Core库中找到Profile , eg: /sitecore/system/Settings/Html Editor Profiles/Rich Text Default/Toolbar 3
创建名称为Line Height, 模板为 /sitecore/templates/System/Html Editor Profiles/Html Editor Custom Drop Down Button
字段Click 为自定义字符串,下面的JS中会用到,eg: InsertCustomLineHeight
子节点模板为: /sitecore/templates/System/Html Editor Profiles/Html Editor List Item

Sitecore Rich Text Editor 添加自定义styles

引用

https://sitecore.stackexchange.com/questions/9763/sitecore-8-2-rich-text-editor-drop-down-items
https://web.archive.org/web/20170407075518/http://www.awareweb.com/awareblog/profilespecificstylesheets

在Sitecore中,我们可以通过修改WebStylesheet设置来为富文本编辑器(RTE)添加自定义的CSS。但是,这种方法只允许我们指定一个CSS文件。如果我们想要使用多个CSS文件,或者我们想要为特定的用户角色或设备类型指定不同的CSS,那么我们需要寻找其他的方法。

自定义EditorConfiguration

我们可以创建一个自定义类EditorConfiguration,该类用于根据Sitecore配置文件设置富文本编辑器。它重写了SetupStylesheets方法,以添加在配置文件的Stylesheets文件夹中指定的CSS文件。

Debian Rclone automount | Rclone 自动挂载

Debian Rclone automount | Rclone 自动挂载

引用

https://github.com/rclone/rclone/wiki/Systemd-rclone-mount#systemd

前提

  • 安装rclone
  • 配置远程服务器,eg:my_remote_service, (default config location: ~/.config/rclone/rclone.conf)

操作

[Unit]
Description=RClone mount of users remote %i using filesystem permissions
Documentation=http://rclone.org/docs/
After=network-online.target

....

Django项目的多语言支持

引用

https://testdriven.io/blog/multiple-languages-in-django/

Django是一个非常流行和强大的Python Web框架,它提供了很多内置的功能,让开发者可以快速地构建高性能、安全、可扩展的网站。其中一个功能就是国际化和本地化,也就是让网站能够根据用户的语言和地区偏好,显示不同的内容和格式。这样,网站就可以覆盖更多的用户群体,提高用户体验和满意度。

在这篇博客中,我将介绍如何使用Django的国际化和本地化功能,以及一些第三方库,来实现多语言网站的开发。我将以一个简单的博客网站为例,展示如何让它支持英语、法语、西班牙语、越南语、波兰语、泰语、韩语、日语、简体中文和繁体中文这十种语言。我将分为以下几个步骤:

  • 基本设置
  • 模型和视图的国际化
  • 模板的国际化
  • URL的国际化
  • 静态文件的国际化
  • 语言切换
  • 使用第三方库

基本设置

首先,我们需要在项目的settings.py文件中,做一些基本的设置,来启用国际化和本地化功能,以及指定支持的语言和默认语言。具体的设置如下:

    # 基本设置

    LANGUAGE_CODE = 'zh-hans' # 默认语言,这里我设置为简体中文
    #PARLER_DEFAULT_LANGUAGE_CODE = 'zh-hans' # 这是一个第三方库的设置,后面会介绍

    TIME_ZONE = 'UTC' # 时区,这里我设置为UTC,你可以根据需要修改

    USE_I18N = True # 启用国际化功能

    USE_L10N = True # 启用本地化功能

    USE_TZ = True # 启用时区支持

    # https://github.com/django/django/blob/main/django/conf/global_settings.py#L56
    LANGUAGES = ( # 指定支持的语言,这里我设置了十种语言,你可以根据需要增加或删除
        ('en', ('English')),
        ('fr', ('Français')),
        ('es', ('Español')),
        ('vi', ('Tiếng việt')),
        ('pl', ('Polskie')),
        ('th', ('ไทย')),
        ('ko', ('한국어')),
        ('ja', ('日本語')),
        ("zh-hans", ("简体中文")),
        ("zh-hant", ("繁體中文"))
    )

    LOCALE_PATHS = [ # 指定存放翻译文件的路径,这里我设置为项目根目录下的locale文件夹
        os.path.join(os.path.dirname(os.path.dirname(__file__)), "locale")
    ]

Viagle Blog

欢迎来到我的个人博客网站