欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/7/14 编程问答 70 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Django和uwsgi,配合nginx做静态缓存 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

python-env

1, mysql

grant all on demo.* to demo@'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_ROOTpython 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/^/#/gnginx -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.targetsystemctl 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

总结

以上是生活随笔为你收集整理的Django和uwsgi,配合nginx做静态缓存的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。