Centos8下django项目部署 nginx+uwsgi的教程

1.虚拟环境virtualenv安装

1.安装virtualenv

pip3 install virtualenv

2.创建目录,把项目文件传过来

mkdir My
 cd My

3.创建独立运行环境-命名

virtualenv --no-site-packages --python=python3  venv1   #创建独立的环境,并且指定解释器是python3

4.进入虚拟环境

source venv1/bin/activate   #此时进入虚拟环境(venv1)

5.在虚拟环境中安装第三方库,导入需要的环境(导出命令:pip3 freeze > packages.txt)

pip3 install django==2.11   #此时pip3的包都会安装到venv1环境下,venv1是针对Myproject创建的
 pip3 install -r packages.txt

6.退出venv1环境

deactivate

7. virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,
 用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。

2.django配置

1.settings.py

DEBUG = False #debug改为false

ALLOWED_HOSTS = ['*'] # 访问地址改为 “*” 表示所有

STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR),"static")
 #nginx访问的目录 放到了之前static的上一级目录,可以自定义 需要写绝对路径
STATIC_URL = '/static/'
STATICFILES_DIRS=[ os.path.join(BASE_DIR,"static"),]

MEDIA_URL = '/archive/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'archive')
#用户上传的静态文件,如:头像

配置完成后运行python manage.py collectstatic 加载静态文件至STATIC_ROOT 目录

2.urls.py

from django.urls import path,re_path
from django.conf import settings
from django.views.static import serve

urlpatterns = [
   re_path(r'^archive/(?P<path>.*)$', serve,
{'document_root': settings.MEDIA_ROOT}, name='archive'), #用户上传的文件
 path('favicon.ico', serve,{'path': 'img/favicon.ico','document_root':settings.STATIC_ROOT}),
 #全局favicon.ico图标
]

3.安装和配置uwsgi

1.进入虚拟环境venv1,安装uwsgi(最好虚拟环境外也安装一下)

(venv1) [root@localhost ~]# pip3 install uwsgi

2.配置启动文件(放到哪个目录都可以,我放到venv1下了)
  uwsgi支持ini、xml等多种配置方式,本文以 ini 为例, 在/etc/目录下新建uwsgi.ini,添加如下配置:

 #添加配置选择
 [uwsgi]
 #配置和nginx连接的socket连接
 socket=127.0.0.1:8000
 #http=0.0.0.0:8000 #http连接
 #配置项目路径,项目的所在目录
 chdir = /opt/My/Myproject

 #配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名
 wsgi-file = Myproject/wsgi.py
 #配置启动的进程数
 processes=4
 #配置每个进程的线程数
 threads=2
 #配置启动管理主进程
 master=True
 #虚拟环境目录
 home=/opt/My/venv1
 #配置存放主进程的进程号文件(我注释了,据说和supervisor的日志冲突)
 #pidfile=uwsgi.pid

 #配置dump日志记录 (同上)
 #daemonize=uwsgi.log 

3.指定配置文件启动

uwsgi --ini  /opt/My/venv1/uwsgi.ini

4.安装和配置nginx

1.centos8安装nginx(直接yum安装)

yum install -y nginx

2.配置nginx.conf

 user nginx;
 worker_processes 2; #进程数
 error_log /var/log/nginx/error.log;
 pid /run/nginx.pid;

 # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
 include /usr/share/nginx/modules/*.conf;

 events {
 worker_connections 1024;
 }

 http {
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
 '$status $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for"';

 access_log /var/log/nginx/access.log main;

 sendfile on;
 tcp_nopush on;
 tcp_nodelay on;

 keepalive_timeout 65;
 types_hash_max_size 2048;

 include /etc/nginx/mime.types;
 default_type application/octet-stream;

 # Load modular configuration files from the /etc/nginx/conf.d directory.
 # See http://nginx.org/en/docs/ngx_core_module.html#include
 # for more information.
 #include /etc/nginx/conf.d/*.conf;

 server {
 listen 80;#监听端口
 #listen [::]:80 default_server;
 server_name 192.168.3.119;# 域名或者IP
 #root /usr/share/nginx/html;

 # Load configuration files for the default server block.
 #include /etc/nginx/default.d/*.conf;
 charset utf-8;

 location /static {
 alias /opt/My/static; #静态文件地址(STATIC_ROOT)

 }

 location / {
 include uwsgi_params;
 uwsgi_pass 0.0.0.0:8000; #项目端口号
 uwsgi_param UWSGI_SCRIPT Myproject.wsgi; #项目wsgi.py目录
 uwsgi_param UWSGI_CHDIR /opt/My/Myproject; #项目目录
 }

 }

 }

3.启动nginx

/usr/sbin/nginx

5.安装和配置supervisor

1.安装supervisor

pip3 install supervisor  # 之前需要python2的环境才可以安装 现在直接pip3安装就可以

2.通过命令生成配置文件到etc目录(可以自定义)

echo_supervisord_conf > /etc/supervisord.conf

3.在配置文件末尾添加如下代码

[program:myname] #任务名
 command=/opt/my/venv1/bin/uwsgi --ini /opt/my/venv1/uwsgi.ini
 #执行的命令 运行uwsgi。 uwsgi是虚拟环境内的

 [program:nginx]
 command=/usr/sbin/nginx #运行nginx

4.启动supervisor

 supervisord -c /etc/supervisord.conf #启动supervisor
 supervisorctl -c /etc/supervisord.conf #进入supervisor交互界面

5.supervisor命令

 start myname #启动 \
 stop myname #停止 >> 可以写任务名称或者 all 表示全部
 restart myname #重启 /

到此这篇关于Centos8下django项目部署 nginx+uwsgi的教程的文章就介绍到这了,更多相关django项目部署 nginx+uwsgi内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解python使用Nginx和uWSGI来运行Python应用

    uWSGI是一个Web应用服务器,它具有应用服务器,代理,进程管理及应用监控等功能.它支持WSGI协议,同时它也支持自有的uWSGI协议,该协议据说性能非常高,而且内存占用率低,为mod_wsgi的一半左右,我没有实测过.它还支持多应用的管理及应用的性能监控.虽然uWSGI本身就可以直接用来当Web服务器,但一般建议将其作为应用服务器配合Nginx一起使用,这样可以更好的发挥Nginx在Web端的强大功能.本文我们就来介绍如何搭建uWSGI+Ngnix环境来运行Python应用. 安装uWSGI

  • 详解使用Nginx和uWSGI配置Python的web项目的方法

    基于python的web项目,常见的部署方法有: fcgi:用spawn-fcgi或者框架自带的工具对各个project分别生成监听进程,然后和http服务互动. wsgi:利用http服务的mod_wsgi模块来跑各个project. 不过还有个uwsgi,它既不用wsgi协议也不用fcgi协议,而是自创了一个uwsgi的协议,据作者说该协议大约是fcgi协议的10倍那么快.uWSGI的主要特点如下: 超快的性能. 低内存占用(实测为apache2的mod_wsgi的一半左右). 多app管理

  • 使用Nginx+uWsgi实现Python的Django框架站点动静分离

    由于: Django处理静态文件不太友好: 以后有可能需要处理php或者其他资源的请求: 所以考虑结合nginx,使用nignx做它擅长的路由分发功能:同时做动静分离,即Http请求统一由Nginx进行分发,静态文件由Nginx处理,并返回给客户端:而动态的请求,则分发到uWsgi,由uWsgi再分发给Django进行处理.即客户端 <-> nginx <-> socket <-> uwsgi <-> Django 一.环境 系统:centOS 6 pyth

  • Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程

    具体环境: Ubuntu 14.04 Python 2.7.6 Django 1.7.1 Virtualenv name:test Nginx uwsgi 假设 项目文件夹位于 /data/www/ts 设置保存在 ./conf 复制代码 代码如下: virtualenv name = test domain name = example.com django+uwsgi的部署实在是太蛋疼了..网上已有的教程似乎有新版本的兼容问题.最后跑到uwsgi官网上找的教程终于跑通了.. 不过官网的教程似

  • nginx+uwsgi启动Django项目的详细步骤

    当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uwsgi+django是我们常用的django部署方式.nginx作为最前端的服务器,他负责接收所有的客户端请求,对于请求的静态文件,由nginx服务器自己完成,因为它具有很好处理静态文件的能力,性能进行过优化,支持高并发量:uWSGI服务器作为支持服务器,是用来服务nginx的,nginx将请求的动态

  • Centos8下django项目部署 nginx+uwsgi的教程

    1.虚拟环境virtualenv安装 1.安装virtualenv pip3 install virtualenv 2.创建目录,把项目文件传过来 mkdir My  cd My 3.创建独立运行环境-命名 virtualenv --no-site-packages --python=python3  venv1   #创建独立的环境,并且指定解释器是python3 4.进入虚拟环境 source venv1/bin/activate   #此时进入虚拟环境(venv1) 5.在虚拟环境中安装第

  • django8.5 项目部署Nginx的操作步骤

    1.概念:  Nginx是轻量级的高性能Web服务器,提供了诸如HTTP代理和反向代理.负载均衡等一系列重要的特性.由C语言编写,执行效率高. 作用:   负载均衡,多台服务器轮流处理请求.  反向代理(nginx接到请求之后,可以把这个请求转发给后边的若干uWSGI,再给运行着Django的机器) 原理:客户端请求nginx,再由nginx将请求转发给uWSGI,再给Django. 2.安装:sudo apt install nginx,这是系统级的组件,所以要拿apt来装,安装完毕之后,可以

  • Nginx+Uwsgi+Django 项目部署到服务器的思路详解

    首先先说一下思路: 1.本地django项目打包 主要用到的是 python自带的distutils.core 下的 setup,具体代码在下面,主要讲的两个问题是package主要打包为和目录同级的代码,例如:TCMS如果还有一个子文件夹,那就不能自动打包了.这个时候需要用到data_files.glob(*filename)文件名模式匹配,不用遍历整个目录判断每个文件是不是符合. from distutils.core import setup import glob setup( name

  • Linux下将Python的Django项目部署到Apache服务器

    这几天花了点时间,将把django开发好的web项目部署到Apache上,参考了官方的一些文档和互联网上的文档,还是花了比较多的时间,这里把配置的过程说一下. 方便有需要的朋友,可以参考,少走弯路! 1. django项目部署环境说明 操作系统 : Red Hat Enterprise Linux Server release 5.3 (Tikanga) x86_64 apache版本 : httpd-2.2.3-22.el5 mod_wsgi版本 : mod_wsgi-3.2-1.el5 fe

  • Ubuntu系统搭建django+nginx+uwsgi的教程详解

    1. 在开发机上的准备工作 1.确认项目没有bug. 2.用pip freeze > requirements.txt将当前环境的包导出到requirements.txt文件中,方便在部署的时候安装. 3.将项目上传到服务器上的/srv目录下.这里以git的形式为例,打开终端,依次输入如下命令 •git init •git remote add origin xxx.git •git add . •git commit -m 'first commit' •git pull origin mas

  • python框架django项目部署相关知识详解

    这篇文章主要介绍了python框架django项目部署相关知识详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一:项目部署的框架 nginx和uWSGI在生产服务器上进行的部署 二:什么是nginx? nginx是一个web服务器. 什么是web服务器? web服务器则主要是让客户可以通过浏览器进行访问,处理HTML文件,css文件,js文件,图片等资源.web服务器一般要处理静态文件.对接服务器. 什么是静态文件? css,js,html

  • 将django项目部署到centos的踩坑实战

    前言 本文介绍的是将django项目部署到centos的遇到的一些问题,关于将Django项目部署到CentOs服务器中的步骤可以参考这篇文章:https://www.jb51.net/article/149135.htm FAQ1:在使用pip3安装库的时候,提示需要升级pip pip3 install --upgrade pip FAQ2:在创建软链接时,提示:ln: failed to create symbolic link '/usr/bin/python3': File exists

  • 在Django下创建项目以及设置settings.py教程

    进入虚拟环境创建目录(在虚拟环境下不要使用sudo命令) 1.在虚拟环境下安装需要的安装包(注意,不要用sudo命令,否则会安装到真实环境下) pip3 install Django==1.11.8 pip3 install pillow pip3 install pymysql==0.7.11 2. 建立文件夹MyProject,进去MyProject目录创建项目 django-admin startproject fruitday(项目名称,可自定义) 3. 进入 fruitday 创建Ap

  • shell脚本多实例部署nginx的详细教程

    1. 创建一个目录,用来存放脚本和安装包 [root@localhost nginx]# tree . ├── install.sh └── packages └── nginx-1.20.1.tar.gz 1 directory, 2 files [root@localhost nginx]# 2. 下载好对应的安装包 [root@localhost packages]# wget https://nginx.org/download/nginx-1.20.1.tar.gz [root@loc

  • Vue+Django项目部署详解

    本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改luffy/settings/prop.py中以下几项 (1) allow_hosts ALLOWED_HOSTS = [ 'api.youdomain.com', ] (2) 跨域白名单 CORS_ORIGIN_WHITELIST = ( # 前端域名 "www.youdomain.com", # 后端api接口域名 "api.youdomain.com" ) (3) 支付宝电

随机推荐