宝塔面板是很多站长都在使用的操作面板,我们使用的也是宝塔面板。通过宝塔面板我们可以快速操作服务器系统。下面我们就一起看一下如何在宝塔面板下搭建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安装的数据库我们还需要设置一下权限,在我们刚才新建的数据库右侧有个权限,我们点击选择所有人

 

建立虚拟环境

  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项目。在我们刚才建立项目右侧选择设置

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

域名管理:设置你的域名

外网映射:打开

配置文件

python项目设置-配置文件

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

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

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

这样当遇到/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+端口号容易出错。

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

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

有的时候宝塔不断的升级,可能默认定入的值不一定适合我们,比如有时会出现CXSF验证不通过的情况,我们将我们使用的一个常用配置整了一下,可以进行对比修改

# HTTP反向代理相关配置开始 >>>
    location ~ /purge(.*) {
        proxycachepurge cacheone 127.0.0.1$requesturi$isargs$args;
    }

# proxy location / { proxypass http://127.0.0.1:8013; proxysetheader X-Forwarded-Proto $scheme; proxysetheader X-Forwarded-Ssl on; proxysetheader Host $host; proxysetheader X-Real-IP $remoteaddr; proxysetheader X-Forwarded-For $proxyaddxforwardedfor; proxysetheader REMOTE-HOST $remoteaddr; addheader X-Cache $upstreamcachestatus; proxysetheader X-Host $host:$serverport; proxysetheader X-Scheme $scheme; proxyconnecttimeout 30s; proxyreadtimeout 86400s; proxysendtimeout 30s; proxyhttpversion 1.1; proxysetheader Upgrade $httpupgrade; proxysetheader Connection "upgrade"; }

# HTTP反向代理相关配置结束 <<<

项目运行

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

我们使用刚才绑定的域名/install/路径进行安装。

在这里我们兼容了之前的版本和现在的版本,如果你是新装,那么我们则可以选择全新安装,如果为已经上线的项目,我们则只需要点击升级现有系统然后点击开始升级系统,系统会自动补充差异文件,完成安装。

新项目我们则点击全新安装

系统当中原有一个默认的链接文件connection_strings.yaml,此时显示的配置为默认的参数,我们需要按我们的数据配置进行填写,实测主机地址写127.0.0.1比写host更好。

如果确定配置文件中的配置为正确配置,数据库密码可为空提交。然后直接点击测试连接并继续,

设置完成后我们点击测试并继续。

然后页面会等待系统保存配置并加载进系统。

数据迁移:点击开始迁移按钮,系统将自动创建数据库表结构

系统初始化:点击执行系统初始化,初始化系统核心配置,包括:密钥生成和轮换;目录权限检查;限制词库初始化;单例模型初始化。

收集静态文件:收集所有静态文件到指定目录,用于生产环境。

建立管理员账号:如果显示用户名 "admin" 已存在  那就说明我们初始化已经建立了一个默认的账号

id:admin
密码:admin888

然后选择创建管理员账号,系统会跳转到后台的登陆页面。

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