翼度科技»论坛 云主机 服务器技术 查看内容

centos7下基于nginx+uwsgi部署Django项目的实现

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
一:基础环境介绍:


  • Centos:7.8(cat /etc/redhat-release查看版本号)
  • Python:3.9.5(python -V查看版本号)
  • Django:4.2(django-admin --version查看版本号)
  • Uwsgi:2.0.21(uwsgi --version查看版本号)
  • Nginx:1.20.1 (nginx -v查看版本号)
  • mysql-community-common-8.0(可自行安装)

二:部署环境安装配置:


1.基础依赖环境安装
  1. yum -y groupinstall "Development tools"
  2. yum -y install zlib-devel bzip2-devel openssl-devel
  3. ncurses-devel sqlite-devel readline-devel tk-devel
  4. gcc make gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
复制代码
2.安装wegt,vim,unzip等必须命令
  1. yum -y install wget vim unzip
复制代码
3.安装python与pip(或者python多版本管理工具pyenv等)
  1. ## 1.下载自己需要版本的python版本包
  2. wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz

  3. ## 2.新建python3目录
  4. mkdir /usr/local/python3

  5. ## 3.安装Python3压缩包,进入解压目录,指定安装目录,安装Python3
  6. tar -xvf  Python-3.9.5.tar.xz
  7. cd Python-3.9.5
  8. ./configure --prefix=/usr/local/python3
  9. make && make install

  10. ## 4.安装Python3时,会自动安装pip,如果没有就手动安装
  11. yum -y install python-pip

  12. ## 5.pip配置(更换pip的源)
  13. (1)编辑pip.conf
  14. [root@localhost ~]# cd ~
  15. [root@localhost ~]# mkdir .pip
  16. [root@localhost ~]# vim pip.conf



  17. [global]
  18. index-url = https://mirrors.aliyun.com/pypi/simple/
  19. [install]
  20. trusted-host=mirrors.aliyun.com



  21. (2) 安装依赖安装好pip
  22. [root@localhost ~]# yum -y install epel-release
  23. [root@localhost ~]# yum install python-pip
  24. [root@localhost ~]# pip install --upgrade pip

  25. ## 6.升级下pip
  26. pip install --upgrade pip


  27. ## 7.创建软链接
  28. ln -s /usr/local/python3/bin/python3 /usr/bin/python3
  29. ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3


  30. ## 输入python3测试是否安装成功
  31. python -V
复制代码
4.安装nginx
  1. ## 1.yum方式安装nginx
  2. yum -y install nginx

  3. ## 2.查看nginx版本
  4. nginx -v

  5. ## 3.启动nginx
  6. systemctl status nginx  ## 查看nginx状态

  7. systemctl start nginx   ## 开启nginx服务

  8. systemctl stop nginx     ## 关闭nginx服务
复制代码
5.安装uwsgi
  1. ## 1.安装uwsgi
  2. pip3 install uwsgi

  3. ## 2.建立软链接
  4. ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

  5. ## 3.查看uwsgi版本
  6. uwsgi --version
复制代码
三:部署django项目:


1.上传项目并安装项目模块并启动测试
  1. ## 1.pip导出项目依赖包
  2. pip freeze > requirements.txt

  3. ## 2.上传文件到服务器

  4. ## 3.解压项目
  5. unzaip tman.zip

  6. ## 4.pip安装项目依赖模块
  7. pip3 install -r requirements.txt

  8. ## 5.通过python3 manage.py runserver运行一下项目,如果能正常启动则进行下一步,不能正常运行往上检查。
  9. 这里需要注意使用python3来执行manage.py,否则会出现报错情况!
复制代码
2.在项目里配置uwsgi.ini配置文件

(1)在settings.py所在目录vim新文件项目名称.ini

(2)配置项目名称.ini文件
  1. [uwsgi]
  2. master=true
  3. chdir=/var/tman
  4. module=tman.wsgi
  5. py-autoreload=1
  6. lazy-apps=true  
  7. socket=127.0.0.1:8000
  8. processes=4
  9. # pid文件,用于脚本启动,停止
  10. pidfile=uwsgi.pid
  11. buffer-size=32768
  12. daemonize=uwsgi.log
  13. log-maxsize = 5000000
  14. vacuum = true
  15. disable-logging = true
复制代码
(3)检查settings.py配置并收集项目静态文件
一般都是这个配置,我的是基于vue的前后端分离项目:
  1. STATICFILES_DIRS = [
  2.     os.path.join(BASE_DIR, 'dist/static'),
  3. ]

  4. STATIC_URL = 'static/'
复制代码
url.py配置:
  1. from django.contrib import admin
  2. from django.urls import path, include
  3. from django.views.generic.base import TemplateView
  4. urlpatterns = [
  5.     path('admin/', admin.site.urls),
  6.     path('api/v1/', include('tadmin.urls')),
  7.     path('', TemplateView.as_view(template_name='index.html'))
  8. ]
复制代码
非前后端分离项目可以使用如下命令收集静态文件:
  1. python manage.py collectstatic
复制代码
基于vue使用如下命令进行前端打包:
  1. npm run build
复制代码
(4)启动测试,并查看日志
  1. ## 在当前目录启动
  2. uwsgi -i tman.ini

  3. ## 启动之后查看进程
  4. ps -ef | grep uwsgi
复制代码

查看进程

查看日志


3.配置nginx
  1. vim /etc/nginx/nginx.conf
复制代码
nginx.conf配置
  1. server {
  2.         listen       80;
  3.         listen       [::]:80;
  4.         server_name 192.168.75.188;
  5.         charset utf-8;

  6.         location /static/ {
  7.           alias /var/tman/dist/static/;
  8.           index index.html index.htm;
  9.         }
  10.   
  11.         location / {
  12.           include uwsgi_params;
  13.           uwsgi_pass 127.0.0.1:8000;
  14.         }
  15.         # Load configuration files for the default server block.
  16.         include /etc/nginx/default.d/*.conf;

  17.         error_page 404 /404.html;
  18.         location = /404.html {
  19.         }

  20.         error_page 500 502 503 504 /50x.html;
  21.         location = /50x.html {
  22.         }
  23.     }
复制代码
(4)启动nginx
  1. [root@localhost tman]# nginx -t
  2. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
  3. nginx: configuration file /etc/nginx/nginx.conf test is successful
  4. [root@localhost tman]# nginx -s reload
复制代码
(5)访问项目
  1. http://192.168.75.188/#/
复制代码


四:备注

之后项目重启只需要重启uwsgi之后再重启nginx即可,切记正式环境要关掉django的debug模式,防止报错源码被看到。
  1. ## 项目重启
  2. killall -9  uwsgi
  3. uwsgi -i tman.ini
  4. nginx -s reload
复制代码
uwsgi操作
  1. uwsgi --ini uwsgi.ini
  2. # 重启uswgi
  3. uwsgi --reload uwsgi.pid
  4. # 停止uwsgi
  5. uwsgi --stop uwsgi.pid
复制代码
五、部署报错:

(1)pip3安装mysqlclient==2.1.1报错
  1. /bin/sh: mysql_config: command not found
  2. /bin/sh: mariadb_config: command not found
  3. /bin/sh: mysql_config: command not found
复制代码
解决办法:
  1. yum -y  install mysql-devel
复制代码
  1. Error: MariaDB-compat conflicts with 1:mariadb-libs-5.5.68-1.el7.x86_64Error: Package: 1:mariadb-devel-5.5.68-1.el7.x86_64 (base)           Requires: mariadb-libs(x86-64) = 1:5.5.68-1.el7           Installed: MariaDB-compat-10.4.25-1.el7.centos.x86_64 (@mariadb)               mariadb-libs(x86-64) = 1:10.1.48-1.el7.centos You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
复制代码
解决办法:
  1. yum remove MariaDB-common
复制代码
(2)
  1. open() "/root/tman/dist/static/js/vendor.652814051b5133caa1e9.js" failed (13: Permission denied)
复制代码
原因,nginx目录权限问题,我将项目放在root下,导致nginx权限不足,解决办法,将项目移到其他目录,如/var等
到此这篇关于centos7下基于nginx+uwsgi部署Django项目的实现的文章就介绍到这了,更多相关nginx uwsgi部署Django内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/server/3190151m2.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具