项目是前后台完全分离,前台地址为 http://域名:80端口,后台api接口地址为:http://域名:7001,websocket通讯接口为:ws://域名:7002
一,数据库导入
新建完数据库并导入数据后,发现远程navicat无法连接,提示Lost connection to MySQL server at reading initial communication packet
解决:在数据库权限中设置所有人可以访问(仅须远程navicat连接测试时,以后可以再把权限收窄)
二,如何添加python的django项目?
方法:使用宝塔的python项目管理器
?注意:宝塔只支持在centOS7+使用,原本想用ubuntu,也只能转为centos了,不过区别也不大。
坑点:一定不要选择2.0版本,选择1.9版。我之前装了2.0以为新的版本功能一定更强大,结果装完后发现没有pvenv命令,该命令是宝搭面板在安装了python项目管理器后配置python环境的,提供了很多方便的指令
安装后点设置,由于我开发的版本较高,centos中自带的python2.*不行,(主要是channel中需要有3.4版本以上才支持的async等新语法)所以需要先安装python3.*以上的版本,这里我安装的j是3.8.3版本
从宝塔面板进入到终端,现在可以使用pyenv命令了,使用pyenv versions查看当前由python项目管理器安装的python所有版本,使用pyenv shell 版本号 命令修改默认python版本,如图
?之前开始daphne服务时,总是提示有语法错误,观察错误提示发现是不认识async关键字,所以必须要在python3.4+环境下启动daphne,所以以上设置对我来讲必不可少。
剩下的内容先上传好python项目的全部内容,我是通过宝塔面板安装ftp后上传的,没有使用宝塔的文件管理?。上传后在python项目管理器中添加项目,具体配置如下:
?上传时连带着生成的requuirements.txt,并勾选上安装依赖,即可自动配置虚拟环境和启动,此时在项目显示正在运行中,则表示已经成功了,否则可以查看日志或进到虚拟环境(进到虚拟环境的方法看图所示)启动查看错误提示。
然后我又通过xshell远程开启了daphne服务
?三、配置网站
虽然项目有默认的80端口做前端网站,7001端口做webAPI服务器,7002端口做websocket的接收转发服务(转发到daphne即127.0.0.1:7003),而daphne服务运行在7003端口,但是只需要配置一个网站即可(我原本想分开创建,不过尝试后发现好像对于一个域名只能创建一个网站)
?在配置文件中,我将默认的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通信正常运行!?
|