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日志
 
 

原文地址:https://www.cnblogs.com/absoluteli/p/13977721.html