本地部署

uWSGI

在部署之前,我们得先了解几个概念

  • wsgi

    web应用程序之间的接口。它的作用就像是桥梁,连接在web服务器和web应用框架之间。
  • uwsgi

    是一种传输协议,用于定义传输信息的类型。
  • uWSGI

    是实现了uwsgi协议WSGI的web服务器。

环境安装

需要安装Nginx和Mysql[可选]

sudo apt install mysql-server
sudo apt install nginx

安装虚拟环境

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

编辑配置文件

~/.bashrc

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/python3/bin/virtualenvwrapper.sh # export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录
# export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的参数,生成干净隔绝的环境
# export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3 #指定python解释器
# source /opt/python34/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本
source .bashrc

虚拟环境的使用

# 创建虚拟环境 env_name
mkvirtualenv env_name # 启动虚拟环境 env_name
workon env_name # 停止虚拟环境
deactivate # 删除虚拟环境,需要先退出虚拟环境
rmvirtualenv env_name

项目相关文件夹

项目名称为 ES_dj

配置Settings文件

DEBUG = False # 关闭debug调试
ALLOWED_HOSTS = ['*'] # 允许任何域方法

收集静态文件

# 静态文件
STATIC_URL = '/static/' # 注释掉
#STATICFILES_DIRS = [
# os.path.join(BASE_DIR, 'static')
#] STATIC_ROOT = os.path.join(BASE_DIR,'static_all/')
python manage.py collectstatic --noinput

新建uwsgi.ini文件

放在script文件夹内 uwsgi.ini

[uwsgi]
# 项目目录
chdir=/opt/ESys/ES_dj
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 指定项目的application
module=ES_dj.wsgi:application
# 指定sock的文件路径
socket=/opt/ESys/script/uwsgi.sock
# 启用主进程
master=true
# 进程个数
workers=5
pidfile=/opt/ESys/script/uwsgi.pid
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=1024
# 设置日志目录
daemonize=/opt/ESys/script/uwsgi.log

配置nginx

/etc/nginx/conf.d/

加入文件 ES_dj.conf

server {
listen 443;
server_name ****.*** ; # ***.**.*.* , ifconfig
access_log /var/log/nginx/access.log main;
charset utf-8;
gzip on;
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 用于https协议
ssl on;
ssl_certificate /etc/nginx/conf.d/www.crt;
ssl_certificate_key /etc/nginx/conf.d/www.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on; error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# 指定项目路径uwsgi
location / {
include uwsgi_params;
uwsgi_connect_timeout 30;
uwsgi_pass unix:/opt/ESys/script/uwsgi.sock;
}
# 指定静态文件路径
location /static/ {
alias /opt/ESys/ES_dj/static_all/;
index index.html index.htm;
}
}

启动uwsgi

uwsgi --ini uwsgi.ini

重启uwsgi

uwsgi --reload uwsgi.pid

关闭uwsgi

uwsgi --stop uwsgi.pid

检测uwsgi是否启动

ps -ef | grep -i uwsgi

如果找不到uwsgi命令

pip3 install uwsgi
# 建立软链接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

启动nginx

/etc/init.d/nginx start

重启nginx

/etc/init.d/nginx restart

关闭nginx

/etc/init.d/nginx stop

Django-使用nginx部署的更多相关文章

  1. 解决django配合nginx部署后admin样式丢失

    解决django配合nginx部署后admin样式丢失 1.  在项目的settings.py文件里添加以下内容: STATIC_URL = '/static/' STATICFILES_DIRS = ...

  2. Django + Gunicorn + Nginx 部署 Ubuntu 服务器

    Django + Gunicorn + Nginx 部署服务器 获取腾讯云 root权限 本人的服务器使用的是腾讯云,腾讯云默认是没有开放 root 用户的,我们来创建 root 用户. 创建 roo ...

  3. virtualvenv+django+uWSGI+nginx 部署

    原创博文 转载请注明出处! 1. virtualvenv 2. django 3. uWSGI 4. nginx 5. 踩坑记录 1. virtualvenv virtualvenv install ...

  4. django+uwsgi+nginx部署(非常详细)

    django+uwsgi+nginx部署 1.介绍: 在网上看了很多教程,但自己部署了很久都没有成功,这篇博文记录自己所踩过得坑. 2.环境: Ubuntu 16.04.1 LTS (GNU/Linu ...

  5. Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)

    Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...

  6. Django+uWSGI+Nginx 部署网站

    Django 1.11设置 保证Django在本地调试没有问题: 当然这是前提^_^ 收集静态文件至指定文件夹 Django静态文件设置具体参考:https://docs.djangoproject. ...

  7. Django + Gunicorn + Nginx 部署之路

    前言 最近,我已经成功将我的个人网站从 Flask 迁移到 Django 了,最早接触 Django 的时候大概是在 4 年前,我记得那个时候 Django 中的路由配置使用 正则 来进行的,但是我有 ...

  8. Ubuntu下Django+uWSGI+nginx部署

    本文采用uwsgi+nginx来部署django 这种方式是将nginx作为服务端前端,将接受web所有的请求,统一管理,Nginx把所有的静态请求自己处理,然后把所有非静态请求通过uwsgi传递给D ...

  9. Django+Uwsgi+Nginx部署

    一 uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议,uwsgi, http等协议. Nginx中HttpUwsgiMoule的作用是与uWSGI服务器进行交换 1 WSGI是一种W ...

  10. virtualvenv+django+uWSGI+nginx 部署 踩坑记录

    原创博文 转载请注明出处! uwsgi: unrecognized option '--http:8089' uwsgi: unrecognized option '--http' uwsgi trk ...

随机推荐

  1. python的for循环基本用法

    for循环 for循环能做到的事情 while循环都可以做到 但是for循环语法更加简洁 并且在循环取值问题上更加方便 name_list = ['jason', 'tony', 'kevin', ' ...

  2. 分布式应用运行时 Dapr 1.7 发布

    Dapr 是一个开源.可移植的.事件驱动的运行时,可以帮助开发人员构建在云和边缘上运行的弹性的.微服务的.无状态和有状态应用程序,并且关注于业务逻辑而不用考虑分布式相关的问题. 分布式相关的问题交给D ...

  3. android软件简约记账app开发day06-将记账条目添加到数据库并且绘制备注页面

    android软件简约记账app开发day06-将记账条目添加到数据库并且绘制备注页面 首先写添加到数据库 在DBOpenHelper中添加创建记账表的语句 //创建记账表 sql = "c ...

  4. Linux中信号量的实现

    如果一个任务获取信号量失败,该任务就必须等待,直到其他任务释放信号量.本文的重点是,在Linux中,当有任务释放信号量之后,如何唤醒正在等待该信号量的任务. 信号量定义如下: struct semap ...

  5. CentOS8 AnolisOS8 yum安装 No match for argument: htop Error: Unable to find a match: htop

    这里写自定义目录标题 CentOS8 AnolisOS8 yum安装失败 安装失败原因 阿里云官方镜像主页 正确的操作步骤 学习交流 My Blog 技术交流 CentOS8 AnolisOS8 yu ...

  6. 从零开始安装搭建win10与ubuntu20.04双系统开发环境——集安装、配置、软件、美化、常见问题等于一体的——超详细教程

    目录 **前言 ** 关于系统安装配置与软件安装 一.Win10安装ubuntu20.04双系统 1.按照自己的需求分区 2.配置软件镜像源 软件包管理工具介绍 更换APT源--使用国内镜像 3.解决 ...

  7. Linux中,MySQL的常用命令

    我的博客 登录 mysql -u用户名 -p -- 然后在下面输入密码,Linux的密码不会显示出,盲打就可以 mysql -u用户名 -p密码 -- 这种方式将直接登录 开关 开启数据库 servi ...

  8. [笔记] 有向无环图 DAG

    最小链覆盖 (最长反链) 最小链覆盖 \(=n-\) 最大匹配. 考虑首先每个点自成一条链,此时恰好有 \(n\) 条链,最终答案一定是合并(首尾相接)若干条链形成的. 将两点匹配的含义其实就是将链合 ...

  9. LeetCode数组刷题——448、48、240、769

    1.[LeetCode448]:448. 找到所有数组中消失的数字 题目分析: 1-n之间有重复的,有没出现的,有出现一次.使用hashmap,空间复杂度为O(n) 方法一:哈希表,但是空间复杂度超过 ...

  10. 打造一款高逼格的Vim神器

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 作者:枫上雾棋 链接:https://segmentfa ...