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的概念,并且在项目中实验性部署了一下(目 ...
随机推荐
- Gradle脚本打包so库
要让引用的第三方的so库被打包进去,只需要把相关的armeabi文件夹放在libs下面,然后在builld.gradle脚本中加上这一句: sourceSets{ main { jniLibs.src ...
- (三十七)从私人通讯录引出的细节I -Notification -Segue -HUD -延时
细节1:账号和密码都有值的时候才可以点击登录按钮,因此应该监听文本框的文本改变. 因为文本框的文本改变代理不能处理,因此应该使用通知Notification. 文本框文本改变会发出通知:通知的前两个参 ...
- 从"按层次输出二叉树"到"求解二叉树深度"的总结
本文是在学习中的总结,欢迎转载但请注明出处:http://write.blog.csdn.net/postedit/41964669 最近在刷LeetCode上的算法题,发现好多题目的解题思路大体是一 ...
- 《java入门第一季》之类(Scanner类)
/* * Scanner:用于接收键盘录入数据. * * 前面的时候: * A:导包 * B:创建对象 * C:调用方法 * * System类下有一个静态的字段: * public static f ...
- 增加AP INVOICE 行&分配行
-- 增加行 DECLARE v_row_id VARCHAR2(1000); v_line_number number; g_user_id CONSTANT NUMBER := fnd_globa ...
- android 防止反编译的若干方法
第一种方式:混淆策略 混淆策略是每个应用必须增加的一种防护策略,同时他不仅是为了防护,也是为了减小应用安装包的大小,所以他是每个应用发版之前必须要添加的一项功能,现在混淆策略一般有两种: 对代码的混淆 ...
- IP网际协议 - IP首部,IP路由选择,子网掩码
IP首部 4个字节的32 bit值以下面的次序传输:首先是0-7 bit,其次8-15 bit,然后1 6-23 bit,最后是24~31 bit.这种传输次序称作big endian字节序.由于T ...
- HTML中的javascript交互
在Android开发中,越来越多的商业项目使用了Android原生控件与WebView进行混合开发,当然不仅仅就是显示一个WebView那么简单,有时候还需要本地Java代码与HTML中的javasc ...
- LeetCode(30)-Pascal's Triangle
题目: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, ...
- ruby TkPackage can't find package BWidget 之解决办法
一个特别短的ruby/tk代码: require 'tkextlib\iwidgets' require 'tkextlib\bwidget' x = 0 101.times {|i| x+=i} T ...

