小白:django部署到nginx踩坑及解决办法【精简】

问题1:**Internal Server Error (uwsgi启动失败)

查看报错:ModuleNotFoundError: No module named xxx 找不到python模块。

其中unable to load app 0 暂时不用管,其实不影响运行。

Traceback (most recent call last):
  File "/home/*xx*/mysite/mysite/__init__.py", line 2, in <module>
    import pymysql
ModuleNotFoundError: No module named 'pymysql'
unable to load app 0 (mountpoint='*xxx:8000*|') (callable not found or import error)

原因:python 搜索路径找不到python模块

解决办法:
第一种:UWSGI.ini 增加 pythonpath**
如下:
pythonpath =/home/zr/mysite/env/lib/python3.11/site-packages

[uwsgi]
socket = xxxx.xxx.xxx:9090
chdir= /home/zr/mysite
# home = /home/zr/mysite/env
## PYTHONHOME =/home/zr/mysite/env/bin
pythonpath =/home/zr/mysite/env/lib/python3.11/site-packages
# env = DJANGO_SETTINGS_MODULE=mysite.settings
wsgi-file = mysite.wsgi
module=mysite.wsgi:application
master = true
vhost = true
no-site = true
workers = 2
reload-mercy = 10
vacuum = true
max-requests = 1000
limit-as = 512
buffer-size = 30000
pidfile = /home/zr/mysite/uwsgi_dir/uwsgi.pid
daemonize =  /home/zr/mysite/uwsgi_dir/uwsgi.log

网上还有其他文章说,增加home、pythonhome 实则不需要,加了也不能解决此问题。根本原因是sys.path 中不包含site-packages ,因此还有下面的方法:
第二种:
在项目的__init__.py 中增加
import sys
sys.path.append(‘/home/zr/mysite/env/lib/python3.11/site-packages’)
在这里插入图片描述

问题2:静态资源403 forbidden

注意点有以下:

  1. 项目settings文件 DEBUG=False
    同时需要配置STATIC_URL = ‘/static/’ 和STATIC_ROOT =‘static’ 参考 https://codeleading.com/article/45873388071/
    (更正:STATIC_ROOT需要写绝对路径,而且此参数只是用于项目收集静态文件,便于部署。仅仅影响前期部署,不会造成403问题)
  2. nginx.conf
    增加 location /static/ {
    alias /home/zr/mysite/my_static/;
    }
  3. 查看nginx 进程,确保用户是自己的用户(root应该也可以).【一般造成403是这个启动用户的问题】
    在这里插入图片描述
    如果用户是www-data 则是nginx默认配置,该用户无权限访问咱的文件。
    需修改nginx.conf首行:(感谢网友的帖子https://blog.csdn.net/m0_74139794/article/details/134235944
user zr;
worker_processes auto;
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值