首页>>后端>>Python->Django如何打包部署(2023年最新解答)

Django如何打包部署(2023年最新解答)

时间:2023-12-20 本站 点击:0

导读:很多朋友问到关于Django如何打包部署的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

[Django]部署(一)

Django部署也挺方便,我用过以下三种方式,各自适合特定的场景。

不要看不起Django自带server,一个命令解决部署问题,虽然性能不高,但有些场景,这个方法最合适。 runserver 0.0.0.0:80 就能在局域网里开启Django服务,适合用户不多,性能要求不要的场景。

可以采用Apache+mod_wsgi 或者 IIS+wfastcgi部署, 相比之下 IIS更方便一些,毕竟微软自带的工具。

使用最广泛的就是nginx+uwsgi 的部署方式,教程很多。另外现在docker一键部署,更是省时省力。

腾讯云python系列之部署Django流程

我的是centos系统

我们通过腾讯的控制台的登录按钮,进入到远程登录的界面,如图1为腾讯云的控制台界面。图2为登录以后的密码输入窗口

进入登录界面以后,会是图3这样子的情况,我们输入ls,会发现没有任何文件, 输入pip list 会提示没有安装pip,而输入python时,会显示默认安装了python2.7.5版本

一、首先我们要安装pip,根据自己的系统自行选择

centos类系统: sudo yum install python python-pip

ubuntu类系统:sudo apt-get install python python-pip

安装好以后pip list一下,看看都有哪些python安装包

二、安装django

我安装的Django版本为1.9.8的,根据自己的情况,更改后面的版本号

sudo pip install Django ==1.9.8

可能会出现图4这样的问题,原因是我们pip 版本太低,直接按照提示升级我们的pip

更新了pip以后,安装可能会出现如图5这样的问题,我们不要在==两边加空格,因为加空格会导致不识别django的版本。

安装完以后你会发现自己找不到Django放在哪里了,其实我的django被安装在了

/usr/lib/python2.7/site-packages/

并且我们要执行创建django的命令在django的bin目录下,如图6

/usr/lib/python2.7/site-packages/django/bin

进入到该目录下,运行django-admin.py startproject FirstProject,创建出FirstProject的项目。就会在该目录下创建出FirstProject这个项目,进入项目,运行python manage.py runserver

问题来了,我们运行以后,不要点击,这个是进不去的,我们应该通过腾讯云的公网ip来访问网站,但又有同学发现通过公网的ip也无法访问我们的网站,这是因为自己的腾讯云没有打开相应的端口,所以无法访问。开放端口在安全组这个选项,如图7

进入安全组,新建我们的开放端口,我开放的是80端口。如图8

开放端口后,我们重新python manage.py runserver 0.0.0.0:80,如图9

通过公网ip,就可以直接访问我们的网站了。如图10

如何将Django项目部署到阿里云服务器上

1,APP应用需要什么样的云服务器? 为了帮助大家了解如何使用阿里云云服务器及相关应用,阿里云的移动云团队开发了一个简单的APP应用:移动云相册,其中使用了ECS主要用作部署云相册的API服务(图片信息调用、图片列表调用)和图片缩略图处理,因为这个应用服务端使用了JAVA语言开发,因此在上面安装tomcat来部署应用。 具体部署 1)远程登录: 第一次购买ECS后,会把该ECS服务器的root账号、密码发送购买者的邮箱,然后购买者可以通过远程登录到ECS服务器,具体远程登录可以参考如下: Windows:中国//help.aliyun中国/manual?spm=5176.383518.5.16.4lLZznhelpId=59 Linux:中国//help.aliyun中国/manual?spm=5176.383518.5.16.4lLZznhelpId=59 2)安装web环境 根据自己应用特点选择安装相关web服务器tomcat或者jetty,阿里云提供了一条龙安装部署脚本,为开发者提供了更多的方便,请参考如下链接:中国//help.aliyun中国/manual?spm=0.0.0.0.RGeYy4helpId=129 3)打包应用 将web源码下载到本地,使用命令mvnpackage打成war包。如果不是maven工程,可以用类似ant打成war包。 4)上传war包 Linux下面可以使用sftp上传war包,上传war包到指定目录后进行解压,具体使用方式参考:中国//help.aliyun中国/manual?spm=0.0.0.0.PnfpSLhelpId=1848 5)启动web服务 将tomcat或jetty服务启动 6)配置反向中国、绑定域名 具体配置信息参考:中国//help.aliyun中国/manual?spm=0.0.0.0.Ti7iuAhelpId=532, 中国//help.aliyun中国/manual?spm=0.0.0.0.MKbFj1helpId=65 2,APP应用如何把图片存到云存储服务器中? 图片类APP应用的架构核心在于大量小文件的存储与访问,在文件数量较多的情况下将文件直接存储在硬盘上将极大影响应用的访问效率。阿里云存储服务OSS对海量小文件的存储及管理具有很大优势,图片不从服务端下载,减少了服务端压力。阿里云的OSS的备份机制也保证了文件的存储安全,其存储容量可以无限扩展,每秒请求数超过50000次,多线BGP中国络确保全国各地访问流畅。 使用阿里云OSS步骤: 1)登录阿里云官中国(aliyun中国)开通OSS 2)获取KEY及密钥 3)下载SDK (JAVA版下载地址为:中国//bbs.aliyun中国/job.php?action=downloadaid=38817 帮助手册: 中国//aliyun_portal_storage.oss.aliyuncs中国/oss_api/oss_javahtml/index.html ) 4)开始APP开发 很简单吧,下面是一个使用阿里云的OSS上传图片的代码样例: StringupLoadURI = OSSClient.generateUploadUrl(Constants.SERVER_URL.GENERATE_URL,fileName, null); int status =OSSClient.uploadFile(upLoadURI, path); 3,APP上云后如何使用云数据库? 为了帮助大家了解如何使用阿里云云服务器及相关应用,阿里云的移动云团队开发了一个简单的APP应用:移动云相册,其中使用了RDS中提供的MYSQL服务,数据库中主要存储了用户上传的图片信息,包括原图、缩略图的信息及存储地址,通过WEB端API向客户端提供数据调用。 使用阿里云RDS和使用本地数据库基本上没有区别,使用样例如下: 1)创建数据库实例 使用阿里云账号购买RDS后,可以创建数据库实例。 2)创建数据库以及管理账号 创建数据库名称以及管理账号,用于应用程序调用数据库连接。 3)访问数据库: 创建完数据库(test)后,在数据库test里添加账户:test、密码:test,可以在RDS控制台查看到数据库相关信息,从中能够得到数据库的外中国地址如:xxxx.mysql.rds.aliyuncs中国,可以使用应用程序连接数据库,javajdbc连接数据库示例代码如下: String url = “jdbc:mysql://xxxx.mysql.rds.aliyun:3306/test”; String username = “test” ; String password = “test” ; try{ Connection con = DriverManager.getConnection(url ,username , password ) ; }catch(SQLException e){ e.printStackTrace() ; //需要对异常做处理

django+vue前后端分离项目部署

后端用的drf,使用的是uwsgi+nginx

进入服务器项目文件目录下,我的django项目放在了“/usr/myProjects/”目录下了。在manage.py同级目录下创建uwsgi.ini文件,配置如下:

测试效果命令:

如果访问:xxx.xxx.xxx.xx:8000 成功, 则uwsgi.ini配置成功

我的nginx.conf所在位置是“/etc/nginx/nginx.conf”

配置文件如下:

1、第一行

主要就是给nginx加权限,vue部署后使用history路由时会去掉地址后面的‘#’号,打包部署后不加权限会有bug。

2、如配置所示,有两个Server,分别部署了前端服务,和后端服务,值得注意的是两个Server用的是同一个服务器,监听的端口不同。

3、vue部署需要注意的是反向代理地址:

以及后面的端口问题

4、后端的Server需要注意location中的uwsgi_pass 后面的端口号要和uwsgi.ini中配的相同,否则监听不到

5、后端跨域问题。如果遇到跨域需要自己网上找配置,我的没遇到,可能是因为我在django的settings中配置了跨域。

6、django-suit后台管理样式崩了,需要改,但是api可以正常访问,这个有空再说

7、我开始后台监听的是8008端口,vue前端监听的是80端口,这样前端显示好看。然而问题出现了,虽然后台api可以正常访问,vue的本地开发环境也能正常运行且文字、图片资源均显示正常,但是前端vue打包线上部署后,文字信息显示正常,图片信息缺失8008端口,导致显示不出来。为图方便我选择了前端监听8008端口,后端监听80,部署后显示正常。原因不太清楚///////有空再说吧。

8、不要问我为啥都前后端分离了还部署到一个服务器上?穷,而且只是测试,没必要

9、此文仅适合入门

关于django后台admin(suit)缺失的修改(参考:django中文网: )

在环境中进入项目目录,需要收集css样式,在终端输入命令:

接下来你就回发现static文件中包含了css文件,此时再打开网站,样式显示正常

uWSGI 通过 xxx.ini 启动后会在相同目录下生成一个 xxx.pid 的文件,里面只有一行内容是 uWSGI 的主进程的进程号。

关于uwsgi,进入同届目录下

教训

获取不到环境,那就指定环境

另外:记得重启uwsgi,重启Nginx,实在不行就先把监听的端口kill掉再重启

暴力删端口:fuser -k 80/tcp

netstat -aptn命令行,查看所有开启的端口号

netstat -ntlp | grep 80 查看具体的端口是否使用

ps -ef | grep uwsgi 查看是否有uwsgi端口存在

如何将 django 1.7 程序打包成 exe 程序

python制作exe可执行文件的方法---使用pyinstaller

python生成windows下exe格式的可执行程序有三种可选方案: py2exe是大家所熟知的,今天要介绍pyinstaller, 这个工具全平台可用。我曾使用python制作一个工具程序供公司同事使用后,由于公司使用mac linux windows都有很多,就使用过它来将程序做成可执行文件,兼容性好,只是会使得程序在linux平台和mac平台启动较慢(windows还是比较快的),但基本够用。

安装完pyinstaller之后就可以开始了。

1.使用pyinstaller生成可执行文件的方法

1.1 将依赖文件集中到一个文件夹:

pyinstaller -D -w main.py #把main.py替换成你的主入口python文件即可。

-w参数代表main.py是一个窗体程序。

1.2 将所有依赖文件都打包到同一个可执行文件中:

pyinstaller -F -w main.py

2.调查pyinstaller生成程序的加载过程

使用如下命令,可以得到运行时的跟踪,tracing ,loader 的加载过程。

pyinstaller -Fwd aui.py #把aui.py 换成你需要侦测的文件即可。

结语:以上就是首席CTO笔记为大家介绍的关于Django如何打包部署的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/46135.html