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;
      }
相关推荐
范纹杉想快点毕业几秒前
嵌入式通信协议深度解析:从SPI/I2C到CAN总线的完整实现指南嵌入式工程师的炼成之路:从校园到实战的跨越
linux·运维·服务器·数据库·算法
zmjjdank1ng5 分钟前
理解bash和shell
linux·运维·开发语言·bash
DingYuan10113 分钟前
Django模板继承详解
django
小王要努力上岸14 分钟前
Linux 系统启动流程
linux·运维
若风的雨15 分钟前
ATF + ARMv8 多核启动流程图
linux·arm开发
阿钱真强道17 分钟前
07 jetlinks-ubuntu20-rk3588-部署
linux·运维·服务器·网络协议·tcp/ip
Realdagongzai17 分钟前
Python学习过程记录3-操作列表
linux·vscode·python·kernel
坐怀不乱杯魂17 分钟前
Linux网络 - Socket编程(IPv4&IPv6)
linux·服务器·网络·c++·udp·tcp
燃于AC之乐19 分钟前
【Linux系统编程】进程地址空间完全指南:页表、写时拷贝与虚拟内存管理
linux·操作系统·虚拟内存·进程地址空间
_OP_CHEN19 分钟前
【Linux系统编程】(二十三)从块到块组:Ext2 文件系统核心架构的初步认识
linux·操作系统·文件系统·c/c++·ext2文件系统·磁盘分区·块组