项目是前后台完全分离,前台地址为 http://域名:80端口,后台api接口地址为:http://域名:7001,websocket通讯接口为:ws://域名:7002

一,数据库导入

新建完数据库并导入数据后,发现远程navicat无法连接,提示Lost connection to MySQL server at reading initial communication packet

解决:在数据库权限中设置所有人可以访问(仅须远程navicat连接测试时,以后可以再把权限收窄)

宝塔mysql用户 宝塔配置mysql_nginx

二,如何添加python的django项目?

方法:使用宝塔的python项目管理器

宝塔mysql用户 宝塔配置mysql_python_02

 注意:宝塔只支持在centOS7+使用,原本想用ubuntu,也只能转为centos了,不过区别也不大。

坑点:一定不要选择2.0版本,选择1.9版。我之前装了2.0以为新的版本功能一定更强大,结果装完后发现没有pvenv命令,该命令是宝搭面板在安装了python项目管理器后配置python环境的,提供了很多方便的指令

安装后点设置,由于我开发的版本较高,centos中自带的python2.*不行,(主要是channel中需要有3.4版本以上才支持的async等新语法)所以需要先安装python3.*以上的版本,这里我安装的j是3.8.3版本

宝塔mysql用户 宝塔配置mysql_宝塔mysql用户_03

从宝塔面板进入到终端,现在可以使用pyenv命令了,使用pyenv versions查看当前由python项目管理器安装的python所有版本,使用pyenv shell 版本号 命令修改默认python版本,如图

宝塔mysql用户 宝塔配置mysql_阿里云_04

 之前开始daphne服务时,总是提示有语法错误,观察错误提示发现是不认识async关键字,所以必须要在python3.4+环境下启动daphne,所以以上设置对我来讲必不可少。

剩下的内容先上传好python项目的全部内容,我是通过宝塔面板安装ftp后上传的,没有使用宝塔的文件管理 。上传后在python项目管理器中添加项目,具体配置如下:

注:下图有误,框架应选django,因为是后截图所以出现了失误

宝塔mysql用户 宝塔配置mysql_nginx_05

 上传时连带着生成的requuirements.txt,并勾选上安装依赖,即可自动配置虚拟环境和启动,此时在项目显示正在运行中,则表示已经成功了,否则可以查看日志或进到虚拟环境(进到虚拟环境的方法看图所示)启动查看错误提示。

宝塔mysql用户 宝塔配置mysql_python_06

然后我又通过xshell远程开启了daphne服务

 三、配置网站

虽然项目有默认的80端口做前端网站,7001端口做webAPI服务器,7002端口做websocket的接收转发服务(转发到daphne即127.0.0.1:7003),而daphne服务运行在7003端口,但是只需要配置一个网站即可(我原本想分开创建,不过尝试后发现好像对于一个域名只能创建一个网站)

宝塔mysql用户 宝塔配置mysql_python_07

 在配置文件中,我将默认的80配置为前台网站路径,7002进行代理转发,而7001端口由phython项目管理已经可以访问(这里有点疑问,在python项目管理中我没有指定域名,只是指定了端口,但是前台的确可以通过域名:7001进行访问),具体内容如下:

server
{
    listen 80;
    server_name www.youhostname.cn;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/ftpFrontUser/platform/platform/frontEnd/EXP_platform/myserver;

    include enable-php-00.conf;

    include /www/server/panel/vhost/rewrite/www.youhostname.cn.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null; 
    }
    access_log  /www/wwwlogs/www.youhostname.cn.log;
    error_log  /www/wwwlogs/www.youhostname.cn.error.log;
}

server {
        listen       7002;
        server_name  www.youhostname.cn;

          location /ws{#ws
            proxy_http_version 1.1;
            proxy_set_header Host  $host;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Nginx-Proxy true;
            proxy_redirect off;
            client_max_body_size 10m;
            proxy_pass http://127.0.0.1:7003;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_connect_timeout 300s;
            proxy_read_timeout 300s;
            proxy_send_timeout 300s; 
       }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    
    }

此时启动前端页面,可以发现接口可以访问,前后端已经打通。但是websocket通信还不能使用。下面启动daphne服务:

daphne -p 7003 项目名.asgi:application

但是当ssh远程连接窗口关闭后,这个服务就自动停止了,所以这里使用nohup命令

nohup daphne -p 7003 项目名.asgi:application > /dev/null 2> /dev/null &

关掉ssh窗口,websocket通信正常运行!

今天又遇到了一个问题,之前在window环境中文件上传的接口,现在不能用了。经检查发现window中写的路径是用"\\"分隔

宝塔mysql用户 宝塔配置mysql_宝塔mysql用户_08

 现在换成了linux系统 ,需要将路径写法的“\\”改为一个正斜杠"/"即可。

另外还需要在宝塔中将该文件夹的权限修改一下

2023.3.20日,今天在新的服务器上搭建环境,在启动django项目时时出现了如下错误:

AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms'

经过对比发现,cryptography模块在新服务器上的版本是39.0.2,降低版本到36.0.2后错误排除

宝塔mysql用户 宝塔配置mysql_python_09