Django项目部署以及nginx配置
项目部署是指在软件开发完毕后,将开发机器上运行的开发板软件实际安装到服务器上进行长期运行部署要分以下几个步骤进行在安装机器上安装和配置同版本的环境django 项目迁移$ sudo scp 当前项目源代码 远程主机地址和文件夹用 uwsgi 替代 方法启动服务器配置 nginx 反向代理服务器用nginx 配置静态文件路径,解决静态路径问题WSGI (Web Server Gateway Inte
项目部署
-
项目部署是指在软件开发完毕后,将开发机器上运行的开发板软件实际安装到服务器上进行长期运行
-
部署要分以下几个步骤进行
-
在安装机器上安装和配置同版本的环境
-
django 项目迁移
$ sudo scp 当前项目源代码 远程主机地址和文件夹
sudo scp /home/tarena/django/mysite1 root@88.77.66.55:/home/root/xxx 请输入root密码:
-
用 uwsgi 替代
python3 manage.py runserver
方法启动服务器 -
配置 nginx 反向代理服务器
-
用nginx 配置静态文件路径,解决静态路径问题
-
uWSGI 网关接口配置 (ubuntu 18.04 配置)
-
WSGI (Web Server Gateway Interface)Web服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口,被广泛使用
-
使用
python manage.py runserver
通常只在开发和测试环境中使用。 -
当开发结束后,完善的项目代码需要在一个高效稳定的环境中运行,这时可以使用WSGI
-
uWSGI是WSGI的一种, 它实现了 http协议 WSGI协议 以及 uwsgi协议
-
安装uWSGI
-
终端输入如下命令
sudo pip3 install uwsgi==2.0.18 -i https://pypi.tuna.tsinghua.edu.cn/simple/
-
检查是否安装成功
sudo pip3 freeze|grep -i 'uwsgi' #如果成功安装,则会输出 uWSGI==2.0.18
-
-
配置uWSGI
-
添加配置文件
项目同名文件夹/uwsgi.ini
- 如: mysite1/mysite1/uwsgi.ini
[uwsgi] # 套接字方式的 IP地址:端口号 # socket=127.0.0.1:8000 # Http通信方式的 IP地址:端口号 http=127.0.0.1:8000 # 项目当前工作目录 chdir=/home/tarena/.../my_project 这里需要换为项目文件夹的绝对路径 # 项目中wsgi.py文件的目录,相对于当前工作目录 wsgi-file=my_project/wsgi.py # 进程个数 process=4 # 每个进程的线程个数 threads=2 # 服务的pid记录文件 pidfile=uwsgi.pid # 服务的目志文件位置 daemonize=uwsgi.log # 开启主进程管理模式 master=true
-
修改settings.py将 DEBUG=True 改为DEBUG=False
-
修改settings.py 将ALLOWED_HOSTS = [] 改为ALLOWED_HOSTS = [‘网站域名’] 或者 [‘服务监听的ip地址’]
-
-
uWSGI的运行管理
-
启动 uwsgi
$ 进入到项目同名文件夹下 【即settings.py所在目录】 $ sudo uwsgi --ini uwsgi.ini
-
停止 uwsgi
$ 进入到项目同名文件夹下 【即settings.py所在目录】 $ sudo uwsgi --stop uwsgi.pid
-
说明:
-
当uwsgi 启动后,当前django项目的程序已变成后台守护进程,在关闭当前终端时此进程也不会停止。
-
若执行 stop 操作失败,则需要执行如下操作杀死进程
ps aux|grep 'uwsgi' -> 查看uwsgi进程 tarena 103408 0.0 0.9 137172 39984 ? S 10:02 0:01 uwsgi --ini uwsgi.ini tarena 103410 0.0 0.9 436200 38552 ? Sl 10:02 0:00 uwsgi --ini uwsgi.ini ps -ef | grep 'uwsgi' | grep -v grep | awk '{print $2}' | xargs sudo kill -9
-
-
-
测试:
- 在浏览器端输入http://127.0.0.1:8000 进行测试
- 注意,此时端口号为8000
nginx 及反向代理配置
-
Nginx是轻量级的高性能Web服务器,提供了诸如HTTP代理和反向代理、负载均衡、缓存等一系列重要特性,在实践之中使用广泛。
-
C语言编写,执行效率高
-
nginx 作用
- 负载均衡, 多台服务器轮流处理请求
- 反向代理
-
原理:
-
客户端请求nginx,再由nginx 将请求转发 uWSGI 运行的django
-
ubuntu 下 nginx 安装
$ sudo apt install nginxvim /etc/apt/sources.list 更改国内源 sudo apt-get update
-
nginx 配置
- 修改nginx 的配置文件 /etc/nginx/sites-enabled/default
# 在server节点下添加新的location项,指向uwsgi的ip与端口。 server { ... location / { uwsgi_pass 127.0.0.1:8000; # 重定向到127.0.0.1的8000端口 include /etc/nginx/uwsgi_params; # 将所有的参数转到uwsgi下 } ... }
-
nginx服务控制
$ sudo /etc/init.d/nginx start|stop|restart|status # 或 $ sudo service nginx start|stop|restart|status
通过 start,stop,restart,status 可能实现nginx服务的启动、停止、重启、操作
-
修改uWSGI配置
- 修改
项目同名文件夹/uwsgi.ini
下的Http通信方式改为socket通信方式
[uwsgi] # 去掉如下 # http=127.0.0.1:8000 # 改为 socket=127.0.0.1:8000
- 重启uWSGI服务
进入到 项目同名文件夹下 $ sudo uwsgi --stop uwsgi.pid $ sudo uwsgi --ini uwsgi.ini
-
测试:
-
在浏览器端输入http://127.0.0.1 进行测试
-
注意 :
1,此时端口号为80(nginx默认值)
2,Django中有任何修改 需要重启 uwsgi , 否则修改不生效
-
- 修改
nginx 配置静态文件路径
-
创建新路径-主要存放Django所有静态文件 如: /home/tarena/项目名_static/
-
在Django settings.py 中添加新配置
STATIC_ROOT = '/home/tarena/项目名_static/static #注意 此配置路径为 存放所有正式环境中需要的静态文件
-
进入项目,执行 python3 manage.py collectstatic 。执行该命令后,Django将项目重所有静态文件 复制到 STATIC_ROOT 中 ,包括Django内建的静态文件【如admin后台的样式】
-
Nginx配置中添加新配置
# file : /etc/nginx/sites-enabled/default # 新添加location /static 路由配置,重定向到指定的 第一步创建的路径即可 server { ... location /static { # root 第一步创建文件夹的绝对路径,如: root /home/tarena/项目名_static; } ... }
更多推荐
所有评论(0)