标签:netstat spl 外部 前后端分离 最好 分离 查看 reload require
将代码上传至云服务器,使用python3 -m venv env 创建虚拟环境,使用source env/bin/active.. 激活虚拟环境, 通过pip install -r requirements.txt 文件安装模块,编写配置文件uwsgi(自己添加模块安装), 使用uwsgi --ini uwsgi.ini 启动( uwsgi --reload uwsgi.pid 重启,uwsgi --stop uwsgi.pid 关闭,pid文件需配置后才有),最后编辑nginx配置文件,如果使用yum安装的nginx,配置文件一般在/etc/nginx/nginx.conf, 模板文件在/usr/share/nginx中,输出文件一般在conf文件中指定了,最后使用nginx -c /etc/nginx/nginx.conf 启动(最好先 -t 检测哈)
这种情况下,首先查看nginx的日志,这里配置在/var/log/nginx中的error.log, 如果这时候浏览器访问了但是没有日志,那多半是公网被拦截了,需要去看看你的云服务器的安全策略是否开启对应的端口,其次可以在本地使用curl -i localhost:8000 来查看我们的服务在本地是否可以访问,如果本地都访问不了,那说明服务启动失败。也可以使用:netstat -tlunp查看对应的端口是否开启。
参考如下nginx配置:
server { listen 80; server_name localhost; # Load configuration files for the default server block. location / { root /root/wanxxx/xxx/wan_front/out_file/; index index.html; try_files $uri $uri/ =404; # 这里直接配置为404,不重定向 } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } server { listen 5001; server_name xxx.xxx.8.16; location / { include uwsgi_params; uwsgi_pass 0.0.0.0:5000; } }
上面的nginx配置是一个前后端分离项目的配置,对外暴露80端口,访问后得到前端代码和页面,在页面中的api请求会发给5001端口,nginx针对5001做代理,转发给后端5000端口。
3、前端页面能访问到,但是后端动作没有效果,查看uwsgi.log文件发现,每次访问日志:--- no python application found, check your startup logs for errors ---,再往上看看就发现是因为有一个模块无法导入,其实本质上是由于python的环境有问题,明明切换到虚拟环境的。所以我们需要注释掉虚拟环境,或者其他方法
参考uwsgi.ini
[uwsgi] socket = 0.0.0.0:5000 #由于外部还要嵌套Nginx,这里可以使用socket进行通信,如果Nginx和uwsgi部署在同一台机器上,直接使用127.0.0.1 #如果外部直接通过uwsgi访问服务,需将socket改为http-socket或者http,将127.0.0.1改为0.0.0.0 chdir = /root/wane/wanhe #项目目录 #virtualenv = /root/wane/env #虚拟环境所在路径 wsgi-file = manage.py master = true callable = app buffer-size = 32768 #超时时间(秒) daemonize =./uwsgi.log #进程会在后台运行,并输出日志 pidfile = ./uwsgi.pid
标签:netstat spl 外部 前后端分离 最好 分离 查看 reload require
原文地址:https://www.cnblogs.com/double-W/p/12910785.html