zoukankan      html  css  js  c++  java
  • 阿里云搭建nginx + uWSGI 实现 django 项目

    系统版本 CentOS/7 64位

    1.安装使用python3

    创建python3目录

    sudo mkdir /usr/local/python3

    进入python3目录

    cd /usr/local/python3

    下载python3压缩包

    sudo wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz

    解压

    tar -zxvf Python-3.6.1.tgz 

    编译前需要多个依赖(如果不安装python安装过程会报错,pip,数据库等等缺失):

    yum install openssl-devel -y

    yum install zlib-devel -y

    yum install sqlite-devel

    yum install pcre pcre-devel

    进入Python-3.6.1,指定安装路径

    ./configure --prefix=/usr/local/python3

    编译

    make

    安装

    sudo make install

    指定软连接

    sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
    sudo ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

    2.安装和使用virtualenv

    使用pip3安装virtualenv:

    pip3 install virtualenv

    创建虚拟环境:

    python3 -m venv /home/env35/myproject

    进入myproject目录:

    cd /home/env35

    进入虚拟环境:

    source myproject/bin/activate

    3.安装第三方库&&上传项目并配置(虚拟环境中)

    查看当前的第三方模块 :

    pip list

    安装django模块:

    pip install django==1.10.8

    如果觉得pip版本过低,可以升级下pip:

    pip install --upgrade pip

    压缩win下的项目上传至linux中

     rz

    无法使用rzm命令,安装指南请戳:https://www.cnblogs.com/dalyday/p/10032858.html

    解压项目:

    unzip day17_crm.zip

    如果 出现无法解压的情况,说明项目里包含多级文件夹,需要安装unzip才能解压:

    yum install unzip

    进入项目修改settings.py配置文件:

    vim /home/env35/day17_crm/day17_crm/settings.py

    ALLOWED_HOSTS = ['*',]     # 允许所有端口访问
    
    # 注释掉static路径
    #STATICFILES_DIRS = (
    #    os.path.join(BASE_DIR,'static'),
    #)
    
    # 部署项目需添加下面一段,方便收集整个项目静态资源
    STATIC_ROOT = os.path.join(BASE_DIR, "static/")

    收集静态文件:

    cd day17_crm

    python manage.py collectstatic

    4.安装nginx

    新增yum源文件

    vim /etc/yum.repos.d/nginx.repo

    拷贝如下内容:

    [nginx]
    name=nginx repo
    # 本人用的是centos7,系统跟版本需改成跟自己相对应的!!
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1

    保存检查yum是否配置好:

    yum list|grep nginx

    nginx.x86_64                                1:1.14.1-1.el7_4.ngx       @nginx   
    nginx-filesystem.noarch                     1:1.12.2-2.el7             @epel    
    nginx-debug.x86_64                          1:1.8.0-1.el7.ngx          nginx    
    nginx-debuginfo.x86_64                      1:1.14.1-1.el7_4.ngx       nginx    
    nginx-module-geoip.x86_64                   1:1.14.1-1.el7_4.ngx       nginx    
    nginx-module-geoip-debuginfo.x86_64         1:1.14.1-1.el7_4.ngx       nginx    
    nginx-module-image-filter.x86_64            1:1.14.1-1.el7_4.ngx       nginx    
    nginx-module-image-filter-debuginfo.x86_64  1:1.14.1-1.el7_4.ngx       nginx    
    nginx-module-njs.x86_64                     1:1.14.1.0.2.5-1.el7_4.ngx nginx    
    nginx-module-njs-debuginfo.x86_64           1:1.14.1.0.2.5-1.el7_4.ngx nginx    
    nginx-module-perl.x86_64                    1:1.14.1-1.el7_4.ngx       nginx    
    nginx-module-perl-debuginfo.x86_64          1:1.14.1-1.el7_4.ngx       nginx    
    nginx-module-xslt.x86_64                    1:1.14.1-1.el7_4.ngx       nginx    
    nginx-module-xslt-debuginfo.x86_64          1:1.14.1-1.el7_4.ngx       nginx    
    nginx-nr-agent.noarch                       2.0.0-12.el7.ngx           nginx    
    pcp-pmda-nginx.x86_64                       3.12.2-5.el7               base 

    安装:

    sudo yum -y install nginx

    查看是否安装完成:

    rpm -q nginx

    启动nginx:

    service nginx start

    # nginx一些操作指令
    systemctl status nginx.service 		# 查看服务当前状态
    systemctl restart nginx.service		# 重新启动服务
    systemctl stop nginx.service		# 停止服务

     浏览器输入公共ip即可访问nginx主页!

    接下来修改Nginx配置文件与项目关联起来,将nginx目录下的配置文件拷贝到项目同级目录

    cd /etc/nginx/

    cp /etc/nginx/nginx.conf /home/env35/nginx.conf 

    修改nginx配置文件,server添加如下字段:

    cd /home/env

    vim nginx.conf

    server {
        # the port your site will be served on
        listen      81;
        # the domain name it will serve for
        server_name esc ; # substitute your machine's IP address or FQDN
        charset     utf-8;
    
        # max upload size
        client_max_body_size 75M;   # adjust to taste
    
        location /static {
            alias /home/env35/day17_crm/static; # 指向django的static目录
        }
    
        # Finally, send all non-media requests to the Django server.
        location / {
            uwsgi_pass  127.0.0.1:8000;   # 填写阿里云服务器私网,这个一定要和uwsgi.ini文件的端口一致
            include     /home/env35/uwsgi_params; # the uwsgi_params file you installed
        }
    }

    项目同级目录下创建uwsgi_params文件,直接拷贝以下内容(nginx目录下如果可以直接拷贝过来)

    vim uwsgi_params

    uwsgi_param  QUERY_STRING       $query_string;
    uwsgi_param  REQUEST_METHOD     $request_method;
    uwsgi_param  CONTENT_TYPE       $content_type;
    uwsgi_param  CONTENT_LENGTH     $content_length;
    
    uwsgi_param  REQUEST_URI        $request_uri;
    uwsgi_param  PATH_INFO          $document_uri;
    uwsgi_param  DOCUMENT_ROOT      $document_root;
    uwsgi_param  SERVER_PROTOCOL    $server_protocol;
    uwsgi_param  REQUEST_SCHEME     $scheme;
    uwsgi_param  HTTPS              $https if_not_empty;
    
    uwsgi_param  REMOTE_ADDR        $remote_addr;
    uwsgi_param  REMOTE_PORT        $remote_port;
    uwsgi_param  SERVER_PORT        $server_port;
    uwsgi_param  SERVER_NAME        $server_name;

    设置nginx启动时指定这个配置文件

    /usr/sbin/nginx -c /home/env35/nginx.conf 

    创建软连接

    ln -s /home/env35/nginx.conf /etc/nginx/conf.d/

    5.安装uwsgi

    进入虚拟环境,安装uwsgi模块:

    pip install uwsgi

    在项目的同级目录下添加uwsgi的配置文件:

    vim uwsgi.ini

    [uwsgi]
    #项目目录
    chdir = /home/env35/day17_crm
    #指定项目的application
    module = day17_crm.wsgi:application
    
    home = /home/env35/myproject
    #指定ip 
    http= 127.0.0.1:8000   # 阿里云私有IP,与nginx.conf配置文件一致
    #指定静态文件 
    static-map = /static=/home/env35/day17_crm/static
    #启用主进程
    master = true
    #pidfile= /home/env35/uwsgi.pid
    #设置日志目录
    #logfile= /home/env35/uwsgi.log
    #socket权限设置
    chmod-socket = 755
    #进程个数
    processes =10
    #自动移除unix Socket 和 Pid 文件 当服务停止的时候 
    vacuum = true
    #设置自动中断时间
    harakiri = 30
    #设置缓冲
    post-buffering = 4096

    看看当前的目录(注意红色框,都是需要新增的文件)

    启动uwsgi :

    uwsgi --ini uwsgi.ini

    进程跑起来,则成功了

    6.运行项目

    做完以上,你已经成功搭建了Nginx与uwsgi了,好了,全部再来操作一次

    进入myproject目录:

    cd /home/env35

    进入虚拟环境:

    source myproject/bin/activate

    启动Nginx:

    service nginx start

    启动uwsgi:

    uwsgi --ini uwsgi.ini

    浏览器输入阿里云共有IP即可访问:

     

  • 相关阅读:
    Spring(AbstractRoutingDataSource)实现动态数据源切换--转载
    Ajax与Controller的参数交互
    如何用Windows PowerShell替换命令提示符
    SharePoint 2016 如何修改Library 地址
    SQL Server 2012安装配置(Part1 )
    SharePoint 2010 缺少站点保存为模板选项
    SharePoint Online和SharePoint 2016 导出到Excel 表错误
    Windows计算机重置TCP / IP
    备份和导入Outlook 2016 电子邮件签名
    SharePoint 2016 功能比较
  • 原文地址:https://www.cnblogs.com/dalyday/p/9949237.html
Copyright © 2011-2022 走看看