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;
      }
相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩3 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言