惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

zodream梦想开源/个人编程日记

angular 21 升级使用 signals 方案笔记-zodream梦想开源/个人编程日记 文件解析笔记-zodream梦想开源/个人编程日记 密码本开发笔记之读写与保存-zodream梦想开源/个人编程日记 基于 SkiaSharp 的轮廓获取-zodream梦想开源/个人编程日记 SkiaSharp 把 pixel byte[] 转成 SKBitmap-zodream梦想开源/个人编程日记 nas 使用 Docker 安装 gogs-zodream梦想开源/个人编程日记 复制 android 手机中的文件到电脑-zodream梦想开源/个人编程日记 最新|个人日记-zodream梦想开源/个人编程日记 最新|个人日记-zodream梦想开源/个人编程日记 最新|个人日记-zodream梦想开源/个人编程日记 最新|个人日记-zodream梦想开源/个人编程日记 周报:寻找优质的周刊-zodream梦想开源/个人编程日记 开发日志:对Markdown的代码块新增引用来源支持-zodream梦想开源/个人编程日记 周报:怎么写技术类的教程文章-zodream梦想开源/个人编程日记 css display:flex 布局尺寸超出问题-zodream梦想开源/个人编程日记 周报:SEO优化的思考-zodream梦想开源/个人编程日记 Edge 浏览器不适用 Edge Image Viewer 打开图片 -zodream梦想开源/个人编程日记 SEO 学习笔记(一) 内容来源-zodream梦想开源/个人编程日记 PHP 实现双因素身份认证(2FA)-zodream梦想开源/个人编程日记 winui3 自定义标题栏-zodream梦想开源/个人编程日记 WPF MVVM 获取List 多选数据-zodream梦想开源/个人编程日记 php 接入 WebAuthn 登录-zodream梦想开源/个人编程日记 Burp Suite 抓包-zodream梦想开源/个人编程日记 lnmp php集成环境安装包使用-zodream梦想开源/个人编程日记 js 进行在线编辑器开发-zodream梦想开源/个人编程日记 使用 indexnow 注意事项-zodream梦想开源/个人编程日记 Godot 使用字体图标 例如: Iconfont、FontAwesome-zodream梦想开源/个人编程日记 angular 15 对指定页面进行访问限制-zodream梦想开源/个人编程日记 CSS 使用 column-count 实现瀑布流出现内容分割的解决办法-zodream梦想开源/个人编程日记 angular 15 实现按下确认键,焦点移动到下一个表单或提交表单-zodream梦想开源/个人编程日记 input 确认按键事件在手机端不生效-zodream梦想开源/个人编程日记 C# 使用socket 进行通讯-zodream梦想开源/个人编程日记 Maui开发中Windows应用开启管理员权限-zodream梦想开源/个人编程日记 Maui 中自定义控件-zodream梦想开源/个人编程日记 TencentOS Server 3.1 安装 Nginx 1.23、PHP 8.2、MariaDB 10.11-zodream梦想开源/个人编程日记 angular 14 使用 ng-template 实现tree 结构显示-zodream梦想开源/个人编程日记 angular 14 替换 ComponentFactoryResolver 实现动态创建组件-zodream梦想开源/个人编程日记 c# 动态安装和卸载dll-zodream梦想开源/个人编程日记 慎用 CompositionTarget.Rendering-zodream梦想开源/个人编程日记 c# 重写 c++ 程序笔记:数据初始化-zodream梦想开源/个人编程日记 源码编译 aseprite-zodream梦想开源/个人编程日记 记录一下字符串分隔split各语言之间的不同-zodream梦想开源/个人编程日记 c# Gzip解码无头内容-zodream梦想开源/个人编程日记 Windows 10 查看内存占用-zodream梦想开源/个人编程日记 UWP 使用 win2d:加阴影-zodream梦想开源/个人编程日记 清除 PowerShell 历史记录-zodream梦想开源/个人编程日记 c# 调用 c++ 的dll-zodream梦想开源/个人编程日记 c# 重写 c++ 程序笔记:遍历-zodream梦想开源/个人编程日记 Net Core 与 UWP 共用类开发-zodream梦想开源/个人编程日记 hashcat(二)找回rar解压密码-zodream梦想开源/个人编程日记 Godot 学习笔记(一)-zodream梦想开源/个人编程日记 升级vue3记录-zodream梦想开源/个人编程日记 angular 12 显示数学公式-zodream梦想开源/个人编程日记 js 监听按键事件-zodream梦想开源/个人编程日记 angular 12 ng-deep 使用注意事项-zodream梦想开源/个人编程日记 angular 16 动态生成组件-zodream梦想开源/个人编程日记 angular 12 动画执行完成事件-zodream梦想开源/个人编程日记 angular 12 全局搜索组件-zodream梦想开源/个人编程日记 angular 12 中单例 Service 的使用-zodream梦想开源/个人编程日记 js 实现一个正则替换-zodream梦想开源/个人编程日记 uwp win2d 使用-zodream梦想开源/个人编程日记 UWP Custom Control自定义控件开发-zodream梦想开源/个人编程日记 UWP 读取应用内资源-zodream梦想开源/个人编程日记 gin 使用笔记(二)出错点-zodream梦想开源/个人编程日记 gin 使用笔记(一)基础-zodream梦想开源/个人编程日记 angular 关于自定义组件事件传递-zodream梦想开源/个人编程日记 angular 11 怎么获取 Content-Disposition-zodream梦想开源/个人编程日记 apache 使用gzip 压缩 js、css-zodream梦想开源/个人编程日记 angular 11 返回上一页保留页面数据的思考-zodream梦想开源/个人编程日记 一个简单的HTML音视频播放器-zodream梦想开源/个人编程日记 Net Core 实现一个简单的分页功能-zodream梦想开源/个人编程日记 关于内容中的 @用户 加 话题 的一些想法-zodream梦想开源/个人编程日记 Github Host 更改-zodream梦想开源/个人编程日记 OBS-Studio 等录屏软件录制显示器内容的黑屏的解决方法-zodream梦想开源/个人编程日记 angular 11 FormBuilder 中 FormGroup 和 FormArray 使用-zodream梦想开源/个人编程日记 angular 11 ngrx/effects 使用理解-zodream梦想开源/个人编程日记 angular 11 ngrx/store 使用理解-zodream梦想开源/个人编程日记 angular 10 直接获取表单值-zodream梦想开源/个人编程日记 angular 10 使用 tinymce 编辑器-zodream梦想开源/个人编程日记 htaccess 搭配 angular 10 放在二级目录-zodream梦想开源/个人编程日记 微信小程序跨页面传值-zodream梦想开源/个人编程日记 js 对 FileList 进行文件过滤上传-zodream梦想开源/个人编程日记 angular自定义表单组件支持 formControlName-zodream梦想开源/个人编程日记 基于不同形式的json响应处理-zodream梦想开源/个人编程日记 flutter CupertinoPicker 使用不显示-zodream梦想开源/个人编程日记 CC协议-zodream梦想开源/个人编程日记 flutter margin 负值实现-zodream梦想开源/个人编程日记 win10添加删除开机自启项-zodream梦想开源/个人编程日记 Wallpager Engine 删除记录-zodream梦想开源/个人编程日记 angular10教程之http 拦截器-zodream梦想开源/个人编程日记 dpl 文件-zodream梦想开源/个人编程日记 微信小程序开发记录(一)真机无法进入页面-zodream梦想开源/个人编程日记 flutter 跳转页面操作上一页-zodream梦想开源/个人编程日记 Regex Generator 使用指南-zodream梦想开源/个人编程日记 go init函数-zodream梦想开源/个人编程日记 angular 9 升级 angular 10-zodream梦想开源/个人编程日记 kotlin AndroidManifest 注意事项-zodream梦想开源/个人编程日记 对于zodream 框架的优化的思考-zodream梦想开源/个人编程日记 flutter 页面滚动条-zodream梦想开源/个人编程日记 flutter swiper 使用-zodream梦想开源/个人编程日记
升级 SiteServer CMS 并迁移到 Linux 服务器-zodream梦想开源/个人编程日记
2024-05-07 · via zodream梦想开源/个人编程日记

前言

以前使用 SiteServer CMS 6.8 在 Windows server 12 的服务器上部署了两个企业站,现在需要换到 Linux 服务器上。

SiteServer CMS 6.8 使用的是 Asp.net 不支持Linux 系统,所以需要升级到 SiteServer CMS 7

SiteServer CMS 7 使用的是 .NET Core 支持跨平台。

这里干脆升级到最新的 SiteServer CMS 7.30 (.NET 8)

先决条件

Windows 服务器未过期或拥有Windows电脑并安装了 IIS + MySQL + Asp net core 运行时

在Windows中运行SSCMS

SSCMS老版本升级

概念讲解

SSCMS 的模板语法不需要变动;

主要是数据表的变动;

分步指导

假设旧版本的数据已经在MySQL数据库中

  1. 在Windows上部署 SSCMS 7.30

官网 直接下最新的 windows 版本即可

解压放到一个文件里,例如 D:/sscms

根据 “SSCMS老版本升级” 升级文档进行操作即可

  1. 更新数据表

新建一个文件 D:/sscms/old.json

{
    "Database": {
        "Type": "MySql",
        "ConnectionString": "Server=127.0.0.1;Uid=root;Pwd=root;Database=sqldb_old;SslMode=none;CharSet=utf8"
    }
}

123456

D:/sscms 文件夹中打开终端 PowerShell,运行命令更新数据

.\sscms data backup -d backup -c old.json

.\sscms data update -d backup

123

新建一个文件 D:/sscms/sscms.json,

注意sqldb_new 数据库必须为空

{
    "Database": {
        "Type": "MySql",
        "ConnectionString": "Server=127.0.0.1;Uid=root;Pwd=root;Database=sqldb_new;SslMode=none;CharSet=utf8"
    }
}

123456

运行命令恢复数据

sscms data restore -d update

1

完成数据恢复后,需要在浏览器中进入 http://<域名>/ss-admin/syncDatabase/ 数据库升级界面,点击升级按钮,完成数据库升级。

注意: D:/sscms/sscms.json 需要增加 SecurityKey 字段,不然后台登录验证码无法显示

{
    "IsProtectData": false,
    "IsSafeMode": false,
    "SecurityKey": "2cf8fcc7150b6f839784231b8b959217cc0840f20623813b",
    "Database": {
        "Type": "MySql",
        "ConnectionString": "Server=127.0.0.1;Uid=root;Pwd=root;Database=sqldb_new;SslMode=none;CharSet=utf8"
    },
    "Redis": {
        "ConnectionString": ""
    },
    "IsDisablePlugins": false,
    "AdminRestriction": {
        "Host": "",
        "AllowList": [],
        "BlockList": []
    },
    "Cors": {
        "IsOrigins": false,
        "Origins": []
    }
}

12345678910111213141516171819202122

  1. 升级中的一些问题

后台登录验证码无法显示

D:/sscms/sscms.json 需要增加 SecurityKey 字段,具体值需要新安装一个SSCMS系统(删除D:/sscms/sscms.json文件即可),复制新的 sscms.json 文件更改 Database.ConnectionString 值即可

老版本的密码不能用了

新安装一个SSCMS系统(删除D:/sscms/sscms.json文件即可),设置管理员密码,然后到数据库中 找到表 siteserver_administrator 复制 PasswordPasswordSalt 两个字段值即可。

后台登录提示字段不存在

需要手动复制新系统的数据表结构。因为SSCMS版本变动表结构也发生了变动。

登录进入显示需要创建站点

需要修改数据表 siteserver_site 的字段 SiteType 值为 web

前台页面导航栏显示不全

需要到后台的栏目管理->编辑栏目手动勾选 栏目组 导航即可

Snipaste_2024-05-07_10-46-29.jpg

前台页面的包含文件不加载

需要到后台的显示管理-> 包含文件管理 添加即可

Snipaste_2024-05-07_10-46-53.jpg

  1. 在 linux 系统安装 netcore 环境

这里使用的是阿里云ECS服务器

使用命令 lsb_release -a 查询的系统信息为

LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: AlibabaCloud
Description:    Alibaba Cloud Linux release 3 (Soaring Falcon)
Release:        3
Codename:       SoaringFalcon

12345

所以安装 netcore 的方法参考:在RHEL和CentOS Stream中运行SSCMS

sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm

sudo dnf install aspnetcore-runtime-8.0

# 验证dotnet core runtime是否安装成功
dotnet --info

123456

  1. 配置站点

假设已安装过 Nginx

a站点

nginx 配置

server {
        listen       80;
        server_name  a.com;
        root         /data/a; # 设置站点根目录
        location / {
            proxy_pass         http://localhost:5000;
            proxy_http_version 1.1;
            proxy_set_header   Upgrade $http_upgrade;
            proxy_set_header   Connection keep-alive;
            proxy_set_header   Host $host;
            proxy_cache_bypass $http_upgrade;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_connect_timeout       600;
            proxy_send_timeout          600;
            proxy_read_timeout          600;
            send_timeout                600;
        }
    }

1234567891011121314151617181920

a 站点的 /data/a/sscms.json

{
    "IsProtectData": false,
    "IsSafeMode": false,
    "SecurityKey": "2cf8fcc7150b6f839784231b8b959217cc0840f20623813b",
    "Database": {
        "Type": "MySql",
        "ConnectionString": "Server=127.0.0.1;Uid=root;Pwd=root;Database=sqldb_a;SslMode=none;CharSet=utf8"
    },
    "Redis": {
        "ConnectionString": ""
    },
    "IsDisablePlugins": false,
    "AdminRestriction": {
        "Host": "",
        "AllowList": [],
        "BlockList": []
    },
    "Cors": {
        "IsOrigins": false,
        "Origins": []
    }
}

12345678910111213141516171819202122

创建 a 站点的服务文件 /etc/systemd/system/a.service

[Unit]
Description=a

[Service]
WorkingDirectory=/data/a
ExecStart=/usr/bin/dotnet /data/a/SSCMS.Web.dll
Restart=always
# Restart service after 10 seconds if the sscms service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=sscms
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

1234567891011121314151617

b 站点

a站点

nginx 配置

server {
        listen       80;
        server_name  b.com;
        root         /data/b; # 设置站点根目录

        location / {
            proxy_pass         http://localhost:5001;
            proxy_http_version 1.1;
            proxy_set_header   Upgrade $http_upgrade;
            proxy_set_header   Connection keep-alive;
            proxy_set_header   Host $host;
            proxy_cache_bypass $http_upgrade;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_connect_timeout       600;
            proxy_send_timeout          600;
            proxy_read_timeout          600;
            send_timeout                600;
        }
    }

123456789101112131415161718192021

b 站点的 /data/b/sscms.json

{
    "Urls": "http://localhost:5001",
    "IsProtectData": false,
    "IsSafeMode": false,
    "SecurityKey": "2cf8fcc7150b6f839784231b8b959217cc0840f20623813b",
    "Database": {
        "Type": "MySql",
        "ConnectionString": "Server=127.0.0.1;Uid=root;Pwd=root;Database=sqldb_b;SslMode=none;CharSet=utf8"
    },
    "Redis": {
        "ConnectionString": ""
    },
    "IsDisablePlugins": false,
    "AdminRestriction": {
        "Host": "",
        "AllowList": [],
        "BlockList": []
    },
    "Cors": {
        "IsOrigins": false,
        "Origins": []
    }
}

1234567891011121314151617181920212223

创建 b 站点的服务文件 /etc/systemd/system/b.service

[Unit]
Description=b

[Service]
WorkingDirectory=/data/b
ExecStart=/usr/bin/dotnet /data/b/SSCMS.Web.dll
Restart=always
# Restart service after 10 seconds if the sscms service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=sscms
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

1234567891011121314151617

  1. 启动服务
sudo systemctl enable a.service

sudo systemctl start a.service

sudo systemctl status a.service # 验证服务是否启动

123456

Snipaste_2024-05-07_10-43-12.jpg

没有报错即配置正确,

b站点服务同理

  1. 导入数据

这里需要注意

在 Windows 中数据表表名都是小写,但是在Linux 环境下是区分大小写的,所以需要手动更改 sql 文件中的数据库表名,再导入

例如 siteserver_administratorsinroles 需要改为 siteserver_AdministratorsInRoles

具体对应表需要重新再 linux 下安装即可

  1. 导入模板文件、资源文件

总结

升级过程还是比较繁琐的,需要有耐心。

转载请保留原文链接: https://zodream.cn/blog/id/261.html