uwsgi和nginx 部署django项目(python2.7)

uwsgi+nginx 部署django项目

  • 前言
    • 环境版本
    • 虚拟环境
    • 拉取代码
    • 修改配置
      • nginx
      • supervisor
      • uwsgi
    • 注意事项

前言

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

环境版本

1、python:2.7
2、nginx: 1.16.1-1.el7.x86_64
3、uwsgi:2.0.19
4、supervisor:4.2.0(如果按照报错,需要安装yum install python-devel)
5、安装pip

	$ wget https://bootstrap.pypa.io/get-pip.py
	$ python get-pip.py
	$ pip -V  #查看pip版本

6、rabbitmq 消息队列

虚拟环境

pip install virtualenv
pip install virtualenvwrapper

# 1、创建目录用来存放虚拟环境
mkdir
$HOME/.virtualenvs
 
# 2、打开~/.bashrc文件,并添加如下:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
 
# 3、运行
source ~/.bashrc
创建虚拟环境
virtualenv 虚拟环境名称
进入虚拟环境
source **/虚拟环境名/bin/active

拉取代码

git clone http://**

修改配置

nginx

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        #location / {
        #    uwsgi_pass  127.0.0.1:8000;
        #    include uwsgi_params;
        #}
    location / {
        include uwsgi_params;
        proxy_set_header    Referer             $http_referer;
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    Host                $host;
        proxy_redirect      off;
        uwsgi_pass  unix:/data/bk_itsm/uwsgi.sock;
        uwsgi_read_timeout 300;
        uwsgi_modifier1 30;
    }
        location ~ ^/static/(.*)$ {
            alias /data/bk_itsm/static/$1;
        }
        error_page 404 /404.html;
            location = /40x.html {
        }

supervisor

[program:bk_itsm]
command=/usr/bin/uwsgi --ini  /data/bk_itsm/uwsgi.ini     ; 程序启动命令
autostart=true       ; 在supervisord启动的时候也自动启动
stopasgroup=true     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true     ;默认为false,向进程组发送kill信号,包括子进程

[program: bk_itsm_celery]
command = /root/.virtualenvs/bk_itsm/bin/python /data/bk_itsm/manage.py celery worker -n bk_itsmiam-1 -l INFO --autoscale=8,1
directory = /data/bk_itsm/
stdout_logfile = /var/log/bk_itsm/celery.log
redirect_stderr = true
stopwaitsecs = 10
autorestart = true

uwsgi

[uwsgi]
# Django-related settings
# the base directory (full path)
# 填写项目的完整绝对路径,第一层
logto2 = /var/log/bk_itsm/uwsgi.log

logdate = true
log-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]

chdir = %d
#chdir = /tmp/bk_itsm/
# Django's wsgi file
#指定django的wsgi文件路径,填写相对路径
#module = bk_itsm/wsgi.py
module = wsgi:application
# the virtualenv (full path)
# 填写虚拟环境的绝对路径
home  = /root/.virtualenvs/bk_itsm
# process-related settings
# master
master = true
# maximum number of worker processes
# 定义程序的多进程数量的,以cpu核数的2+1数量填写   2n+1 数量
processes = 3
# the socket (use the full path to be safe
# 把uwsgi启动在socket协议上,的8000端口
socket = /data/bk_itsm/uwsgi.sock
# 指定http协议的话,用户是可以直接访问到的,不安全的,因此使用socket协议
#http = 0.0.0.0:8000

注意事项

   1、运行起来后 会报nginx error错误。可能是没有权限:chmod 777 /data/bk_itsm/uwsgi.sock
   2、关闭防火墙:systemctl stop firewalld

你可能感兴趣的:(Python,Linux,nginx,python,django,linux)