当前位置:   article > 正文

centOS linux 宝塔 部署django 遇坑小记_宝塔python项目部署django

宝塔python项目部署django

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

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

  1. source bin/activate # 激活虚拟环境
  2. python manage.py runserver # 启动django自带的服务器
  3. # 报错:
  4. raise ImportError(
  5. 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
  6. # 升级OpenSSL貌似比降级urllib3要麻烦一点,试了一下降级方案,ok,解决!
  7. pip uninstall urllib3 -y # 先卸载,再安装
  8. pip install urllib3==1.26.6
  9. # 接着报错
  10. create_deterministic_function("django_date_extract", 2, _sqlite_datetime_extract)
  11. sqlite3.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher
  12. # 按照stackoverflow指引,用pysqlite3 替代 sqlite3, ok,解决!
  13. pip3 install pysqlite3
  14. pip3 install pysqlite3-binary
  15. # 然后修改虚拟环境的python3.9.6/site-packages/django/db/backends/sqlite3/base.py
  16. # from sqlite3 import dbapi2 as Database # 注释掉原来这句
  17. from pysqlite3 import dbapi2 as Database # 换成这句 pysqlite3
  18. # 再执行runserver 0.0.0.0 8001,提示成功!
  19. # 在服务器管理后台放行 8001端口,在宝塔【安全】设置中也放行8001端口, 外网访问http://IP:8001 网站打开了

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

对于以下这个配置:

  1. #添加配置选择
  2. [uwsgi]
  3. #配置和nginx连接的socket连接
  4. socket=127.0.0.1:8997
  5. # Http通信方式的 IP地址:端口号
  6. # http=0.0.0.0:8000 # 0.0.0.0表示监听所有可用的网络接口,
  7. #上述两种方式选择其一,在使用Nginx需要使用socket
  8. #配置项目路径,项目的所在目录
  9. chdir=/www/wwwroot/项目文件根目录/
  10. #配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录
  11. wsgi-file=mysite/wsgi.py
  12. #配置启动的进程数
  13. processes=4
  14. #配置每个进程的线程数
  15. threads=2
  16. #配置启动管理主进程
  17. master=True
  18. #配置存放主进程的进程号文件
  19. pidfile=uwsgi.pid
  20. #配置dump日志记录
  21. 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$ { } )

  1. # 原添加内容:
  2. location / {
  3. include uwsgi_params;
  4. uwsgi_pass 127.0.0.1:8997; #端口要和uwsgi里配置的一样
  5. uwsgi_param UWSGI_SCRIPT myblog.wsgi; #wsgi.py所在的目录名+.wsgi
  6. uwsgi_param UWSGI_CHDIR /www/wwwroot/www.django.cn/; #项目路径
  7. }
  8. location /static/ {
  9. alias /www/wwwroot/www.django.cn/static/; #静态资源路径
  10. }
  11. #改为:
  12. location / {
  13. include uwsgi_params;
  14. uwsgi_pass 127.0.0.1:8997; #端口要和uwsgi里配置的一样
  15. uwsgi_param UWSGI_SCRIPT myblog.wsgi; #wsgi.py所在的目录名+.wsgi
  16. uwsgi_param UWSGI_CHDIR /www/wwwroot/www.django.cn/; #项目路径
  17. }
  18. location /static/ {
  19. alias /www/wwwroot/www.django.cn/static/; #静态资源路径
  20. # 匹配CSS文件
  21. location ~* \.css$ {
  22. # 额外的CSS处理配置(例如gzip)
  23. # ...
  24. }
  25. # 匹配PNG和JPG文件
  26. location ~* \.(png|jpg)$ {
  27. # 额外的图片处理配置(例如gzip)
  28. # ...
  29. }
  30. # 匹配JS文件
  31. location ~* \.js$ {
  32. # 额外的JS处理配置
  33. # ...
  34. }
  35. }

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

 

五、SSE响应被nginx缓存了。

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

  1. location /mysse {
  2. include uwsgi_params;
  3. uwsgi_pass 127.0.0.1:8000; #端口要和uwsgi里配置的一样
  4. uwsgi_param UWSGI_SCRIPT mysite.wsgi; #wsgi.py所在的目录名+.wsgi
  5. uwsgi_param UWSGI_CHDIR /www/wwwroot/mysite/; #项目路径
  6. uwsgi_buffering off;
  7. uwsgi_cache off;
  8. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/508350
推荐阅读
相关标签
  

闽ICP备14008679号