django+uwsgi+negix部署

可参考网站:https://www.runoob.com/django/django-nginx-uwsgi.html

uwsgi相关:https://blog.csdn.net/qq_28519183/article/details/82555922

nginx相关:https://blog.csdn.net/qq_38384568/article/details/80760208

test.ini   #用于保存uwsgi启动配置信息的配置文件


[uwsgi]
# 指定IP端口  注意使用nginxs的时候,这里要设置成sockt形式否则访问相关地址会报错
socket = 0.0.0.0:9005
;http = 0.0.0.0:9005  #不使用nginx 的时候直接用这个
# 项目目录
chdir = /data/my_app01
wsgi-file = /data/my_app01/my_app01/wsgi.py
processes = 4
# 指定项目的application
module=my_app01.wsgi:application
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log

 

基本环境:

CentOS 7.4  

预期搭建环境:

python3.6.x

virtualenv

virtualenvwrapper

nginx

django2.x

第一步 python3的搭建

首先到python官网下载对应的软件包

法1:wget  https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz    直接下载到CentOS下

法2:官网下载到windows系统下,再通过远程传输工具(例如WINSCP)将软件包复制到CentOS下

安装之前首先得安装好gcc  gcc-c++  这是c语言编译器,如果没有安装,那么在安装python的时候会出错

现在已经准备好安装包了,解压 tar -zxf  Python-3.6.4.tgz;

解压后得到Python-3.6.4  文件夹,进入该文件夹下;

执行命令       ./configure

然后编译,执行  make    ,这里可能会花一点时间

最后安装   make install  

[一般编译和安装也都可一起执行  make && make install]

 

默认安装路径是 /usr/local/bin/python3  

跟新一下pip,默认的pip是9.x  , 可以更新到18版本

pip3 install  --upgrade pip

每次在命令行输入python的时候发现都是调用的是系统的2.7版本,需要我们python3才行。可添加软连接直接打开

python3版本的环境

mv /usr/bin/python /usr/bin/python.bak

ln -s /usr/local/bin/python3 /usr/bin/python

修改之后键入python就可以直接呼出python3的编译器了,注意:这里我们将python2的启动命令改了,但是系统在有些地方会依赖python2的环境,所以会导致后面的一些操作会报错,那么后面还需要做一些修改。

 [之后使用yum安装的时候可能会报错了]

因为yum包使用python2*等开发,修该为环境修改python3之后有问题,

解决:

修改文件/usr/bin/yum、/usr/libexec/urlgrabber-ext-down头中相应python为#!/usr/bin/python2.7

第二步  python虚拟运行环境和虚拟环境管理包的安装

pip install virtualenv     如果这个比较慢一直下不下来,可以使用豆瓣pip源

pip install --index-url   https://pypi.douban.com/simple   virtualenv

也可以将豆瓣镜像源设置为默认pip镜像源

pip install virtualenvwrapper  安装成功;但是在mkvirtualenv的会提示没有此命令或者在后面的时候会报错没有viutualenvwrapper模块,这需要我们 添加配置文件

cd ~

vim .bashrc

添加如下 : (路径根据自己的安装目录决定)

  1.  
    export WORKON_HOME=$HOME/.virtualenvs # 虚拟环境创建的地方
  2.  
    export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 # 指定虚拟使用的python解释器路径
  3.  
    source /usr/local/bin/virtualenvwrapper.sh # 每次登陆用户自动执行下脚本,

然后 source  ~/.bashrc  

mkvirtualenv  v1  这样就创建了一个虚拟运行环境了

 workon  查看当前虚拟环境列表

workon  v1   切换到v1虚拟环境下 

deactivate    退出当前虚拟环境 

第三步 进入到项目目录(已经写好的djaong项目)

先把项目从本地电脑拷贝到虚拟机,解压,然后进入目录

 

[root@localhost my_app01]# workon v1

进入虚拟环境之后  安装相关依赖

pip install uwsgi

pip install -r requeriments.txt

笔者是在v1 python3虚拟环境安装的

(v1) [root@localhost my_app01]# uwsgi --ini test.ini   # 通过命令启动项目  test.ini是启动文件

查看日志  可以看到报错信息等,根据报错信息进行修改

[root@localhost my_app01]# cat uwsgi.log 

 

 

报错信息

  File "/root/.virtualenvs/v1/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 36, in <module>
    raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
unable to load app 0 (mountpoint='') (callable not found or import error)

处理方法 找到

/root/.virtualenvs/v1/lib/python3.6/site-packages/django/db/backends/mysql/base.py"  文件的  line 36, 然后将内容注释就可以了

 

 

第四步 Nginx安装

使用yum安装

yun install nginx

安装完成之后查看nginx的配置目录

nginx -V

 

 启动nginx:

上图可见nginx的bin目录再 sbin-path=/usr/sbin/nginx

启动需要进入  cd  /usr/sbin

输入命令   nginx 就可以启动了

进入nginx的config-path

对配置进行修改  本例中用到的

server{
            listen       80;
            server_name  localhost;
            
            location / {            
                include  uwsgi_params;
                uwsgi_pass  0.0.0.0:9005;
                uwsgi_param UWSGI_SCRIPT data.my_app01.my_app01.wsgi;
                uwsgi_param UWSGI_CHDIR /data/my_app01;
                index  index.html index.htm;
                client_max_body_size 35m;
            }
        }

并把其他的location 配置信息注释

配置文件说明

 

server {
    # 你的网站将会监听的端口号,如果监听80端口,部署后访问localhost自动跳转到nginx默认的欢迎界面
    listen      80;
    # 绑定的域名
    server_name 127.0.0.1; # substitute your machine's IP address or FQDN
    charset     utf-8;

    # 最大上传速率
    client_max_body_size 75M;   # adjust to taste

    # Django media(设置成自己的路径)
    location /media  {
        alias /home/wuchao/blog/media;  # 您的Django项目的媒体文件——根据需要进行修改
    }
    #Django 静态文件路径(设置成自己的路径)
    location /static {
        alias /home/wuchao/blog/static; # 您的Django项目的静态文件——根据需要进行修改
    }

    # 最后,将所有非媒体请求发送到Django服务器
    location / {
        include     uwsgi_params; # the uwsgi_params file you installed
        uwsgi_pass 0.0.0.0:9005;
    }
}
    

 

修改完成配置之后

进入虚拟环境

workon v1

然后启动uwsgi 和 ngixn

uwsgi --ini /data/my_app01/test.ini & /usr/sbin/nginx

posted on 2019-09-10 18:19  王大拿  阅读(9)  评论(0)    收藏  举报

导航