# 在 Ubuntu 中运行 SSCMS

本文我们将以 Ubuntu 22.04 为主示范如何在 Linux 操作系统中部署并安装 SSCMS 系统,其他 Linux 版本系统安装步骤基本一致。

# 1、安装.NET Core 运行时

安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。

打开终端并运行以下命令:

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

安装 .NET Core 运行时,在终端中,运行以下命令。

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-8.0

验证.NET Core运行时是否安装成功

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

使用 apt-get 安装 Nginx。 安装程序将创建一个 systemd init 脚本,该脚本运行 Nginx,作为系统启动时的守护程序 。 按照以下网站上的 Ubuntu 安装说明操作:Nginx:官方 Debian/Ubuntu 包 (opens new window)

sudo apt-get update
sudo apt-get install nginx

因为是首次安装 Nginx,通过运行以下命令显式启动:

sudo service nginx start

确认浏览器显示 Nginx 的默认页。 可在 http://<server_IP_address>/index.nginx-debian.html 访问页面。

# 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地址或域名>,如果设置无误,浏览器将显示如下界面:

SSCMS 默认页。

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 系统已经在 Ubuntu 操作系统中部署完毕,我们可以开始正式安装 SSCMS 系统了。

# 6、安装 SSCMS 系统

TIP

如果在云服务器环境中安装,请先配置安全组,确保网站地址及端口能够被外网访问。

打开浏览器,访问地址 http://<IP地址或域名>/ss-admin/install,进入 SSCMS 系统安装界面:

勾选我已经阅读并同意此协议,进入环境检测界面:

点击下一步,进入数据库设置界面:

在此,我们选择 SQLite 数据库,如果希望使用其他数据库,请根据需要选择,点击下一步,进入缓存设置界面:

在此,我们选择 默认缓存,如果希望使用Redis 分布式缓存,请根据需要选择,点击下一步,进入管理员设置界面:

在管理员设置界面中设置超级管理员的用户名及密码,设置完成后点击下一步,系统将显示安装成功界面:

点击 进入管理后台 按钮进入后台,至此,SSCMS 系统安装完毕。

上次更新: 2024/2/19 上午8:48:04