Django和uwsgi,配合nginx做静态缓存

python-env

1, mysql

grant all on demo.* to [email protected]‘127.0.0.1‘ identified by ‘wd1023‘;
flush privileges;
create database demo character set = utf8;

2,nginx 和初始坏境脚本

# onestack的脚本
wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ~/oneinstack/install.sh --nginx_option 1     

# python编译安装和虚拟环境
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz && tar xvf Python-3.6.5.tar.xz && cd Python-3.6.5/
./configure && make && make install
mkdir -p /data/ && cd /data
python3.6 -m venv py36
source /data/py36/bin/activate

# 项目安装
unzip demo.zip
mv demo wwwroot/project
cd /data/wwwroot/project/
apt install libmysqlclient-dev -y
pip install -r requirements.txt

3, Django 项目配置

vi demo/settings.py
ALLOWED_HOSTS = [‘*‘]                               #允许任意主机访问
DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.mysql‘,
        ‘NAME‘: ‘demo‘,
        ‘USER‘:‘demo‘,
        ‘PASSWORD‘:‘wd1023‘,
        ‘HOST‘:‘192.168.1.200‘
        ‘PORT‘:‘3306‘,
        ‘OPTIONS‘: MYSQL_DATABASE_OPTIONS,
    }
}
STATIC_ROOT = os.path.join(BASE_DIR, ‘static/‘)     #设置静态目录

python manage.py collectstatic                      #采集静态文件到指定的STATIC_ROOT

python manage.py makemigrations
python manage.py migrate                            #数据库对象生成
python manage.py createsuperuser                    #超级管理员
python manage.py runserver 0.0.0.0:8000             #测试运行

4, uwsgi相关配置文件和目录

mkdir /data/uwsgi-script -p                         #创建uwsgi-script存放log等文件(原来是想存放自动脚本)
chown www.www -R /data/wwwroot/project              #修改项目文件属主和uwsgi中一致
mkdir /etc/uwsgi/sites/ -p                          #建立uwsgi统一的站点配置目录(类似于nginx的conf/vhost目录)
cat /etc/uwsgi/sites/demo.ini                       #生成项目的uwsgi配置demo.ini
[uwsgi]
#socket = :8000
uid = www
socket = /run/uwsgi/demo.sock                       #用unix-socket方式
chmod-socket = 660                                  #socket权限
chown-socket = www:www                              #socket属主

#http = 192.168.1.210:8000
static-map=/static=/data/wwwroot/project/static/    #静态文件路径和setting里的STATIC_ROOT一致
chdir = /data/wwwroot/project/                      #项目主目录
module = demo.wsgi:application                      #项目的app中的wsgi路径(因为uwsgi其实是封装wsgi)
home = /data/py36                                   #虚拟环境主目录
pidfile = /data/uwsgi-script/demo/uwsgi.pid         #pid文件
daemonize = /data/uwsgi-script/demo/uwsgi.log       #日志文件
master = true
processes = 3                                       #进程和线程数
threads = 2
vacuum = true                                       #这项必须开启,才能使用emperor模式
max-requests = 2000

PS: 不创建会报错

mkdir /data/uwsgi-script/demo/

touch /data/uwsgi-script/demo/uwsgi.log

5, nginx相关配置

mkdir /usr/local/nginx/conf/vhost
vi /usr/local/nginx/conf/vhost/demo.conf
server {
    listen 80;
    server_name _;
    access_log      /data/wwwlogs/demo_nginx_access.log;
    client_max_body_size 75M;
    charset utf-8;
    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;
    location /static {                                  #nginx跳过uwsgi直接处理静态请求
        alias /data/wwwroot/project/static/;
    }

    location / {
        include uwsgi_params;
#        uwsgi_pass 127.0.0.1:8000;
        uwsgi_pass unix:/run/uwsgi/demo.sock;           #nginx代理uwsgi的unix-socket
    }
}

vi /usr/local/nginx/conf/nginx.conf   #备注主配置中的default server
:61,92 s/^/#/g

nginx -t
nginx -s reload

6, systemcd脚本

cat /lib/systemd/system/demo.service
[Unit]
Description=uWSGI Emperor service

[Service]
ExecStartPre=/bin/bash -c ‘mkdir -p /run/uwsgi; chown www.www /run/uwsgi‘
ExecStart=/data/py36/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all

[Install]
WantedBy=multi-user.target

systemctl enable demo

7,uwsgi 测试命令

启动:uwsgi --ini your_path/demo.ini

停止:uwsgi --stop your_path/uwsgi.pid

重启:uwsgi --reload your_path/uwsgi.pid

原文地址:https://www.cnblogs.com/ops-sylar/p/8984629.html

时间: 2024-07-30 19:16:53

Django和uwsgi,配合nginx做静态缓存的相关文章

centos7.3部署django用uwsgi和nginx[未解决]

现在nginx uwsgi django 都已经完成完毕,那么开始 uwsgi 配置 uwsgi支持ini.xml等多种配置方式,本文以 ini 为例, 在/etc/目录下新建blog.ini,添加如下配置: [uwsgi] socket = 127.0.0.1:9090 master = true //主进程 vhost = true //多站模式 no-site = true //多站模式时不设置入口模块和文件 workers = 2 //子进程数 reload-mercy = 10 vac

php静态缓存简单制作

制作缓存的目的是为了让我们的页面运行更加快速,减少读取数据库内容的次数,给用户更好的体验,为此我们可以使自己的程序做一下缓存,并且设置一个缓存过期的时间,来保证与数据库的一致,当然并不是所有的程序都适合做缓存,这里简单介绍一下php静态缓存制作的方法: 1.首先我们要定好一个缓存文件存放的位置,即存放目录 例如我这里存放在cache目录下,将来所有的缓存文件都放到该目录下 2.在要做静态缓存的页面,我们定义一个变量来存放一个缓存文件的路径(相对于当前页面的路径) $filename = "./c

【使用uWSGI和Nginx来设置Django和你的Web服务器】

目录 安装使用uWSGI 配置Nginx结合uWSGI supervisor Django静态文件与Nginx配置 @ *** 所谓WSGI . WSGI是Web服务器网关接口,它是一个规范,描述了Web服务器如何与Web应用程序通信,以及如何与Web应用程序链接在一起处理一个请求(接收请求.处理请求.响应请求). . 基于wsgi运行的框架有Bottle.Django.Flask,用于解析动态HTTP请求. . ---------?? 支持WSGI的服务器 . wsgiref Python自带

【使用uWSGI和Nginx来设置Django和你的Web服务器】 -- 2019-08-08 20:39:49

目录 安装使用uWSGI 配置Nginx结合uWSGI supervisor Django静态文件与Nginx配置 原文: http://106.13.73.98/__/101/ @ *** 补充 查所有已安装的pip包: pip3.6 list 将当前环境中所有的Python包导入到文件内: pip3.6 freeze > test.txt 将文件内所有的Python包安装到当前环境: pip3.6 install -r test.txt 所谓WSGI . WSGI是Web服务器网关接口,它是

Django部署时为什么要用 uWSGI与 Nginx? 以及 WSGI,uwsgi等协议

Django框架的服务器架构一般是 Nginx + uWSGI + Django 1 WSGI协议,uwsgi协议 WSGI协议(通讯协议):Python用于Web开发的协议(用于处理Web服务器和应用程序(APP)的交互信息) (把http通讯的过程抽象出来(请求数据,响应数据的封装),开发者只负责处理中途的数据) uwsgi协议(传输协议,速度很快):uWSGI程序实现的一个自有的协议(采用二进制来存储数据,之前的协议都是使用字符串,所以在存储空间和解析速度上,都更快) 注意: WSGI是一

CentOS 7 下Django项目部署教程(基于uwsgi和Nginx)

本文主要介绍如何在Linux平台上部署Django相关项目,关于Django项目的部署在互联网论坛上有很多的资料,笔者在查阅众多资料并经过实践后发现结果并不如意(或多或少总是遇到一些问题,往往与资料的预期不相符).在浏览了许多资料后笔者整理得出了部署Django项目的一般性方法,部署的方法有很多种,在此笔者选择了较为常用的基于uwsgi和Nginx的部署方案. 一.前提准备 部署前主要是需要做一些与服务器相关的准备工作,本次教程的服务器采用了阿里云的 CentOS 7.3 64位,当然作为资料学

Nginx实现反向代理负载均衡与静态缓存

介绍: Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.在连接高并发的情况下,Nginx是Apache服务器不错的替代品,能够支持高达50000个并发连接数的响应. 实验环境: Hostname IP 系统 规划 n2.preferred 192.168.1.2 Centos 6.5 Web server n3.preferred 192.168.1.3 Centos 6.5 Web server n6.preferred 192.168.1.6

nginx反向代理tomcat集群达到负载均衡,同时使用proxy_cache做web缓存

Nginx最早是作为一款优秀的反向代理软件,以高并发下的卓越性能被越来越多的用户所用户,国内最早研究nginx的是张宴,该大牛的博客地址:http://zyan.cc/ .但是随着需求的发展,nginx的功能已经不再单单是反向代理,现在已经更倾向作为web容器. Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对

[部署开发环境]部署django的生成环境nginx+uwsgi+django

#教程 # ubuntu部署django项目 # 部署准备 - ubuntu操作系统 -- vagrant虚拟 - Nginx服务器 -- 安装在ubuntu的web服务器 - uWSGI应用协议服务模块 -- python的uwsgi模块 - python虚拟环境 -- virtualenv - django框架 - nginx 配置(http <--> socket) - uwsgi配置(socket<-->wsgi) - 系统配 详情见图片linux部署django项目图.p