Docker部署开源项目Django-CMS企业内容管理系统

简介: 【5月更文挑战第20天】Docker部署开源项目Django-CMS企业内容管理系统

一、Django-CMS介绍

1.1 Django-CMS简介

Django-CMS是一款基于Django框架的开源企业内容管理系统,它功能实用、安全可靠,支持拖拽上传图片、轮播图、Docker 部署等功能,可轻松进行二次开发,多用于构建企业官网。

1.2 Django-CMS特点

  • 分层页面
  • 对多语言网站的广泛内置支持
  • 多站点支持
  • 草稿/发布工作流
  • 版本控制
  • 复杂的发布体系结构,也可以在您自己的应用程序中使用
  • 前端内容编辑
  • 嵌套插件的分层内容结构
  • 您自己的应用程序可以挂钩的可扩展导航系统
  • SEO 友好的网址
  • 旨在完全集成到其他应用程序中

1.3 Django-CMS使用场景

Django-CMS作为一个强大且灵活的内容管理系统,其应用场景广泛,特别适合于需要频繁更新内容、拥有一定内容管理需求的网站项目。以下是Django-CMS的一些典型使用场景:

  1. 企业官方网站:企业可以利用Django-CMS构建和维护具有高度互动性的官方网站,发布公司新闻、产品介绍、团队介绍、联系方式等信息。其拖拽上传图片和轮播图功能有助于提升网站视觉效果,而Django的安全性和稳定性则确保了企业数据的安全。

  2. 博客与新闻站点:对于需要定期发布文章、新闻或博客的平台,Django-CMS提供了便捷的内容编辑和发布工具,支持多种内容格式,便于内容创作者和编辑团队高效工作。

  3. 电子商务平台的内容管理:虽然Django-CMS本身不是专门的电商解决方案,但它可以与Django的其他电商框架(如Oscar)集成,用于管理商品描述、促销信息、用户评论等内容,增强电商平台的营销能力和用户体验。

  4. 教育机构网站:学校、培训机构等教育机构可以利用Django-CMS建立课程介绍、教师风采、校园新闻等板块,方便地更新和展示各类教育信息,同时支持在线报名、课程预约等功能的集成。

  5. 政府与非营利组织网站:政府机关和非营利组织常需发布政策公告、活动信息、服务指南等内容。Django-CMS的安全性和易用性使之成为构建这类网站的理想选择,支持多级权限管理,确保信息发布的准确性与及时性。

  6. 个人作品集与简历网站:艺术家、设计师、程序员等专业人士可以使用Django-CMS快速搭建个人展示网站,上传作品、简历,并通过自定义模板展现个人风格。

  7. 内部知识管理系统:企业或组织可以利用Django-CMS构建内部知识库、FAQ、文档管理系统,方便员工查询和分享工作相关的资料和信息。

二、本地环境介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostname IP地址 操作系统版本 Docker版本
jeven 192.168.3.166 centos 7.6 20.10.17

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎使用;
2.在Docker环境下成功部署Django-CMS企业内容管理系统。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2023-06-10 00:48:40 CST; 16h ago
     Docs: https://docs.docker.com
 Main PID: 9546 (dockerd)
    Tasks: 15
   Memory: 160.7M

3.2 检查Docker版本

检查Docker版本

[root@jeven ~]# docker -v 
Docker version 20.10.17, build 100c701

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

[root@jeven ~]# docker compose version
Docker Compose version v2.6.0

四、下载django-cms-quickstart

4.1 django-cms-quickstart介绍

此版本使用运行的Python 3.9以及Django 3.2和Django CMS 3.11的最新版本。

4.2 下载django-cms-quickstart

  • 下载django-cms-quickstart
[root@jeven data]# git clone https://github.com/django-cms/django-cms-quickstart.git
Cloning into 'django-cms-quickstart'...
remote: Enumerating objects: 301, done.
remote: Counting objects: 100% (118/118), done.
remote: Compressing objects: 100% (62/62), done.
remote: Total 301 (delta 91), reused 56 (delta 56), pack-reused 183
Receiving objects: 100% (301/301), 88.28 KiB | 0 bytes/s, done.
Resolving deltas: 100% (171/171), done.
  • 查看目录结构
[root@jeven data]# cd django-cms-quickstart/
[root@jeven django-cms-quickstart]# tree -L 2 ./
./
├── backend
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├── static
│   ├── templates
│   ├── urls.py
│   └── wsgi.py
├── docker-compose.yml
├── Dockerfile
├── LICENSE
├── manage.py
├── README.md
├── requirements.in
└── requirements.txt

3 directories, 12 files

4.3 查看Dockerfile文件

查看Dockerfile文件内容

[root@jeven django-cms-quickstart]# cat Dockerfile 
FROM python:3.9
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
RUN python manage.py collectstatic --noinput
CMD uwsgi --http=0.0.0.0:80 --module=backend.wsgi

4.4 查看docker-compose.yml文件

查看docker-compose.yml文件内容

[root@jeven django-cms-quickstart]# cat docker-compose.yml 
version: "3"

services:
  web:
    # the application's web service (container) will use an image based on our Dockerfile
    build: .
    # map the internal port 80 to port 8000 on the host
    ports:
      - "8000:80"
    # map the host directory to app (which allows us to see and edit files inside the container)
    volumes:
      - ".:/app:rw"
      - "./data:/data:rw"
    # the default command to run whenever the container is launched
    command: python manage.py runserver 0.0.0.0:80
    # the URL 'postgres' or 'mysql' will point to the application's db service
    networks:
      - djangocmsnet

    env_file: .env-local

  database_default:
    # Select one of the following db configurations for the database
    image: postgres:13.5-alpine
    ports:
      - "5432:5432/tcp"  # allow your local dev env to connect to the db
    environment:
      POSTGRES_DB: "db"
      POSTGRES_PASSWORD: "password"
      POSTGRES_HOST_AUTH_METHOD: "trust"
      SERVICE_MANAGER: "fsm-postgres"

    networks:
      - djangocmsnet

    volumes:
      - ".:/app:rw"

networks:
  djangocmsnet:

五、部署Django-CMS

5.1 构建镜像

构建镜像django-cms-quickstart_web

docker compose build web

在这里插入图片描述

查询本地镜像

[root@jeven django-cms-quickstart]# docker images |grep web
django-cms-quickstart_web                                   latest                 c2c85dab6120   29 minutes ago   1.15GB
lihaixin/webssh2                                            ssh                    2e477b65711b   2 years ago      15.8MB

5.2 启动database_default容器

启动database_default容器

docker compose up -d database_default
[root@jeven django-cms-quickstart]# docker compose up -d database_default
[+] Running 9/9
 ⠿ database_default Pulled                                                                                                  24.9s
   ⠿ 59bf1c3509f3 Already exists                                                                                             0.0s
   ⠿ c50e01d57241 Pull complete                                                                                              0.7s
   ⠿ a0646b0f1ead Pull complete                                                                                              0.8s
   ⠿ 08018e47fc43 Pull complete                                                                                              8.2s
   ⠿ 6014f2775635 Pull complete                                                                                              8.3s
   ⠿ 85760f97d4b8 Pull complete                                                                                              8.4s
   ⠿ 3e07f59f91db Pull complete                                                                                              8.4s
   ⠿ 3f86c399b0a1 Pull complete                                                                                              8.5s
[+] Running 2/2
 ⠿ Network django-cms-quickstart_djangocmsnet          Created                                                               0.1s
 ⠿ Container django-cms-quickstart-database_default-1  Started                                                               0.5s

5.3 数据库迁移

数据库迁移

docker compose run web python manage.py migrate

在这里插入图片描述

5.4 创建用户

创建Django-CMS的管理用户和密码。

docker compose run web python manage.py createsuperuser

在这里插入图片描述

5.5 部署Django-CMS

使用docker compose快速一键部署Django-CMS

[root@jeven django-cms-quickstart]# docker compose up -d
[+] Running 2/2
 ⠿ Container django-cms-quickstart-web-1               Started                                                               0.8s
 ⠿ Container django-cms-quickstart-database_default-1  Started                                                               0.7s

5.6 检查Django-CMS容器状态

检查Django-CMS容器状态

[root@jeven django-cms-quickstart]# docker compose ps
NAME                                       COMMAND                  SERVICE             STATUS              PORTS
django-cms-quickstart-database_default-1   "docker-entrypoint.s…"   database_default    running             0.0.0.0:5432->5432/tcp, :::5432->5432/tcp
django-cms-quickstart-web-1                "python manage.py ru…"   web                 running             0.0.0.0:8000->80/tcp, :::8000->80/tcp

六、访问Django-CMS

6.1 进入后台管理登录页面

访问地址:http://192.168.3.166:8000/admin
账号密码:root/admin,为之前设置好的管理员账号和密码。

在这里插入图片描述

6.2 创建测试网站

  • 创建一个测试网站,选择新建网页。

在这里插入图片描述

  • 输入网站的基本信息,以及网站内容。

在这里插入图片描述

在这里插入图片描述

6.3 访问测试网站效果

访问地址:http://192.168.3.166:8000/

在这里插入图片描述

七、总结

Django-CMS是一个基于Django的强大内容管理系统,它通过提供直观的拖拽上传、轮播图设置以及Docker部署等特性,极大地简化了企业官网及其他类型网站的建设和内容管理流程。其安全可靠的核心,结合易于二次开发的设计,使得无论是构建信息丰富的公司门户、维护动态博客,还是部署复杂的多内容格式平台,都能在保证高效与灵活性的同时,实现快速上线与迭代,是现代数字内容管理的理想解决方案。

相关文章
|
9月前
|
存储 前端开发 应用服务中间件
Django 实战:静态文件与媒体文件从开发配置到生产部署
Django项目中,静态文件(Static Files)和媒体文件(Media Files)是两类不同用途的文件。本文详细介绍了它们的区别、配置方法以及在开发与生产环境中的处理方式,并结合用户头像上传功能进行实战演示,最后讲解了如何通过Nginx或OpenResty部署静态与媒体文件服务。
436 1
|
10月前
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
335 1
|
监控 关系型数据库 MySQL
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
944 30
|
12月前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu系统的Docker上安装MySQL的方法
以上的步骤就是在Ubuntu系统的Docker上安装MySQL的详细方法,希望对你有所帮助!
1196 12
|
运维 网络安全 文件存储
找不到类似 Docker Desktop 的 Web 管理界面?试试这些开源方案
Docker Desktop 是本地容器化开发的利器,但存在无法通过 Web 远程管理、跨平台体验不一致等问题。为此,推荐几款轻量级、可 Web 化管理的 Docker 工具:Portainer 功能全面,适合企业级运维;CasaOS 集成应用商店和 NAS 功能,适合家庭/个人开发环境;Websoft9 提供预集成环境,新手友好。这些工具能有效提升容器管理效率,满足不同场景需求。
961 3
|
Ubuntu Linux Docker
如何在Ubuntu 20.04系统中安装Docker
安装 Docker 引擎的步骤如下:首先更新系统包索引 (`sudo apt update`),安装必要依赖包 (`apt-transport-https` 等),添加 Docker 官方 GPG 密钥及 APT 仓库。接着再次更新包索引并安装 Docker 引擎及相关工具 (`docker-ce` 等)。最后启动 Docker 服务并设置开机自启,通过 `docker --version` 和运行测试容器 (`sudo docker run hello-world`) 验证安装是否成功。
4892 0
|
运维 数据可视化 开发者
Dpanel:Star2k,短短时间就被大家称为GitHub开源神器!轻量化Docker面板,还在等什么
如今的软件开发和运维领域,Docker容器技术已经成为一种主流的解决方案,它允许开发者和系统管理员以更高效、更灵活的方式部署和管理应用程序。然而,Docker的命令行界面虽然强大,但对于某些用户来说可能不够直观。今天,我们要介绍的开源项目——dpanel,就是一个轻量化的Docker可视化管理面板,它以其简洁、高效的特点,为用户提供了一个易于操作的界面来管理Docker容器和镜像。
1593 0
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
499 4
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
1373 2
|
Java 应用服务中间件 Linux
使用docker部署springboot项目小白教程
使用docker部署springboot项目小白教程
1016 0