centOS linux 宝塔 部署django 遇坑小记

按照网上的视频教程,一步一步操作,最后下来还是没有启动成功。

于是通过Xshell 7 登录服务器,进入项目目录,激活虚拟环境,运行 python manage.py runserver 发现报错。

复制代码
source bin/activate        # 激活虚拟环境

python manage.py runserver  # 启动django自带的服务器


# 报错:

raise ImportError(
ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips  26 Jan 2017'. See: https://github.com/urllib3/urllib3/issues/2168

# 升级OpenSSL貌似比降级urllib3要麻烦一点,试了一下降级方案,ok,解决!

pip uninstall urllib3 -y    # 先卸载,再安装
pip install urllib3==1.26.6


# 接着报错
create_deterministic_function("django_date_extract", 2, _sqlite_datetime_extract)
sqlite3.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher

# 按照stackoverflow指引,用pysqlite3 替代 sqlite3, ok,解决!
pip3 install pysqlite3
pip3 install pysqlite3-binary

# 然后修改虚拟环境的python3.9.6/site-packages/django/db/backends/sqlite3/base.py
# from sqlite3 import dbapi2 as Database # 注释掉原来这句
from pysqlite3 import dbapi2 as Database # 换成这句 pysqlite3

# 再执行runserver 0.0.0.0 8001,提示成功!
# 在服务器管理后台放行 8001端口,在宝塔【安全】设置中也放行8001端口, 外网访问http://IP:8001 网站打开了

按网上教程配置需要注意的几个地方:

对于以下这个配置:

python 复制代码
#添加配置选择
[uwsgi]
#配置和nginx连接的socket连接
socket=127.0.0.1:8997

# Http通信方式的 IP地址:端口号
# http=0.0.0.0:8000  # 0.0.0.0表示监听所有可用的网络接口,
#上述两种方式选择其一,在使用Nginx需要使用socket


#配置项目路径,项目的所在目录
chdir=/www/wwwroot/项目文件根目录/
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录
wsgi-file=mysite/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log

1、如果请求时经Nginx反向代理的话需要使用socket,如果不经反向代理,直接访问的话,使用http=0.0.0.0:端口 (不经反向代理,就会把uwsgi暴露在公网,不太安全)

2、#配置dump日志记录最好写绝对路径(用相对路径的时候我找不到日志文件,改用绝对路径就看到日志记录了)daemonize=/www/wwwroot/项目文件根目录/uwsgi.log

三、静态文件的.css、.js、.png等无法读取,但.html文件可以访问。(原因:nginx没有开放对这些静态文件的访问,添加相关配置即可 location ~* \.css$ { } )

复制代码
# 原添加内容:

   location / {
       include uwsgi_params;
       uwsgi_pass 127.0.0.1:8997;  #端口要和uwsgi里配置的一样
       uwsgi_param UWSGI_SCRIPT myblog.wsgi;  #wsgi.py所在的目录名+.wsgi
       uwsgi_param UWSGI_CHDIR /www/wwwroot/www.django.cn/; #项目路径
    }


      location /static/ {
      alias /www/wwwroot/www.django.cn/static/; #静态资源路径
      }

#改为:

   location / {
       include uwsgi_params;
       uwsgi_pass 127.0.0.1:8997;  #端口要和uwsgi里配置的一样
       uwsgi_param UWSGI_SCRIPT myblog.wsgi;  #wsgi.py所在的目录名+.wsgi
       uwsgi_param UWSGI_CHDIR /www/wwwroot/www.django.cn/; #项目路径
    }


      location /static/ {
      alias /www/wwwroot/www.django.cn/static/; #静态资源路径

    
        # 匹配CSS文件
        location ~* \.css$ {
            # 额外的CSS处理配置(例如gzip)
            # ...
        }

        # 匹配PNG和JPG文件
        location ~* \.(png|jpg)$ {
            # 额外的图片处理配置(例如gzip)
            # ...
        }

        # 匹配JS文件
        location ~* \.js$ {
            # 额外的JS处理配置
            # ...
        }

      }

四、设置端口访问时,端口设置为81、82等无法访问。原因:部分数值比较低的端口,即使服务器端放行了,浏览器依然会认为是有安全风险的,所以拦截。 把端口设置为8081,8082之类就可以了

五、SSE响应被nginx缓存了。

网站配置文件对sse的请求路径设置禁用缓冲区。

复制代码
      location /mysse {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000;  #端口要和uwsgi里配置的一样
        uwsgi_param UWSGI_SCRIPT mysite.wsgi;  #wsgi.py所在的目录名+.wsgi
        uwsgi_param UWSGI_CHDIR /www/wwwroot/mysite/; #项目路径
        uwsgi_buffering off;
        uwsgi_cache off;
      }
相关推荐
一起逃去看海吧12 分钟前
dify-03
java·linux·开发语言
fengyehongWorld13 分钟前
Linux 根据端口进行的相关查询
linux
lihao lihao15 分钟前
linux匿名管道
linux·运维·服务器
うちは止水18 分钟前
weston出图调试
linux·wayland·weston
STDD20 分钟前
Farming Simulator 25(模拟农场 25) Linux 专服搭建完全指南
linux·运维·javascript
好好风格44 分钟前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
用户2367829801681 小时前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux
zzipeng2 小时前
Linux LCD驱动
linux·运维·服务器
思麟呀2 小时前
C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
linux·开发语言·jvm·c++·windows