zoukankan      html  css  js  c++  java
  • Django--项目部署

    一.安装 Python
    先直接执行步骤7,如果已经安装过则无需安装
     
    1.安装依赖包                                                                       
    1)首先安装gcc编译器,gcc有些系统版本已经默认安装,通过  gcc --version  查看,没安装的先安装gcc。
    yum -y install gcc
     
    2)安装其它依赖包,(注:不要缺少,否则有可能安装python出错,python3.7.0以下的版本可不装 libffi-devel )
    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
     
    2.进入个人目录下,下载python3.6
     
    3.解压
    tar -xzvf Python-3.6.5.tgz 
     
    4.建立一个空文件夹,用于存放python3程序        
    mkdir /usr/local/python3
     
    5.执行配置文件,编译,编译安装            
    cd Python-3.6.5 ./configure --prefix=/usr/local/python3 make && make install
    安装完成没有提示错误便安装成功了
     
    6.建立软连接                     
    ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
     
    7.测试一下python3是否可以用 
    python3
    和 pip3 --version
     
    二.项目迁移
    1.将windows下的文件迁移到linux机器上
    windows虚拟环境下: pip3 freeze >requirements.txt
    cmd进入linux服务器的项目根目录文件夹中
    rz 弹窗选择testTool.zip
    unzip testToolzip 解压
     
    2.在linux项目根目录,创建虚拟环境
    $ python3 -m venv venv   #会创建一个不带其他pip包的干净虚拟环境
    执行后,会在myproject目录下生成了一个venv目录,内有三个文件夹Include,Lib,bin,一个文件pyvenv.cfg。
     
    3.切换到虚拟环境
    $cd venv/bin
    $source activate
    (venv) python@ubuntu:/myproject$ # (venv)表示该项目处于虚拟环境中
     
    4.进入项目根目录,安装依赖包
    pip3 install -r requirements.txt
     
    三.安装 uwsgi
     
    1.项目根目录,虚拟环境安装uwsgi
    pip3 install uwsgi
     
    2.配置
    在项目的根目录建立了一个uwsgiconfig.ini的文件。除了ini格式的配置,uwsgi还支持json,xml等多种多样的配置格式。这里以ini格式为例
    [uwsgi]
    ;uwsgi服务器的接口,根据情况使用以下配置
    ;有nginx转发时,使用socket配置
    socket=0.0.0.0:5000
    ;无nginx转发时,使用http配置
    ;http=0.0.0.0:5000
    ;指定项目目录为主目录
    chdir=/home/hueili/testTool
    ;如果有虚拟环境,则需要指定虚拟环境目录; 没有则注释掉
    home=/home/hueili/testTool/venv
    ;项目的目录
    pythonpath=/home/hueili/testTool
    ;项目启动脚本的名字
    module=testTool.wsgi:application
    ;真正的脚本的文件名
    wsgi-file=/home/hueili/testTool/testTool/wsgi.py
    ;首先开启一个uwsgi的管理进程,然后由它开启若干个worker子进程,当子进程挂掉的时候还会自动重启
    master=true
    ;进程数
    processes=4
    ;线程数
    threads=2
    ;存放uwsgi进程的pid,便于重启和关闭操作
    pidfile=/home/hueili/testTool/uwsgi.pid
    post-buffering=30000
    ;把uwsgi服务器作为后台进程启动,值为日志文件名
    daemonize=/home/hueili/testTool/server.log
     
    3.启动,重启,关闭
    $uwsgi uwsgiconfig.ini
    $uwsgi --reload uwsgi.pid
    $uwsgi --stop uwsgi.pid 或者kill -9 进程id
    查看uwsgi运行状态
    $uwsgi --connect-and-read uwsgi.status  //返回json,显示进程和worker的详细状态
     
    4.查看日志
    $tail -f server.log
    正常展示如下:
    如果出现raise RuntimeError("populate() isn't reentrant")
    解决:cd /venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py
    注释掉 #if version < (1, 3, 13):
    # raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
     
    5.下面的nginx配置好后访问后,可查看server.log日志
     
    四.配置 Nginx
    如果linux机器上已安装,无需再安装。直接配置nginx即可
    1.安装命令如下:
    cd ~
    wget http://nginx.org/download/nginx-1.5.6.tar.gz
    tar xf nginx-1.5.6.tar.gz
    cd nginx-1.5.6
    ./configure --prefix=/usr/local/nginx-1.5.6 --with-http_stub_status_module --with-http_gzip_static_module
    make && make install
     
    2.Nginx 配置
    找到nginx的安装目录(如:/usr/local/nginx/),打开conf/nginx.conf文件,修改server配置:
    #add by hueili
        server {
            listen   7000;
            server_name  _;
            root /home/hueili;
            
            location / {
                try_files $uri $uri/ /index.html;
            }
            
            location ^~ /e_commerce {            #后端配置  
                rewrite ^/e_commerce/(.*) /$1 break;
                include  uwsgi_params;
                uwsgi_pass  127.0.0.1:5000;              #必须和uwsgi中的设置一致
                uwsgi_param UWSGI_SCRIPT ec_testTool.wsgi;  #入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录
                uwsgi_param UWSGI_CHDIR /home/hueili/ec_testTool;       #项目根目录
                index  index.html index.htm;
                client_max_body_size 35m;
            }
            
            location ^~ /web {          #前端配置  
                alias  /home/hueili/testtool_m/dist;
                index  index.html;
            }
            
            location ~* ^.+.(css|js|ico|gif|jpg|jpeg|png|woff|ttf)$ {   #前端配置
                root /home/hueili/testtool_m/dist;
                expire 7d;
            }
         
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            } 
        }
     
    设置完成后,在终端运行:
    uwsgi --ini /home/hueili/testTool/uwsgiconfig.ini &
    切到root权限运行:
    /usr/local/nginx/sbin/nginx -s reload
     
    如果不生效 ,ps -ef|grep nginx查看进程,kill进程后执行以下命令
    cd /usr/local/nginx/sbin
    ./nginx -c /usr/local/nginx/conf/nginx.conf
     
     
    6.windows浏览器访问linux的servername:7000/web/    可访问前端项目
    windows浏览器访问linux的servername:7000/e_commerce/    可访问后端项目
     
    nginx问题排查:查看nginx的error.log日志
     
     

  • 相关阅读:
    [YTU]_2911(我想放假)
    [YTU]_2907(类重载实现矩阵加法)
    [YTU]_2617(B C++时间类的运算符重载)
    [YTU]_2633( P3 数钱是件愉快的事)
    [YTU]_2444(C++习题 对象转换)
    [YTU]_2535( C++复数运算符重载(+与<<))
    [YTU]_2354 (实现复数类中的加运算符重载【C++运算符重载】)
    集训总结DAY.1(18.5.22)——KMP
    爬爬爬山
    P3803 【模板】多项式乘法(FFT)
  • 原文地址:https://www.cnblogs.com/absoluteli/p/13977721.html
Copyright © 2011-2022 走看看