Sign inSign up

airplayx/cms

By airplayx

•Updated 11 months ago

CatCms 是一款轻量级支持多用户,数据读写分离的内容管理系统。支持媒体文件管理,后台功能丰富,使用灵活,主题开发简单。

Image
1

1.8K

airplayx/cms repository overview

CatCms

⁠💡 简介

CatCms⁠ 是一款轻量级支持多用户,数据读写分离的内容管理系统。支持媒体文件管理,后台功能丰富,使用灵活,主题开发简单。

⁠🗃 案例

⁠✨ 功能

  • 多用户博客平台
  • Markdown支持多种编辑模式
  • 聚合分类 / 标签
  • 自定义导航
  • 多主题 / 多语言
  • Atom / RSS / Sitemap
  • 文章搜索
  • 可配置动静分离

⁠🎨 界面

⁠管理后台

dashboard

⁠编辑主题

code

⁠主题选择

theme

⁠媒体管理

media

⁠🛠️ 快速体验

docker run -d --name=cms --restart=always -p 80:2023 airplayx/cms
⁠NGINX 推荐配置
map $http_upgrade $connection_upgrade {
	default upgrade;
	'' close;
}

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	listen 443 ssl default_server;
	listen [::]:443 ssl default_server;
	server_name _ ;
	if ($host != $server_name) {
		return       444;
	}
	ssl_certificate          cert/default.crt;    
	ssl_certificate_key      cert/default.key;   
}

server {
	listen 80;
	server_name domain.com *.domain.com;
	return 301 https://$http_host$request_uri;
}

server {
	listen 443 ssl;
	server_name domain.com *.domain.com;
	ssl_certificate conf.d/ssl/1_domain.com_bundle.crt;
	ssl_certificate_key conf.d/ssl/2_domain.com.key;
	ssl_session_cache shared:SSL:1m;
	ssl_session_timeout  10m;
	ssl_ciphers HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers on;

	location / {
		if ($http_user_agent ~* "baiduspider|360spider|Sogou web spider|
		Sosospider|YisouSpider|Bingbot|Googlebot") {
			#return 403;
		}

		if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
			return 403;
		}

		if ($http_user_agent ~* "WinHttp|WebZIP|FetchURL|node-superagent|java/|FeedDemon|Jullo|
		JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|Java|Feedly|
		Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|Microsoft URL Control|
		Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|
		HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|YandexBot|FlightDeckReports|
		Linguee Bot|^$" ) {
			return 403;
		}

		# your server port
		proxy_pass http://localhost:2023;
		client_max_body_size 200m;
		proxy_set_header Host $host;
		set_real_ip_from 0.0.0.0/0;
		real_ip_header X-Forwarded-For;
		proxy_set_header X-Real-IP $remote_addr;
		# proxy_set_header X-Appengine-Remote-Addr $remote_addr;
		# proxy_set_header CF-Connecting-IP $remote_addr;
		proxy_set_header X-Forwarded-For $remote_addr;
		proxy_set_header X-Forwarded-Proto $scheme;

		add_header X-Frame-Options DENY always;
		add_header X-Content-Type-Options nosniff always;

		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection  $connection_upgrade;
	}
}

⁠🏘️ 社区

QQ群⁠

QQgroup

⁠📄 授权

CatCms 域名授权

⁠🙏 鸣谢

  • Nightingale⁠: 夜莺是新一代国产智能监控系统
  • Pipe⁠: Pipe是一款小而美打开源博客平台
  • Vue.js⁠: 渐进式 JavaScript 框架
  • V-md-editor⁠: v-md-editor 是基于 Vue 开发的 markdown 编辑器组件
  • Gin⁠: 又快又好用的 golang HTTP Web 框架
  • GORM⁠: 极好的 golang ORM 库

⁠特性说明

⁠发布文章

CatCms 的文章编辑器支持 Markdown,并支持复制/粘贴图片、粘贴 HTML 自动转换 Markdown、流程图、数学公式等。

另外,可以为文章启用自动配图,会自动在文章最前面插入所选择的配图。

⁠聚合分类

CatCms 使用“自底向上”的分类方式:

  1. 定义分类,并配置该分类包含的标签
  2. 查询某个分类文章列表时通过分类-> 标签集-> 标签关联的文章进行聚合

也就是说一篇文章在编辑时只需要打标签,访问分类时会根据该分类包含的标签将文章关联出来。这是一个自底向上的信息架构,在使用时更灵活一些,可以随时调整分类而不必重新更新文章。

⁠域名绑定

在 CatCms 平台上的每个博客都可以配置独立域名值:

  1. 网站主解析泛域名至服务器
  2. 通过配置 NGINX 实现域名反向代理
  3. 注册用户并在后台绑定域名

⁠运维

⁠数据库

CatCms 使用 Mysql 数据库引擎,同时支持数据读写分离方式运行,配置主从数据库成功后可在后台->其他栏目查看详细信息。

建议定期备份数据文件,避免意外情况导致数据丢失。

⁠版本升级

在管理后台的关于中可以检查版本更新,如果提示有更新请尽快升级,一般来说升级只需要下载新的发布包然后部署重启,实际升级方式以每次版本发布公告为准。

⁠FAQ

⁠如何做友链页面?

CatCms 拥有独立的友链管理功能。可通过后台->系统设置->友情链接进行管理。

⁠结语

  • 如果你想自己开发 CatCms 主题,请参考后台->高级功能栏目
  • 如果你在使用 CatCms 的过程中碰到问题或者有功能需求,欢迎参与 QQ群⁠ 讨论

Tag summary

Content type

Image

Digest

sha256:5def03d12…

Size

18.2 MB

Last updated

11 months ago

docker pull airplayx/cms