Skip to content
/ cms Public

DDD 开源.NET CMS、跨平台, 兼容.NET Core和ASP.NET,支持Docker容器

License

Notifications You must be signed in to change notification settings

ixre/cms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9f5b468 · Dec 15, 2024
Jun 25, 2024
Dec 15, 2024
Aug 29, 2020
Oct 24, 2021
Dec 15, 2024
Sep 30, 2024
Oct 27, 2021
Sep 29, 2024
Aug 22, 2024
Oct 24, 2021
Dec 2, 2024
Mar 4, 2024
Oct 27, 2023
Jan 25, 2024

Repository files navigation

JR-CMS

Build Status

基于.Net + DDD 构建的跨平台多站点开源内容管理系统; 同时支持ASP.NET 4.x.NET6.0; 可以运行在 Windows,Linux,MacOSX 等操作系统;支持 Docker 容器。 此项目已维护超过十年, 不断使用最合适的技术改进. 独立服务器上建议运行.NET6版,或上传到虚拟主机。

¥ 99 元/年的虚拟主机也能开出多个网站, 推荐的虚拟主机参考:主机服务商评测

特性

  • 跨平台:支持 Windows、Linux、MacOSX 运行,同时支持虚拟主机。
  • 支持容器:提供容器镜像,可用 Docker/Podman 部署至服务器。
  • 支援多种数据库:支持 MySQL、SQLite、Sql Server、ACCESS 数据库, 推荐使用:MySQL 作为数据库。
  • 领域驱动设计:核心代码使用 DDD 领域驱动设计构建,通过领域模型,提供了可扩展性。
  • 支持模板:内置模板引擎,编写简单。后台支持模板的安装,网络安装,修改,备份等。
  • 源代码编辑:支持在线编辑代码,支持 EMMET 插件自动生成 HTML 代码。
  • 支持插件:支持网络安装插件,卸载插件等。利用插件可开发自定义功能。比如内嵌的采集系统。
  • 多站点支持:支持后台创建站点、域名绑定、虚拟目录等,站点相互隔离,大大节省服务器空间开支和维护成本。
  • 内置 SEO 模块:内置站内连接,URL 提供等 SEO 工具。

在线演示站点-(运行于 CentOS7.2)


感谢您看到这个页面,如果对您有帮助,或您对此感兴趣,请 star 或 fork 支持一下作者吧!

快速开始

Windows 平台下,下载安装包链接, 运行命令启动服务:

dotnet JR.Cms.App.dll --urls http://+:8000

通过浏览器访问:http://localhost:8000

发布项目

打包发布需要环境如下:

  • .NET Standard 2.1及以上(.NET6/.NET7)
  • .NET Framework 4.5.1/Mono或以上

编译打包.Net程序包运行命令:

sh ./build.sh

编译打包ASP.NET程序包,运行命令:

sh ./aspnet_pack.sh

注:在 windows 平台打包,需要使用shell客户端运行命令, 比如:git-bash 安装git会默认安装

部署

一. 通过虚拟主机部署

  • 需准备一台支持 ASP.NET 4.0 的虚拟主机。
  • 下载程序文件: jrcms-aspnet-latest.tar.gz 并解压。
  • 通过 FTP 上传 ASP.NET 版的所有文件到虚拟主机。
  • 虚拟主机设置线程池为集成模式,版本更改为.NET4.0 及以上。

推荐虚拟主机服务商

  • 西部数码: 工单速度处理快, 虚拟主机买二年送一年。
  • 新网: 网络快,技术支持 24 小时在线处理。

二. 使用服务器或 VPS 部署

Windows(IIS)

  • 点击下载安装包 并解压;
  • 使用 IIS 添加站点,选择无托管代码, 完成部署。

Linux、MacOSX

curl -L https://github.com/ixre/cms/releases/download/v4.6/jrcms-latest.tar.gz | tar xz
cd cms && dotnet JR.Cms.App.dll --urls http://+:8080

浏览器访问: http://127.0.0.1:8080

 使用 Docker 容器运行

容器镜像托管在docker.io, 操作步骤如下:

创建存放 CMS 模板、数据、插件、文件的目录:

mkdir /data/cms && cd /data/cms

运行容器:

#!/usr/bin/env sh
podman='podman';if [ $(whereis podman) = 'podman:' ]; then podman='docker';fi

mkdir -p mysql/conf.d mysql/data config templates plugins uploads oem root

$podman rm -f mysql-website
$podman rm -f cms

$podman run -d -p 3306:3306 --name mysql-website \
   -e MYSQL_ROOT_PASSWORD=123456 \
   -v $(pwd)/mysql/conf.d:/etc/mysql/conf.d \
   -v $(pwd)/mysql/data:/var/lib/mysql \
   --restart always mysql:8

$podman run -d  --name cms -p 8080:80 \
    --volume=$(pwd)/config:/cms/config \
    --volume=$(pwd)/data:/cms/data \
    --volume=$(pwd)/templates:/cms/templates \
    --volume=$(pwd)/plugins:/cms/plugins \
    --volume=$(pwd)/uploads:/cms/uploads \
    --volume=$(pwd)/oem:/cms/oem \
    --volume=$(pwd)/root:/cms/root \
    --restart always jarry6/cms:latest

通过 Nginx 反向代理

server {
    listen       80;
    server_name     *.xxx.com;
    # SSL配置
    listen 443 default ssl;
    http2 on;
    ssl_certificate /etc/nginx/ssl/server.cer;
    ssl_certificate_key /etc/nginx/ssl/server.key;
    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    # gzip 配置
	gzip on;
    gzip_min_length  10k;
    gzip_comp_level 4;
    gzip_types      application/javascript text/css text/javascript image/jpeg image/gif image/png;

    client_max_body_size    10m;

    location / {
    proxy_pass      http://172.17.0.1:8081;
    proxy_set_header Host $host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

插件开发

详见:https://github.com/jsix/cms/tree/master/plugins

如何加入开发

请先在 github 上 fork 代码,克隆到本地修改后直接提交。 交流 QQ 群:737378973

捐助项目

如果项目对您有帮助, 可以购买虚拟主机向作者发起捐助. 如果您有购买的需要, 可以通过添加 QQ/微信:959398298购买主机发起对项目的赞助, 我们同时给到八折优惠和额外的技术支持。