Python3+django+nginx+uwsgi使用场景部署

1 环境介绍和准备
Python3+django+nginx+uwsgi使用场景部署

当我们写完一套完整的网站功能,我们需要实时在生产环境上线,并需要容纳高并发的访问请求。所以我们需要部署以上来保证网站的服务质量。

1.1基本环境准备:
echo ‘LANG="en_GB.utf8"‘ > /etc/sysconfig/i18n
LANG="en_GB.utf8"

1.2依赖环境:
(env) [[email protected] nginx]# python -V
Python 3.6.2
(env) [[email protected] nginx]# cat /etc/redhat-release
CentOS release 6.8 (Final)
(env) [[email protected] nginx]# pip list|grep Django
Django 1.11.4
(env) [[email protected] opsweb]# mysql -V
mysql Ver 14.14 Distrib 5.6.37
1.3修改yum源地址:
yum install wget
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

1.4 环境安装:
yum install wget openssl-devel -y # gcc编译要用
yum install gcc zlib-devel openssl-devel -y

2 安装python
yum -y install openssl-devel readline-devel unzip
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
tar -xzf Python-3.6.2.tgz
cd Python-3.6.2
sudo ./configure --prefix=/usr/local/python36
sudo make
sudo make install
2.1配置pip源
sudo tee /etc/pip.conf <<-‘EOF‘
[global]
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com
[list]
format=columns
EOF

2.2安装virtualenv虚拟环境
sudo /usr/local/python36/bin/pip3 install virtualenv

  1. 安装django
    3.1 初始化环境
    mkdir ~/reboot
    /usr/local/python36/bin/virtualenv ~/reboot/env
    3.2 安装django 1.11
    source /root/reboot/env/bin/activate
    pip install "django>=1.11"
    pip install ipython

4 mysql环境准备:

搜狐镜像:http://mirrors.sohu.com/

sudo rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
sudo yum install -y mysql mysql-server mysql-devel zlib-devel
source /home/djangoenv/pythonenv/bin/activate
#python依赖:
pip install pymysql

修改配置/etc/my.cnf:

[mysqld]
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = ‘SET NAMES utf8‘
character-set-server = utf8

启动:

sudo service mysqld start
4.1 安全设置:
mysql_upgrade -uroot # 如果是升级需要执行(卸载原有mysql低版本也需要)
mysql_secure_installation # 命令行执行设置账号密码、限制远程连接等

4.2 创建基础数据库:
create database cmdb CHARACTER SET utf8; # 创建一个cmdb库
CREATE USER ‘cmdb‘@‘%‘ IDENTIFIED BY ‘nice‘; # 创建一个cmdb用户,密码cmdb
GRANT ALL ON cmdb.* TO ‘cmdb‘@‘%‘; # 给cmdb用户所有cmdb库权限

4.3 mysql基本备份还原
导出:mysqldump -h127.0.0.1 -uroot -p123456 django > /backupfile.sql
还原:mysql -h127.0.0.1 -uroot -pruanchunxia2324 django < backupfile.sql

-----------------------------------uwsgi------------------------------------------------------
5 安装:uwsgi
source /root/reboot/env/bin/activate
pip install uwsgi --no-cache-dir

5.1 uwsgi安装完毕查询版本
(env) [[email protected] /]# pip list|grep uWSGI
uWSGI 2.0.15

5.2 将配置文件写到项目目录下
(env) [[email protected] nginx]# cd /root/reboot/opsweb
(env) [[email protected] opsweb]# vim uwsgi.ini

设置启动配置uwsgi.ini:

[uwsgi]

项目目录

chdir = /root/reboot/opsweb

指定项目的application

module=opsweb.wsgi

进程个数

workers=2
pidfile=/var/log/uwsgi/uwsgi.pid

指定IP端口

http=10.10.40.112:8001

指定静态文件

static=/root/reboot/opsweb/static

启动uwsgi的用户名和用户组

uid=root
gid=root

启用主进程

master=true

自动移除unix Socket和pid文件当服务停止的时候

vacuum=true

序列化接受的内容,如果可能的话

thunder-lock=true

启用线程

enable-threads=true

设置自中断时间

harakiri=30

设置缓冲

post-buffering=4096

设置日志目录

daemonize=/var/log/uwsgi/opsweb.log

指定sock的文件路径

socket=/var/log/uwsgi/uwsgi.sock

5.3 uwsgi启动命令:
sudo uwsgi --ini uwsgi.ini
uwsgi --reload /var/log/uwsgi/uwsgi.pid
uwsgi --start /var/log/uwsgi/uwsgi.pid
uwsgi --stop /var/log/uwsgi/uwsgi.pid
-----------------------------------nginx------------------------------------------------------
6 安装nginx:
yum install nginx -y

配置文件修改:

  server {
      listen       80;
      server_name  10.10.40.112;
      location /static {
          alias /root/reboot/opsweb/static;
      }
      location / {
          include     /etc/nginx/uwsgi_params; # the uwsgi_params file you installed

uwsgi_pass 10.10.40.112:8001;

          uwsgi_pass unix:/var/log/uwsgi/uwsgi.sock;
      }
  }

7 django配置
7.1 django配置修改:

setting.py中添加设置静态资源路径,给nginx调用

django可以在自己的templates下面放静态资源 那个命令可以吧所有静态资源收集起来

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

#然后到项目目录下执行:
python manage.py collectstatic

修改配置文件

DEBUG = False ALLOWED_HOSTS = [‘*‘]

  1. 故障排错
    8.1 故障发现

    发现无法找到静态文件
    8.2 通过查看nginx错误日志,定位错误
    定位问题为无法访问/static目录下文件

    8.3尝试将配置目录授予权限

    发现目录权限都已生效

    并且重启nginx服务,发现问题依然存在。

    通过检查nginx服务发现,nginx线程为nginx用户启动

    所以

此处需要对nginx配置文件重新加载
/etc/init.d/nginx reload

8.4 最终代理效果
注:没做代理前如访问时,IP后面需要跟端口,代理成功后只需输入代理的ip即可访问后端网站,从而提高安全性和并发访问量。

原文地址:http://blog.51cto.com/13573166/2060837

时间: 2024-10-06 06:49:24

Python3+django+nginx+uwsgi使用场景部署的相关文章

Install Python+Django+Nginx+UWSGI

1.安装Python3 1.2安装sqlite3 ttp://www.sqlite.org 2.安装Django框架 https://www.djangoproject.com/ 3.安装nginx http://nginx.org/ 4.安装uWSGI https://uwsgi-docs.readthedocs.io/en/latest/Download.html 启动uWSGI 5.设置Django+nginx+uWSGI

Django Nginx+uwsgi 安装配置

Django Nginx+uwsgi 安装配置 在前面的章节中我们使用 python manage.py runserver 来运行服务器.这只适用测试环境中使用. 正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttpd等,本文将以 Nginx 为例. 安装基础开发包 Centos 下安装步骤如下: yum groupinstall "Development tools" yum install zlib-devel bzip2-deve

django+nginx+uwsgi的生产环境部署(Ubuntu16.04)

一,准备工作: 代码一定要能本地跑起来! 各种基础包的安装略默认已经安装python3,nginx,uwsgi等基础依赖,注意版本问题. 本地setting.py文件修改如下(改为生产模式,把debug关闭,添加host和静态文件地址): 项目目录内随便什么地方新建一个uwsgi.ini配置文件: # dongpouu_uwsgi.ini file [uwsgi] # Django-related settings socket = :8000 #真实服务的端口 # Django项目根目录 (绝

Django+nginx+uwsgi架构部署

一.环境: Django版本:  Django-1.10.6.tar.gz Nginx 版本: nginx-1.11.10.tar.gz uwsgi 版本: uwsgi-2.0.14.tar.gz 二.安装部署:(在网上能搜到很多这种架构的安装,大都是千篇一律,但是在配置中有几个点说的非常模糊,不够明确.使很多人陷入迷茫之中) 1.将Django.nginx和uwsgi进行源码安装,安装步骤比较简单. # mkdir -p /data/logs          ## 创建uwsgi日志目录 安

Ubuntu16下部署Django+Nginx+uwsgi

1.更新apt-get apt-get update apt-get upgrade 2.安装Nginx apt-get install nginx 然后在浏览器输入IP地址若有nginx欢迎界面则成功 3.安装python3-pip apt-get instll python3-pip 注意安装python3的pip而不是python,安装成功后可以更新pip 4.安装Django以及uwsgi pip3 install Django pip3 install uwsgi 也可以采用虚拟环境下

Nginx+uwsgi或fastcgi部署Django项目

nginx+uwsgi ubuntu下先安装下C编译器和Python环境: sudo apt-get install build-essential python-dev 使用pip安装uwsgi: pip install uwsgi nginx配置: 可以单独为站点设置一个配置文件: sudo vim /etc/nginx/sites-enabled/mysite 或者直接在nginx.conf中设置: sudo vim /etc/nginx/nginx.conf 设置: server { l

django + nginx + uwsgi部署

一直用python manage.py方式跑项目代码,因涉及到http api接口,现需要用nginx+uwsgi代理访问......  这个东西不弄不知道,一弄吓一跳::崩溃的心都有啊........ 版本: nginx: 1.2.1 uwsgi: 1.9.20 django: 1.6.4 工程目录:/var/www/oms 工程APP目录:  /var/www/oms/asset uwsgi配置文件目录: /var/www/oms/uwsgi 1.工程目录放置正确,不然就无厘头事件各种有 /

nginx+uwsgi+virtualenv+supervisor部署项目

一.导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的框架有Bottle,Django,Flask,用于解析动态HTTP请求 支持WSGI的服务器 wsgiref python自带的web服务器 Gunicorn 用于linux的 python wsgi Http服务器,常用于各种django,flask结合部署服务器. mode_wsgi 实现了Ap

django+nginx+uwsgi 搭建环境

一:     下载 uwsgi     tar xf uwsgi-1.9.6.tar.gz      cd uwsgi-1.9.6     python uwsgiconfig.py --build     cp uwsgi /usr/bin/uwsgi 二:     vim /usr/local/services/nginx/uwsgi.ini      [uwsgi]     socket = 0.0.0.0:3001     master = true     pidfile = /usr