django项目部署上线
前言
完善的django项目上线,有很多种上线的方法,比如apache, uwsgi, nginx等。这里只介绍2种,一种是django自带的,另外一种则是nginx + uwsgi完成介绍。这里的系统环境采用的是ubantu系统, python环境采用的是python3, django环境采用1.11
一、自带的部署功能
数据库迁移:
如果django项目中的数据是在本地的mysql中,需要将它的数据迁移到远程连接的数据库中。使用navicat操作, 在工具下拉列表中有一个数据传输按钮

进入后,配置好,点击下一步就好

1. 环境配置
- 更新安装包: sudo apt update
- 下载mysql : apt install mysql-server mysql-client
2. 设置远程访问mysql:
(1) 查找 mysql.conf, 一般在/etc/mysql/mysql.conf.d目录下
find / -name mysql.cnf
(2)注释掉mysql.cnf文件中bind.conf.d,使外网也可以访问数据库
vim /etc/mysql/mysql.conf.d/mysqld.cnf

(3)设置mysql数据库的用户密码
设置: GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
刷新操作:flush privileges;
3. 修改django中的配置文件
- 修改settings.py
(1) 设置DEBUG=FALSE, ALLOWED_HOST = ['']
image.png
如果上线的时候出现500,502错误等,可以将DEBUG=False设置为DEBUG=True,这时候你就可以在浏览器中看到具体的错误,然后进行调试
(2)
静态文件的STARC的路径配置
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
修改工程urls.py配置
导入serve包:
from django.views.static import serve
在路由中加入static的路由地址:
url(r'^static/(?P<path>.)$', serve, {"document_root": settings.STATIC_ROOT})image.png
4.修改首页的访问地址
在工程urls.py里部署首页访问的地址: views.home是自己设置的一个方法,是路由指向的地址
url(r'^$', views.home)
5. 安装pip3, 使用pip3来安装必备的数据库
安装pip3 :up主在这里遇到过一个bug,安装不上库文件,这时候你需要将pip3更新到最新的版本
apt install python3-pip
安装必备库:
pip3 install django
pip3 install pymysql
pip3 install pillow
6. 查看进程:
看看端口啥的, 如果80端口被占用了,下面可以更换到其他端口,也可以直接kill -9 掉占用端口的程序
netstat -lntp
7. 启动项目
进入manage.py文件目录下:
python3 manage.py runserver 0.0.0.0:8000
二、使用nginx+uwsgi部署
1.nagin和uwsgi介绍
关于nginx和uwsgi与django的联系,有一篇博文讲得简单明了
https://blog.csdn.net/u014761344/article/details/40146597
(1)nginx:
nginx概念:
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
nginx应用场景:
1、 http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
基于端口的,不同的端口
基于域名的,不同域名
3、 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
(2)uwsgi
uwsgi概念:
uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器
2.安装nginx
nginx启动后,可以在公网的ip地址上看到welcome to nginx
sudo apt-get install nginx
3.查看nginx的状态
systemctl status nginx 查看nginx的状态
system start/stop/enable/disable nginx 启动/关闭/设置开机启动/禁止开机启动
service nginx status/stop/restart/start 查看状态/停止/重启/开启 ngnix
安装完成后,如果不能启动nginx,可以使用 ps -ef | grep nginx 查看进程,杀掉全部的nginx进程,再重新启动nginx
4.安装uwsgi
pip install uwsgi
5.在nginx的配置文件中加载自定义的nginx的配置文件
up主这里使用自己的.conf文件放在 /home/app/conf/的,这里建议大家建立一个统一的文件夹来管理conf文件
进入nginx的配置文件:
vim /etc/nginx/nginx.conf
修改文件:增加 include /home/app/conf/.conf;

6. 配置自定的nginx文件:
up主建议每一个项目都单独建立一个conf文件
找到自己创建的conf文件:
vim /home/app/conf/axfnginx.conf
配置:
server {
listen 80;
server_name 47.92.164.198 localhost;
access_log /home/app/log/access.log;
error_log /home/app/log/error.log;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8890;
}
location /static/ {
alias /home/app/day11axf0/static/;
expires 30d;
}
}

7.配置uwsgi
up主是将uwsgi.ini文件与conf文件放在一起的
pythonpath为工程文件目录
scoket要与nginx中的完全相同
logto为保存日志文件的地方

nginx和uwsgi还可以配置更多的东西,这里配置的都是最简单需要的内容
8.启动项目
进入uwsgi.ini文件目录中:
uwsgi --ini uwsgi.ini
9.部署完成
python学习交流群:125240963
转载至:https://www.jianshu.com/p/c060448b3e78?
django项目部署上线的更多相关文章
- django项目部署上线 nginx + uwsgi
一.安装python3 安装步骤:https://www.cnblogs.com/zhangqigao/p/11661875.html 二.修改django中的配置文件 修改settings.py ( ...
- Windows下django项目部署 通过Apache2.4+mod_wsgi
经过几天踩坑,记录在Windows10下通过Apache2.4部署Django项目的过程 运行环境: 先说下环境,怎么安装倒是其次的,版本很重要,我是根据mod_wsgi的版本要求下载的各个版本(py ...
- Django项目部署在Linux下以进程方式启动
Django项目部署在Linux下以进程方式启动 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 开发完Django项目后,需要把项目部署到linux环境下.当然, ...
- 使用gunicorn将django项目部署到生产环境的子目录下,在nginx后端获取客户真实IP地址
生产环境有时,并不是为了一个项目而存在的.毕竟,域名是比较稀有的. 今天遇到这个问题,解决了.作个记录. 并且,如果将django项目部署在Nginx后面,那如何获取用户真实的IP地址呢? 下面就来解 ...
- Django项目部署(django+guncorn+virtualenv+nginx)
一.说明 为了django项目部署到生产环境上,能够稳定的运行,且能够同时指出http和https的访问,对django的部署进行了一些研究,决定采用django + gunicorn + virtu ...
- django项目部署过程
django项目部署过程 1.上传代码 用git或者其他工具,如scp 代码上传后保证每个应用下的migrations文件夹里只有一个__init__.py文件,自己的迁移文件不要上传上来,具体的gi ...
- Linux学习笔记之Django项目部署(CentOS)----进阶篇
一.引入 当我们开发好了一个Django项目之后是需要部署到服务器上的,这样才能正式使用这个项目.之前用了一个运行.sh文件的方法让项目得以在后台运行,其实随着学习的深入,这种方法其实是有点low的, ...
- Django项目部署到阿里云服务器无法发送邮件,发送邮件超时问题解决
前言 今天, 博主将写了好久的一个Django小项目尝试在阿里云部署上线,由于项目中需要发送邮件,博主调用了163邮箱接口,在本地测试邮件功能正常,可是上线后,邮件功能一直超时崩溃.在百度一番查资料后 ...
- 学习VirtualEnv和Nginx+uwsgi用于django项目部署
以下叙述中用到的操作系统:Linux CentOS 6.X. 最近几天了解一下VirtualEnv,Apache+Daemon mode,Nginx+uwsgi的概念,并且在项目中实验性部署了一下(目 ...
随机推荐
- MySql my.ini 中文详细说明
[mysqld] port = 3306 socket = /tmp/mysql.sock # 设置mysql的安装目录 basedir=F:\\Hzq Soft\ ...
- Emotiv脑电设备与RDS机器人仿真初步测试
Emotiv脑电设备与RDS机器人仿真初步测试 在脑电设备相关算法进行真实机器人测试前,有必要进行大量仿真验证算法,节约开发时间. 这里给我启发的Emotiv使用所参考的一些网址. 官网:https: ...
- 从头到尾解析Hash表算法
via:点击打开链接 十一.从头到尾解析Hash 表算法 作者:July.wuliming.pkuoliver 出处:http://blog.csdn.net/v_JULY_v. 说明:本文分 ...
- C++中不能被重载的运算符介绍
C/C++ 里大多数运算符都可以在 C++ 中被重载. C 的运算符中只有 . 和 ?:(以及 sizeof,技术上可以看作一个运算符)不可以被重载.C++ 增加了一些自己的运算符,除了 :: 和 . ...
- 查看linux系统是多少位
. getconf LONG_BIT echo $HOSTTYPE uname -a 这三个是对的 我的是64位
- 《java入门第一季》之面向对象面试题(形式参数的问题)
/* 形式参数的问题: 基本类型:形式参数的改变不影响实际参数 引用类型:形式参数的改变直接影响实际参数 */ //形式参数是基本类型 class Demo { public int sum(int ...
- 【Qt编程】QWT在QtCreator中的安装与使用
由于导师项目的需要,需要画图,二维+三维.三维图我用的是Qt+opengl,二维图我决定使用qwt工具库来加快我的项目进展,毕竟还有期末考试.关于Qt+opengl的使用有时间的话以后再介绍. ...
- 安卓Eclipse开发者的福音
我们知道,谷歌已经放弃对Eclipse(ADT)的维护更新了,现在官网上也找不到ADT的下载链接了,我们大多数同学仍在使用的ADT版本可能已经很老了,估计大多数的SDK版本只到4.4,而,在尝试升级以 ...
- 插件化开发—动态加载技术加载已安装和未安装的apk
首先引入一个概念,动态加载技术是什么?为什么要引入动态加载?它有什么好处呢?首先要明白这几个问题,我们先从 应用程序入手,大家都知道在Android App中,一个应用程序dex文件的方法数最大不能超 ...
- 网站开发进阶(十七)Html元素隐藏的几种方式
Html元素隐藏的几种方式 隐藏Html元素的方法最常用的方法有css的display:none,一种方法两种实现方式,感兴趣的朋友可以了解下. 1.使用css style="display ...