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
添加如下 : (路径根据自己的安装目录决定)
-
export WORKON_HOME=$HOME/.virtualenvs # 虚拟环境创建的地方
-
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 # 指定虚拟使用的python解释器路径
-
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

浙公网安备 33010602011771号