前言
来自塔宝官方通知:Python项目管理器将于将于2023年12月31日下架,所以我们需要采用宝塔【网站->Python项目】进行搭建上格CMS,下面我们就一起看一下如何在【网站->Python项目】进行搭建上格CMS
上传网站代码
将soogorCMS下的soogor文件夹上传到服务器,如果文件过多,可打包后上传,然后再解压。
安装python基本环境
宝塔--网站--python项目
首次进入时会提示我们没有安装python,我们选择点击安装
我们根据需要安装上自己所需要的python版本,我们使用的为3.9.7-3.10
以后我们可以在python版本管理中对我们的python项目进行管理
新建Python项目
宝塔--网站--python项目-添加python项目
目前哪些端口被占用,可以在【宝塔--安全--系统防火墙】,在这里我们可以看到哪些端口被占用了。
然后我们点击提交
当显示“需求包安装成功”和"配置文件输出成功"时,这说明我们的已经添加成功了。
新建数据库
【宝塔界面——数据库——添加数据库】
将得到的数库名、用户名、密码记录一下。
选择字符集:数据库utf8不支持EMOJE表情,但是支持数据库缓存 ,UTF8MB4支持EMOJE表情,不支持数据库缓存。如果要使用数据库缓存一定要设置为UTF8的
但是
在我们的测试当中感觉之个数据库缓存对大数据来讲没啥用,IO会变的很高。
所以我们推荐使用UTF8MB4
记录下数据库名、用户名、密码,我们稍后要用
最后提交
修改ConnectionStrings.ini文件
路径:
/soogor/config/ConnectionStrings.ini
根据建立数据库的数据,我们设置一下msqyl链接配置文件
[mysql]
NAME = 数据库名
USER = 数据库用户名
PASSWORD = 密码
数据库操作
宝塔路径“/www/server/pyporject_evn”为我们的项目的虚拟环境的上级目录,在这个文件夹下,我们可以找到我们对应项目的虚拟环境
如:xxxx_venv文件夹,就是xxxx网站项目的虚拟目录。我们需要记录下这个目录
/www/server/pyporject_evn/xxxx_venv
建立数据库映射文件
#manage.py一定要用绝对路径指向
/www/server/pyporject_evn/xxxx_venv/bin/python3 /www/wwwroot/xxxx/soogor/manage.py makemigrations
执行数据库操作
#manage.py一定要用绝对路径指向
/www/server/pyporject_evn/xxxx_venv/bin/python3 /www/wwwroot/xxxx/soogor/manage.py migrate
建立超级管理员
#manage.py一定要用绝对路径指向
/www/server/pyporject_evn/xxxx_venv/bin/python3 /www/wwwroot/xxxx/soogor/manage.py createsuperuser
然后根据提示我们依然输入管理员账号、邮箱、密码、密码确认。
要注意的管理员账号不能为root,并且这些内容设置不能太过类似
这个超级管理员将用于我们后台的首次登陆
如果你有soogor.sql文件,则不需要执行上方的命令,可以直接在数据库中导入。
在数据库列表界面,找到对应的数据库选择导入——选择soogorCMS下的soogor.sql进行导入
这样我们的soogor就完全搭建完了。可以直接在浏览器输入你的域名进行访问了。
Python项目管理设置
项目管理:
我们可以根据需要重新设置一下进程和线程数,二者的比例一般为2:1,根据自己的需要来设置,一个新的网站不会吃太多的资源,2-1就可以了,设置数据越大,越吃资源。
启动用户:这里我们主要使用的就是有些文件的修改
- root,拥有所有权限,
- www。需要将soogor文件夹(也就是manage.py文件的上级文件夹)设置一下www用户的读取、写入、执行权限
然后保存配置
域名管理:
我们填写上我们的域名,注意,要解析好。
外网映射:打开
配置文件:
这里将设置静态文件的指向和反向代理的相关设置
静态文件:
#所有静态文件,如CSS,img等
#.well-known用于宝塔申请ssl证书
location /.well-known/acme-challenge{
alias /www/wwwroot/xxxxx/soogor/.well-known/acme-challenge;
}
location /static/ {
alias /www/wwwroot/xxxxx/soogor/static/;
}
location /sg_user/ {
alias /www/wwwroot/xxxxx/soogor/sg_user/;
}
#媒体路径,如上传的文件。
location /media/ {
alias /www/wwwroot/xxxxx/soogor/media/;
}
#下面是robots.txt和/favicon.ico
location /robots.txt {
alias /www/wwwroot/xxxxx/soogor/static/robots.txt;
}
location /favicon.ico {
alias /www/wwwroot/xxxxx/soogor/static/favicon.ico;
}
#xxxxx.txt选用,主要用来实现搜索引擎的验证
location /xxxxx.txt {
alias /www/wwwroot/xxxxx/soogor/xxxxx.txt;
}
#注意!注意!注意!上面的xxxxx是路径,soogor是manage.py的所在的文件夹的名字,复制后记得修改
CSRF相关反向代理
如果有需要CSRF验证的表单的话我们还需要修改一下反向代理的设置
将配置文件中的
proxy_set_header Host 127.0.0.1:$server_port;
修改为:
proxy_set_header Host $host;
这样就可以实现表单提示时的csrf验证了
运行配置
在运行配置的最后加入下列代码,实现修改代码重启项目和管理后台的自动重启
# 代码修改后自动重启
py-autoreload = 1
touch-reload = /www/wwwroot/xxxxx/soogor/config/restart.py
SSL证书
SSL--let's Encrypt选择我们的域名进行申请证书
SSL证书相关反向代理
我们在SSL证书启动后,我们返回配置文件,在下列代码后加入相关配置
proxy_pass http://127.0.0.1:XXXXX;
#xxxxx为端口号
在上面代码后加入:
proxy_set_header X-Forwarded-Ssl on;
以此来实现我们在HTTPS下可以顺利的提交表单,如后台的登陆等。
管理后台登陆:
http(s)://host/admin/
我们就可以通过我们设置好的用户和密码就进网站管理了。
静态网站反代python项目
通过对上面python项目的使用,我们会发现,在python项目的日志当中我们只可以看到python项目的代理记录,如果我们想看到真实的访问IP,我们就需要用个静态网站进行代理一下。
第一步:我们新建一个静态网站。
FTP:不创建
数据库:不创建
php版本:纯静态
网站分类:随意
如果需要SSL证书,我们先启动ssl证书,该申请申请,该启动启动。
第二步:添加反射代理
反代设置:
CSRF相关反向代理
这一步是为了实现表单的提交
加入下面代码
proxy_set_header X-Forwarded-Ssl on;
第三步:配置静态文件映射
location /static/ {
alias /www/wwwroot/xxxxx/soogor/static/;
}
location /sg_user/ {
alias /www/wwwroot/xxxxx/soogor/sg_user/;
}
#媒体路径,如上传的文件。
location /media/ {
alias /www/wwwroot/xxxxx/soogor/media/;
}
#下面是robots.txt和/favicon.ico
location /robots.txt {
alias /www/wwwroot/xxxxx/soogor/static/robots.txt;
}
location /favicon.ico {
alias /www/wwwroot/xxxxx/soogor/static/favicon.ico;
}
#xxxxx.txt选用,主要用来实现搜索引擎的验证
location /xxxxx.txt {
alias /www/wwwroot/xxxxx/soogor/xxxxx.txt;
}
#注意!注意!注意!上面的xxxxx是路径,soogor是manage.py的所在的文件夹的名字,复制后记得修改
这样我们就可以通过NG的静态看到网站详细的来访IP了