宝塔面板是很多站长都在使用的操作面板,我们使用的也是宝塔面板。通过宝塔面板我们可以快速操作服务器系统。下面我们就一起看一下如何在宝塔面板下搭建DjacoreCMS。很多朋友在代码方面不是很擅长,不要有压力,跟着我们一步一步的复制就可以了

 

环境要求

服务器系统:优先推荐使用Debian,其他系统也可,但是极力不推荐使用windows

Python:3.11以上版本,最好不要使用3.10以下版本,据官方统计3.11以上版本比3.10要快很多。

Mysql:8.0以上版本,但最好不要使用最高的,因为往往最高版本的其他生态还没有准备好。推荐使用mysql 8.4 LTS版本。当然你也可以使用django支持的其他数据库,只是我们目前没有对其区分开发,高性能数据库的优势可能表现的不如理论上的好。

宝塔:推荐使用11.0.0以上

下载解压

我们在官网上公开了下载地址,大家可以轻松下载。下载下来后,我们在服务器的网站目录新建一个文件夹,我们以djacorecms为例进行说明。

通常我们的文件夹路径为

/www/wwwroot/djacorecms

我们将下载下来的文件放入djacore中进行解压。

以上就是DjacoreCMS的文件目录了。

数据库安装

DjacoreCMS支持多数数据库,我们只是选择了使用比较多的Mysql数据库为例为大家示范。

我们需要Mysql需要8.0以上版本,这样可以更好的性能。

如果你现在的数据库是宝塔软件商店中安装的低版本数据库,不要紧,我们可以使用宝塔Docker安装8.0以上版本。宝塔有Docker的详细安装教程。

如果你是在宝塔应用中安装的mysql8.0以上版本,你就可以直接向下进行。

宝塔面板-数据库-新建数据库:

 

在宝塔软件商店安装的Mysql选择本地服务器

Docker安装的Mysql选择mysqlxxxxx

我们需要记录一下数据库、用户名、密码。

然后选择确定,这样数据库就安装好了。

如果是Docker安装的数据库我们还需要设置一下权限,在我们刚才新建的数据库右侧有个权限,我们点击选择所有人

我们将我们刚才记录的数据库、用户名、密码填写到/www/wwwroot/djacorecms/config/connectionstrings.ini当中

/www/wwwroot/djacorecms/config/connectionstrings.ini

connectionstrings.ini

; connection_strings.ini
; 格式示例(按项目名称分组)
; 使用 sql=类型 简化配置

[production] ; 可选值:mysql/postgresql/sqlite3/oracle sql = mysql
name = djacorebeta user = root password = root host = 127.0.0.1 port = 3306

; ; 各数据库特有参数(按需配置)

; [mysqlparams] ; ; 字符集设置 ; charset = utf8mb4 ; ; 排序规则 ; collation = utf8mb4unicodeci
; ; 初始化命令 ; init
command = SET sqlmode='STRICTTRANSTABLES', waittimeout=28800 ; ; 连接超时(秒) ; connecttimeout = 30 ; ; 读超时(秒)
; read
timeout = 120 ; ; 写超时(秒) ; write_timeout = 120

; [pgsqlparams] ; ; SSL模式 ; sslmode = require ; ; 连接超时(秒) ; connecttimeout = 5 ; ; 客户端编码 ; clientencoding = utf8 ; ; SQL执行超时(毫秒) ; options = -c statementtimeout=30000 ; ; 启用TCP保活 ; keepalives = 1 ; ; 保活间隔(秒) ; keepalives_idle = 30

; [oracle_params] ; ; 多线程模式 ; threaded = true ; ; 字符编码 ; encoding = UTF-8 ; ; 国家字符编码
; nencoding = UTF-8 ; ; 连接模式 ; mode = SYSDBA ; ; 事件监控 ; events = false

; [sqlite3params] ; ; 锁超时(毫秒) ; timeout = 20 ; ; 事务隔离级别 ; isolationlevel = IMMEDIATE ; ; 日志模式 ; journalmode = WAL ; ; 缓存大小(KB) ; cachesize = -2000 ; ; 外键约束 ; foreign_keys = ON

; [development] ; engine = django.db.backends.mysql ; name = djacorebeta ; user = root ; password = root ; host = 127.0.0.1 ; port = 3306

在之前的几个版本中我们就优化了数据库配置的参数。目前默认只保留了数据库连接的基础参数,其他的情况大家可以根据自己的情况来修改,如果不理解无须修改。

建立虚拟环境

  1. 先安装python

    选择版本管理,选择合适版本的python,我们使用的是3.13,大家可以根据自己的需要选择,理论上目前要求是3.11以上的版本,具体的需要实测

  2. 创建虚拟环境

    设置好名称,选择我们刚才安装的python版本即可

此时我们就建立好了DjacoreCMS的虚拟环境。此时的虚拟环境中没有我们需要的依赖,相关依赖须我们在搭建项目的时候安装完成。在11.x以后的宝塔面板当中这个虚拟环境是可以复用的,也就是说我们只需要在每个服务器的第一个项目的时候建立项目,以后同样的项目我们就可以直接使用这个虚拟环境,实现网站的秒上线。

 

 

建立Python项目

宝塔面板--网站--python项目

 

然后我们选择添加python项目

  • 第一步我们选择UWSGI,我们这里以uwsgi为例,gunicorn也是支持的
  • 项目路径:路径指向的是manage.py 所在文件夹
  • python环境:选择我们刚才建立的虚拟环境
  • 项目端口:随意设置,只要是之前项目没有用过的即可,不需要在服务器安全策略中打开。
  • 入口文件和通讯协议:如果入口文件选择wsgi.py,那么通讯协议选择wsig.py,asgi同理
  • 启动用户:这里我们选择www即可,如果有特殊权限需求,请选择root
  • 依赖包:这里一般是宝塔为我们自动填写的,需要选择项目根目录下的requirements.txt文件。(如果当前使用的虚拟环境是首次使用须安装依赖包,如果是复用的,将这里清空即可)

我们点击确定。此时宝塔就开始为我们搭建虚拟环境了,每个项目都拥有独立的环境。

建立虚拟环境的进度,我们可以点击项目右侧的设置进行查看,一般需要几分钟时间。

因宝塔版本的不同,安装好的情况也是不同的,有的是黑窗文件不再刷新,有的时直接跳到正常的python项目页面。

 

在宝塔11.0.0版本后,加入了独立的虚拟环境管理,通用的DjacoreCMS项目可以共用一个虚拟环境,虚拟环境承载第二个同样的项目时,在建立项目的时候不需要安装依赖包,安装依赖包这里可以为空。共用虚拟环境时,项目建立秒成,可以直接点击项目-设置查看项目。

 

数据库迁移

我们点击项目右侧的终端,宝塔会自动为我们进入到项目的虚拟环境中,如果你不擅长写代码,不要紧,跟着我们复制回车就可以了。

建立数据库映射文件

python manage.py makemigrations

执行数据库迁移

python manage.py migrate

建立映射文件和执行迁移的口令也是我们升级程序的重要操作,如果在升级中发现缺失字段报错或者有关数据库字段的相关系统一般就是数据库没有升级,需要执行一下以上两个口令

 

在本次版本后我们完善初始化动作,不再需要python manage.py collectstatic --noinput来收集静态文件了,系统会自动执行。在执行migrate后,如果有看到"XXX static files copied to '/www/wwwroot/djacorecms/collected_static'"字样,说明我执行了收集静态文件的操作。此操作无需要操作,知晓即可。

 

在初始化过程当中我们也会建立默认的管理员不再需要手动创建。

用户:admin

密码:admin888

一定要注意,进入后台要修改账号密码

 

在此过程当中我们会进行一系统的系统初始化工作,详细的日志我都打印出来了,如果不懂不要紧,只看自己可以看懂的就可以了。

 

项目配置

宝塔面板-网站--python项目。在我们刚才建立项目右侧选择设置

进程数与线程数:这两个值的设置一般是为2:1的比例。宝塔为我们默认设置的为4:2,按我们的经验来看,普通的网站是不需要的,2:1已经也很好的运行了,如果你服务器上的网站少,不需要考虑节省资源,可以按2:1的比例进行调整。

域名管理:设置你的域名

外网映射:打开

配置文件

python项目设置-配置文件

DjacoreCMS其实已经可以很好的处理静态文件了,但是如果可以直接将静态文件返回前端,这将是一件更好的事情。所以我们这里可以将静态目录配置到这里

我们可以在上图位置加入下面代码

location /static/ {
    alias /www/wwwroot/djacorecms/collected_static/;
    }

这样当遇到/static/路径的文件时,Nginx就可以直接将文件返回给前端。

 

Uwsgi配置

系统会在项目的uWSGI配置文件末尾当中自动加入下列内容:

# 修改py文件时自动重启
py-autoreload = 1

项目设置重启容灾文件

touch-reload = /www/wwwroot/djacorecms/config/restart.py

防止内存泄漏,每处理5000个请求后重启worker进程

max-requests = 5000

防止所有worker进程同时重启,设置重启请求数浮动范围

max-requests-delta = 500

启用惰性加载,每个工作进程独立加载应用以优化内存使用

lazy-apps = true

如果你使用了宝塔的防篡改功能,这里可能会被该功能还原,请关闭防篡改功能后将以上代码加入其中。

py-autoreloadtouch-reload其实是一个开发功能,我们还在考虑是保留还是去掉。如果系统不能很好的重启,保留下来进行容灾。目前还在考虑当中。

 

HTTPS配置

https的使用是现在非常常见的事件,我们先在SSL证书那里申请ssl证书

此时我们的网站已经可以https访问了,但是,CRSF验证不通过(CRSF,是一种表单的安全机制)

然后我们进入到配置文件当中在下方反代区别内加入代码:

在代码proxypass http://127.0.0.1:XXXXX;下一行加入下面代码

proxysetheader X-Forwarded-Proto $scheme; #原来没有则添加
proxysetheader X-Forwarded-Ssl on;
proxysetheader Host $host;#确认这个值,用ip+端口号容易出错。

注意:以上三个配置不可以有重复的,如果出现重复的情况,则只生效后者的配置。实测proxyset_header Host 需要尤其要注意

还要注意:如果开启了防篡改功能,配置文件保存时须关闭。

项目运行

这样我们就完成了网站的搭建

http(s)://host/admin/  #默认后台地址