项⽬部署【uWSGI】【Nginx】配置
项⽬部署
项⽬部署是指在软件开发完毕后,将开发机器上运⾏的开发板软件实际安装到服务器上进⾏长期运⾏
部署要分以下⼏个步骤进⾏
1. 在安装机器上安装和配置同版本的环境
2. django 项⽬迁移
$ sudo scp 当前项⽬源代码 远程主机地址和⽂件夹
sudo scp /home/tarena/django/mysite1 root@88.77.66.55:/home/root/xxx
请输⼊root密码:
3. ⽤ uwsgi 替代python3 manage.py runserver ⽅法启动服务器
4. 配置 nginx 反向代理服务器
5. ⽤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 pypi.tuna.tsinghua.edu/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
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
测试:
在浏览器端输⼊ 进⾏测试
注意,此时端⼝号为8000
nginx 及反向代理配置
Nginx是轻量级的⾼性能Web服务器,提供了诸如HTTP代理和反向代理、负载均衡、缓存等⼀系列重要特性,在实践之中使⽤⼴泛。
C语⾔编写,执⾏效率⾼
nginx 作⽤
负载均衡, 多台服务器轮流处理请求
反向代理
原理:
客户端请求nginx,再由nginx 将请求转发 uWSGI 运⾏的django
ubuntu 下 nginx 安装
$ sudo apt install nginx
$ sudo apt install nginx
vim /etc/apt/sources.list
更改国内源
sudo apt-get update
Nginx的基础配置
/etc/f
41、42⾏是⽇志⽂件配置,⼀个是访问⽇志,⼀个是错误⽇志。
nginx 配置[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部署前端项目
}
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
测试:
注意 :
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;
}
...
}
404/500 界⾯
在模板⽂件夹内添加 404.html 模版,当视图触发Http404 异常时将会被显⽰
404.html 仅在发布版中(即setting.py 中的 DEBUG=False时) 才起作⽤
当向应处理函数触发Http404异常时就会跳转到404界⾯
from django.http import Http404
def xxx_view():
raise Http404 # 直接返回404
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论