# 在 RHEL 和 CentOS Stream 中运行 SSCMS
本文我们将以 RHEL 和 CentOS Stream
为主示范如何在 Linux 操作系统中部署并安装 SSCMS 系统,其他 Linux 版本系统安装步骤基本一致。
提示
SSCMS 支持 RHEL 7、RHEL 8、CentOS Stream 8 以及 CentOS Stream 9 发行版本。
# 1、安装.NET Core 运行时
安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm
.NET Core 运行时允许运行使用不随附运行时的 .NET Core 所开发的应用。 以下命令安装 ASP.NET Core 运行时,这是与 .NET Core 最兼容的运行时。 在终端中,运行以下命令。
sudo dnf install aspnetcore-runtime-8.0
# 验证dotnet core runtime是否安装成功
dotnet --info
# 2、下载并解压 SSCMS 安装包
创建并进入 SSCMS 系统运行的文件夹,例如我们打算在 /var/www
中运行 SSCMS:
创建并进入文件夹:
mkdir -m 666 /var/www/
cd /var/www
下载 SSCMS 安装包,最新的产品下载地址请进入产品官网获取:
wget https://dl.sscms.com/cms/7.3.0/sscms-7.3.0-linux-x64.tar.gz
# 或者
curl -O https://dl.sscms.com/cms/7.3.0/sscms-7.3.0-linux-x64.tar.gz
解压安装包至 /var/www
文件夹中并删除安装包:
tar -xzf sscms-7.3.0-linux-x64.tar.gz
rm sscms-7.3.0-linux-x64.tar.gz -f
# 3、安装 Nginx
备注
如果需要可选 Nginx 模块,则可能需要从源代码生成 Nginx。
# 安装nginx
sudo dnf install nginx
# 启动nginx(需要先确保80端口未被其他程序占用)
systemctl start nginx
# 设为开机启动
systemctl enable nginx
# 4、将 Nginx 设置为 SSCMS 反向代理
安装完毕 Nginx后,请修改 /etc/nginx/nginx.conf
配置文件,在文本编辑器中打开它,并将 server
内容替换为以下内容:
# SSCMS Nginx Config ...
server {
listen 80;
server_name _;
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;
}
}
使用上述配置文件,Nginx 接受端口 80 上的流量并将请求转接到 http://localhost:5000
中的 SSCMS。
如果希望指定域名,可以将 server_name _;
替换为 server_name example.com;
,Nginx 将只匹配 example.com
上的流量并转接到 SSCMS。
注意
未能指定正确的 server_name 指令 (opens new window)会公开应用的安全漏洞。 如果可控制整个父域(区别于易受攻击的 *.com
),则子域通配符绑定(例如,*.example.com
)不具有此安全风险。 有关详细信息,请参阅 rfc7230 第 5.4 条 (opens new window)。
除此之外,由于 Nginx 默认允许上传文件的大小是 1M,通常还需要设置 Nginx 允许上传文件的大小:
client_max_body_size 500m;
500m表示最大上传500M,可以根据实际需要进行设置。
以下是完整的 Nginx 配置文件示例,具体配置可以根据实际情况更改:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
client_max_body_size 500m;
# SSCMS Nginx Config ...
server {
listen 80;
server_name _;
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;
}
}
}
完成配置 Nginx 后,运行 sudo nginx -t
来验证配置文件的语法。
sudo nginx -t
如果配置文件测试成功,可以通过运行 sudo nginx -s reload
强制 Nginx 重新载入。
sudo nginx -s reload
# 测试 Nginx 反向代理
导航到 SSCMS 根目录,通过命令行直接运行 SSCMS 系统:
cd /var/www
dotnet SSCMS.Web.dll
运行命令后,打开浏览器,访问 http://<IP地址或域名>
,如果设置无误,浏览器将显示如下界面:
Nginx 将对 http://<IP地址或域名>
发起的请求转接到在 http://127.0.0.1:5000 中的 SSCMS 系统。如果 SSCMS 在服务器上运行,但无法通过 http://<IP地址或域名>
地址访问,请检查服务器的防火墙,并确认端口 80 已打开。
测试 Nginx 反向代理完成后,请在命令提示符处按 Ctrl+C 关闭 SSCMS。
# 5、将 Nginx 设置为 SSCMS 进程管理器
接下来,我们需要将 Nginx 设置为 SSCMS 的进程管理器。
# 创建服务文件
创建服务定义文件 sscms.service
:
sudo touch /etc/systemd/system/sscms.service
将以下内容保存至 /etc/systemd/system/sscms.service
:
[Unit]
Description=SSCMS
[Service]
WorkingDirectory=/var/www
ExecStart=/usr/bin/dotnet /var/www/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
保存文件并启用服务。
sudo systemctl enable sscms.service
运行服务,并确认它正在运行。
sudo systemctl start sscms.service
sudo systemctl status sscms.service
● sscms.service - SSCMS
Loaded: loaded (/etc/systemd/system/sscms.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2020-08-30 04:40:33 CST; 9s ago
Main PID: 17983 (dotnet)
CGroup: /system.slice/sscms.service
└─17983 /usr/bin/dotnet /var/www/SSCMS.Web.dll
在配置了反向代理并通过 systemd 管理 SSCMS 后,Web 应用现已完全配置,并能通过浏览器从地址 http://<IP地址或域名>
进行访问了。
至此,SSCMS 系统已经在 CentOS Stream操作系统中部署完毕,我们可以开始正式安装 SSCMS 系统了。
# 6、安装 SSCMS 系统
TIP
如果在云服务器环境中安装,请先配置安全组,确保网站地址及端口能够被外网访问。
打开浏览器,访问地址 http://<IP地址或域名>/ss-admin/install
,进入 SSCMS 系统安装界面:
勾选我已经阅读并同意此协议,进入环境检测界面:
点击下一步,进入数据库设置界面:
在此,我们选择 SQLite
数据库,如果希望使用其他数据库,请根据需要选择,点击下一步,进入缓存设置界面:
在此,我们选择 默认缓存
,如果希望使用Redis 分布式缓存,请根据需要选择,点击下一步,进入管理员设置界面:
在管理员设置界面中设置超级管理员的用户名及密码,设置完成后点击下一步,系统将显示安装成功界面:
点击 进入管理后台
按钮进入后台,至此,SSCMS 系统安装完毕。