解决方案:可执行sudo lsof -i:端口号
查询出具体进程,杀掉进程后,重新启动uWSGI即可
- 停止失败:stop无法关闭uWSGI
原因:重复启动uWSGI,导致pid文件中的进程号失准
解决方案:ps出uWSGI进程,手动kill掉
==================================================================
-
Nginx是轻量级的高性能Web服务器,提供了诸如HTTP代理和反向代理、负载均衡等一系列重要特征
-
C语言编写,执行效率高
-
Nginx作用
-
负载均衡,多台服务器轮流处理请求
-
反向代理
-
原理:客户端请求Nginx,再有Nginx将请求转发uWSGI运行的Django
sudo apt install nginx
如果下载速度很慢,考虑更换为国内源
vim /etc/apt/sources.list
更改国内源
sudo apt-get update
安装完毕后,ubuntu终端输入nginx -v
显示如下:
- 修改nginx的配置文件
/etc/nginx/site-enable/default;
sudo vim该文件
sudo vim /etc/nginx/site-enable/default
在server节点下添加新的location项,指向uwsgi的ip与端口
server{
…
location / {
uwsgi_pass 127.0.0.1:8000 # 所有/开头的请求均重定向到127.0.0.1到8000端口
inclue /etc/nginx/uwsgi_params; # 将所有的参数转到uwsgi下
}
…
}
一定带有;
$ sudo /etc/init.d/gninx start|stop|restart|status
或者
$ sudo service nginx start|stop|restart|status
-
启动 -
sudo /etc/init.d/nginx start
-
停止 -
sudo /etc/init.d/nginx stop
-
重启 -
sudo /etc/init.d/nginx restart
-
注意:nginx配置只要修改,就需要进行重启,否则配置不生效
说明nginx负责接收请求,并把请求转发给后面的uWSGI
此模式下,uWSGI需要以socket模式启动
样例:
uWSGI配置变化后,也需要重启
============================================================================
排错问题宗旨 → 看日志!看日志!看日志
nginx日志位置:
-
异常信息
/var/log/nginx/error.log
-
正常访问信息
/var/log/nginx/access.log
uwsgi日志位置:
项目同名目录下,uwsgi.log
- 访问127.0.0.1:80地址,502响应
502响应,代表Nginx反向代理配置成功,但是对应的uWSGI未启动
- 访问127.0.0.1:80/url,404响应
-
路由的确不在Django配置中
-
Nginx配置错误,未禁止掉try_files
========================================================================
- 创建新路径,主要存放Django所有静态文件。
如:/home/tarena/项目名_static/
- 在Django setting.py中添加新配置
STATIC_ROOT = ‘/home/tarena/项目名_static/static’# 注意 此配置路径为存放所有正式环境中需要的静态文件
- 进入项目,执行
$ python3 manage.py collectstatic
执行该命令后,Django将项目中所有的静态文件复制到STATIC_ROOT中,包括Django内建的静态文件
- Nginx配置中添加新配置
file : /etc/nginx/sites-enabled/default
新添加location /static 路由配置,重定向到指定的 第一步创建的路径即可
server{
…
location /static {
root 第一步创建文件夹的绝对路径,如:
root /home/tarena/项目名_static;
}
}
- 重启Nginx
======================================================================
定义和配置
在模板文件夹内添加404.html模板,当视图出发HTTP404异常时将会被显示
404.html仅在发布版(即setting.py中的DEBUG=False时)才起作用
当响应处理函数出发HTTP404异常时就会跳转到404界面
=================================================================
定义和配置
当正式服务器上代码运行有报错时,可以将错误追溯信息发送至指定的邮箱
setting.py中 - 在基础邮箱授权后 添加如下配置:
关闭调试模式
DEBUG = False
错误报告接收方
ADMINS = [(‘name1’, ‘name1@example.com’), (‘name2’, ‘name2@example.com’)]
发送错误报告放,默认为root@localhost账户,多数邮件服务器会拒绝
SERVER_EMAIL = ‘eamil配置中的邮箱’
===================================================================
报错邮件中会显示一些错误的追踪,这些错误追踪会出现如password等敏感信息,Django已经将配置文件中的敏感信息过滤修改为多个星号,但是用户自定义的视图函数需要用户手动过滤敏感信息
可过滤信息如下:
-
局部变量
-
POST提交数据
from django.views.decorators.debug import sensitive_cariables
@sensitive_variables(‘user’, ‘pw’, ‘cc’)
def process_info(user):
pw = user.pass_word
cc = user.credit_card_number
name = user.name
…
说明:
-
若报错邮件中牵扯到user、pw、cc等局部变量的值,则会将其替换成*****,而name变量还显示其真实值
-
多个装饰器时,需要将其放在最顶部
-
若不传参数,则过滤所有局部变量的值
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算