• 基于centos搭建nginx+uwsgi运行django环境


    环境:

    CentOS 7

    nginx/1.9.12

    Python 2.7.5

    一:安装依赖包5

    yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel 
    sqlite-devel readline-devel tk-devel python-pip  -y
    

    二:安装uwsgi

    uwsgi:https://pypi.python.org/pypi/uWSGI
    
    uwsgi参数详解:http://uwsgi-docs.readthedocs.org/en/latest/Options.html
    
    pip install uwsgi
    uwsgi --version
    

    三:测试uwsgi是否正常:

    新建test.py文件,内容如下:
    
    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return "liuyao"
    
    然后在终端运行:
    
    uwsgi --http :8080 --wsgi-file test.py
    
    在浏览器内输入:http://127.0.0.1:8080,
    看是否有“liuyao”输出,若没有输出,请检查你的安装过程。
    

    四:安装django

    pip install django
    
    测试django是否正常,运行:
    
    django-admin.py startproject newsite
    cd newsite
    python manage.py runserver 0.0.0.0:8000
    
    在浏览器内输入:http://127.0.0.1:8000,检查django是否运行正常。
    

    五:安装nginx

    1.下载
    wget http://nginx.org/download/nginx-1.9.12.tar.gz
    2.解压
    tar xf nginx-1.9.12.tar.gz
    cd nginx-1.9.12.tar.gz
    3.编译
    ./configure --prefix=/usr/local/nginx-1.9.12 
    --with-http_stub_status_module 
    --with-http_gzip_static_module
    4.安装
    make && make install
    注:您可自行改变参数设置,具体请上官网学习,如果已经存在nginx服务,那么此步可省略
    

    六:配置uwsgi

    uwsgi支持ini、xml等多种配置方式,但个人感觉ini更方便:

    在/ect/目录下新建uwsgi.ini,添加如下配置:
    [uwsgi]
    socket = 127.0.0.1:9090 //运行端口号
    master = true           //主进程
    vhost = true           //多站模式
    no-stie = true         //多站模式时不设置入口模块和文件
    workers = 2            //子进程数
    reload-mercy = 10     
    vacuum = true          //退出、重启时清理文件
    max-requests = 1000   
    limit-as = 512
    buffer-sizi = 30000
    pidfile = /var/run/uwsgi.pid    //pid文件,用于下面的脚本启动、停止该进程
    daemonize = /日志目录/uwsgi.log
    启动方式:
    uwsgi /etc/uwsgi.ini
    

    七:设置nginx

    找到nginx的安装目录,打开conf/nginx.conf文件,修改server配置

    server {
        	listen       80;      //设置网站运行端口
        	server_name  localhost;  
        	
        	location / {            
            	include  uwsgi_params;
            	uwsgi_pass  127.0.0.1:9090;         //必须和uwsgi中的设置一致
            	uwsgi_param UWSGI_SCRIPT newsite.wsgi;  //入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录
            	uwsgi_param UWSGI_CHDIR /newsite;       //项目根目录,
            	index  index.html index.htm;
            	client_max_body_size 35m;
        	}
    	 }
    

    注:
    1.uwsgi脚本

    请放在/etc/init.d/uwsgi 设置可执行

    DESC="uwsgi daemon"
    NAME=uwsgi
    DAEMON=/usr/bin/uwsgi
    CONFIGFILE=/etc/$NAME.ini
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    set -e
    [ -x "$DAEMON" ] || exit 0
    	
    do_start() {
    $DAEMON $CONFIGFILE || echo -n "uwsgi  running"	
    }
    
    do_stop() {
    	$DAEMON --stop $PIDFILE || echo -n "uwsgi not running"
    	rm -f $PIDFILE
    	echo "$DAEMON STOPED."
    }
    
    do_reload() {
    	$DAEMON --reload $PIDFILE || echo -n "uwsgi can't reload"
    }
    
    do_status() {
    	ps aux|grep $DAEMON
    }
    
    case "$1" in
    status)
    	echo -en "Status $NAME: 
    "
    	do_status
    ;;
    start)
    	echo -en "Starting $NAME: 
    "
    	do_start
    ;;
    stop)
    	echo -en "Stopping $NAME: 
    "
    	do_stop
    ;;	
    reload|graceful)
    	echo -en "Reloading $NAME: 
    "
    	do_reload
    ;;
    *)
    	echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2
    	exit 3
    ;;
    esac
    exit 0
    

    八:测试

    OK,一切配置完毕,在终端运行

    /etc/init.d/uwsgi start
    /usr/local/nginx/sbin/nginx -s reload 或者直接启动
    
    在浏览器输入:http://127.0.0.1,恭喜你可以看到django的“It work”了~
    

    九:多站配置

    使用多个uwsgi服务的方法来实现多个站点。
    

    重复第六步,创建uwsgi9091.ini,并相应修改文件中的

    socket = 127.0.0.1:9091
    pidfile = /var/run/uwsgi9091.pid
    daemonize = /日志目录/uwsgi9091.log
    

    并且设置脚本 启动服务

    然后新建nginx的配置文件为:

    server {
        listen  8000;
        server_name 127.0.0.1;
        location / {            
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:9091;
            uwsgi_param UWSGI_SCRIPT oldsite.wsgi;
            uwsgi_param UWSGI_CHDIR /web/oldsite;
            index  index.html index.htm;
        }
    }
    
    然后我们就可以通过http://127.0.0.1:8000来访问新的网站了。
    

    完毕!

  • 相关阅读:
    jQuery radio的取值与赋值
    MVC中一般为什么用IQueryable而不是用IList?用IQueryable比IList好在哪?
    Git 的 .gitignore 配置
    XPath学习:轴(3)——descendant
    python遍历数组的两种方法
    selenium webdriver的各种driver
    Scrapy and Selenium
    scrapy和selenium结合抓取动态网页
    Python处理JSON
    Crontab定时任务配置
  • 原文地址:https://www.cnblogs.com/liu-yao/p/5378960.html
Copyright © 2020-2023  润新知