python部署linux

news2024/11/28 12:31:41

python项目做完了,就涉及到了部署,windows可以打包exe,linux如何部署呢?

部署

Python的打包部署方式有多种,具体取决于项目的需求、规模以及所使用的工具。以下是几种常见的Python打包部署方式:

使用pip安装:对于小型的Python库或工具,通常可以直接通过pip进行安装。这种方式下,开发者会将代码打包成Python的wheel或source distribution格式,然后上传到PyPI(Python Package Index)或其他包管理器中。用户可以通过pip install命令直接安装这些包。

虚拟环境:为了避免不同项目之间的依赖冲突,开发者通常会使用虚拟环境(如venv或conda)来隔离每个项目的依赖。在虚拟环境中,可以安装项目所需的特定版本的Python解释器和依赖库。

容器化部署:对于更复杂的应用,可以使用Docker等容器化技术来打包和部署Python应用。通过Docker,可以将Python应用及其所有依赖项打包到一个可移植的容器中,然后在任何支持Docker的环境中运行该容器。这种方式的好处是简化了部署过程,并确保了应用在不同环境中的一致性。

直接上传代码到Linux启动:有时,为了快速部署或调试,开发者可能会选择直接将代码上传到Linux服务器并启动。这种方式简单直接,但可能存在一些问题。例如,没有使用虚拟环境可能导致依赖冲突;没有明确的打包和部署流程可能导致版本控制混乱;直接在服务器上编辑和运行代码也可能增加安全风险。

选择哪种打包部署方式取决于项目的具体需求。对于小型项目或快速原型开发,直接上传代码到Linux启动可能是一个可行的选择。但对于大型、复杂的项目或需要确保一致性和安全性的项目,使用更正规的打包和部署流程(如pip安装、虚拟环境或容器化部署)通常是更好的选择。

总的来说,Python的打包部署方式灵活多样,可以根据项目的需求选择最适合的方式。同时,为了确保项目的稳定性和安全性,建议遵循良好的代码管理和部署实践。

具体

直接上传代码部署,测试环境可以这么干,不过建议还是使用docker容器化部署

在这里插入图片描述
配置SFTP
在这里插入图片描述
增加ssh

部署路径
在这里插入图片描述
排除日志
在这里插入图片描述
增加密钥
在这里插入图片描述
也可以使用账号密码的方式

启动

需要有python的环境

编译环境

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

源码下载

wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz

解压

tar -Jxvf Python-3.9.5.tar.xz -C /usr/local

安装

cd /usr/local/Python-3.9.5/

./configure --prefix=/usr/local/Python-3.9.5

编译

make && make install

测试是否成功

/usr/local/Python-3.9.5/bin/pip3 list

python -V

软连接

mv python python.back

ln -s /usr/local/Python-3.9.5/bin/python3.9 /usr/bin/python

生成清单文件

pip3 freeze >requirements.txt

上传项目到linux

部署虚拟环境

pip3 install virtualenv

修改源

cd /root/.pip && vim ./pip.conf

如果没有提供启动命令

0.0.0.0 才能让外部访问

创建虚拟环境

python3 -m venv myenv  
source myenv/bin/activate  # 在 Unix 或 MacOS 上  
myenv\Scripts\activate     # 在 Windows 上

缺啥模块,就下载啥模块

pip install django

启动

python3 manage.py runserver 0.0.0.0:8401

后台启动

在后台启动 Django 的开发服务器,你可以使用多种方法,因为默认情况下,python manage.py runserver 会将命令行窗口绑定到该进程,使得你不能在后台运行它或者关闭命令行窗口。

以下是几种在后台启动 Django 开发服务器的方法:

  1. 使用 nohup 和 &(Linux/Unix/macOS)
    在命令行中,你可以使用 nohup 和 & 将进程放到后台运行:

bash

nohup python manage.py runserver 0.0.0.0:8401 &

这会启动服务器并在后台运行,即使你关闭了命令行窗口,服务器也会继续运行。所有的输出都会被重定向到一个名为 nohup.out 的文件中(除非你在命令中指定了其他文件)。

  1. 使用 screen 或 tmux(Linux/Unix/macOS)
    screen 和 tmux 是终端复用器,它们允许你在一个终端会话中运行多个终端,并将它们分离到后台。

例如,使用 screen:

bash
screen -S django_server
python manage.py runserver 0.0.0.0:8401

然后按 Ctrl + A, 然后按 D 来分离会话
之后,你可以通过 screen -r django_server 重新连接到该会话。

  1. 使用第三方工具,如 gunicorn 或 uWSGI
    虽然这些不是开发服务器的解决方案,但它们在生产环境中非常有用,并且它们支持以守护进程(daemon)模式运行。然而,它们也可以用于开发环境。例如,使用 gunicorn:

首先,你需要在项目的 requirements.txt 文件中添加 gunicorn。

然后,你可以使用以下命令启动它:

bash
gunicorn your_project.wsgi:application --bind 0.0.0.0:8401 --daemon
注意:–daemon 选项使 gunicorn 在后台运行。但请注意,gunicorn 主要是为生产环境设计的,而不是开发环境。

  1. 使用 Windows 的服务或计划任务(Windows)
    在 Windows 上,你可以使用服务或计划任务来在后台运行 Python 脚本,但这通常比在 Linux/Unix/macOS 上更复杂。

  2. 使用 IDE 的内置功能(如 PyCharm)
    一些集成开发环境(IDE),如 PyCharm,允许你以调试模式或常规模式在后台运行 Django 服务器。你可以查看 IDE 的文档以了解如何执行此操作。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过氧气退火增强β-Ga₂O₃二极管.中国科技大学和河北半导体研究所的研究人员在这一特定领域取得了最新重大进展

上图所示:(a)增加台面有助于提高β-Ga2O3肖特基势垒二极管的阻断电压(b)。 氧气退火和自对准台面终端使β-Ga2O3二极管进一步走向商业化。 虽然β-Ga2O3电力电子技术已经取得了长足的进步,但仍然存在挑战&…

民航电子数据库:replace into导致自增主键异常,新增数据时报错:违反唯一键约束

目录 场景异常原因解决方法一:删除数据重新insert方法二:刚刚自增主键的起始值 场景 1、对接民航电子数据库 2、由于truncate、drop命令会使数据库报错:执行失败,[E14011]资源忙(加锁超时),所以用了replace into命令…

使用Express+Node.js搭建网站

Express是一个基于Node.js平台的快速、开放、极简的Web开发框架。它的作用是专门用来创建Web服务器,与Node.js内置的http模块功能相似,但更为简便和高效。 Express中文官网:Express - 基于 Node.js 平台的 web 应用开发框架 - Express中文文…

人工智能|推荐系统——工业界的推荐系统之排序

多目标排序模型 回顾一下推荐系统的链路 常见的交互指标 排序模型做的事情 多目标模型就是要预测多个目标 预测概率和实际是否交互求交叉熵损失 训练时通常会遇到类别不平衡问题,可以考虑做采样 采样可能导致预估点击率偏高 可以通过校准公式进行校准 Multi-gate Mi…

聊聊 ASP.NET Core 中间件(二):中间件和筛选器的区别

前言 有些小伙伴看到上一篇文章后,可能会发现中间件和我们之前讲的筛选器非常类似,比如它们都是通过 next 串起来的一系列的组件,并且都可以在请求处理前后执行代码,都可以通过不执行 next 来进行请求的终止。那么筛选器和中间件…

【算法】滑动窗口——最大连续1的个数

本篇文章讲的是“最大连续1的个数”这道题,从最开始的简单暴力到用滑动窗口算法实现解题的思路历程,有需要借鉴即可。 目录 1.题目2.暴力求解3.滑动窗口解法3.1优化一:end重返start优化,end指针不回退3.2优化二:某一st…

PC小程序解密及反编译

一、小程序包解密 小程序原始加密包位置C:\Users\administrator\Documents\WeChat Files\Applet\wx234324324324 二、wxappUnpacker反编译 npm install./bingo D:\temp\小程序包解密\wxpack\wx234324324324.wxapkg 三、查看反编译后的文件

C++ 递归函数

一 递归函数 递归函数(Recursive Function)即自调用函数,即在函数体内有直接或间接地自己调用自己的语句。 大多数递归函数都能够用非递归函数代替。 例如:求两个整数a,b的最大公约数。 算法描述: 大多数递归函数都能用非递归…

Leaflet在WGS84 Web墨卡托投影与WGS84经纬度投影下空间信息变形问题及修正-以圆为例

目录 前言 一、投影的相关知识 1、经纬度投影 2、Web墨卡托投影 二、经纬度投影下的空间信息展示 1、空间信息展示 2、效果展示 3、经纬度投影下的圆修正 三、Web墨卡托投影下空间信息展示 1、底图引用 2、自定义生成圆 总结 前言 在GIS的知识海洋中,对…

2024/5/7 QTday2

练习:优化登录框,输入完用户名和密码后,点击登录,判断账户是否为 Admin 密码 为123456,如果判断成功,则输出登录成功,并关闭整个登录界面,如果登录失败,则提示登录失败&a…

(✌)粤嵌—2024/5/7—除自身以外数组的乘积

代码实现&#xff1a; /*** Note: The returned array must be malloced, assume caller calls free().*/ int* productExceptSelf(int *nums, int numsSize, int *returnSize) {// 左乘积int l[numsSize];l[0] 1;for (int i 1; i < numsSize; i) {l[i] l[i - 1] * nums[…

Kansformer?变形金刚来自过去的新敌人

​1.前言 多层感知器(MLPs),也被称为全连接前馈神经网络,是当今深度学习模型的基础组成部分。 MLPs在机器学习中扮演着至关重要的角色,因为它们是用于近似非线性函数的默认模型,这得益于通用近似定理所保证的表达能力。然而,MLPs真的是我们能构建的最佳非线性回归器吗?尽管ML…

景源畅信:个人抖音小店怎么开通?

在数字时代的浪潮中&#xff0c;个体创业已不再是遥不可及的梦想。特别是随着短视频平台的崛起&#xff0c;抖音不仅成为人们娱乐消遣的新宠&#xff0c;更是众多创业者眼中的“新大陆”。你是否也曾憧憬过在抖音上开一家属于自己的小店?那么&#xff0c;如何开通个人抖音小店…

️测试问我:为啥阅读量计数这么简单的功能你都能写出bug?

前言 可乐他们团队最近在做一个文章社区平台,由于人手不够,后端部分也是由前端同学来实现,使用的是 nest 。 今天他接到了一个需求,就是在用户点开文章详情的时候,把阅读量 +1 ,这里不需要判断用户是否阅读过,无脑 +1 就行。 它心想:这么简单,这不是跟 1+1 一样么。…

Python做自动化测试必知必会思维导图

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

蓝牙模块HC-08+WIFI模块ESP-01S

蓝牙模块 又叫蓝牙串口模块。 串口透传技术&#xff1a;透传即透明传送&#xff0c;是指在数据的传输过程中&#xff0c;通过无线的方式使这组数据不发生任何形式的改变&#xff0c;仿佛传输过程是透明的一样&#xff0c;同时保证传输的质量&#xff0c;原封不动地道了最终接收…

ROS机器人实用技术与常见问题解决

问题速查手册&#xff08;时实更新&#xff09;更加全面丰富的问题手册记录 1.机器人使用GPARTED挂载未分配空间 需要在图型界面下操作&#xff0c;建议使用no machine连接 安装gparted磁盘分区工具, sudo apt-get install gparted -y 启动软件 sudo gparted 点击磁盘/内存…

vivado Versal ACAP 可编程器件镜像 (PDI) 设置

Versal ACAP 可编程器件镜像 (PDI) 设置 下表所示 Versal ACAP 器件的器件配置设置可搭配 set_property <Setting> <Value> [current_design] Vivado 工具 Tcl 命令一起使用。 注释 &#xff1a; 在 Versal ACAP 架构上 &#xff0c; 原先支持将可编程器…

Misc 流量分析

流量分析简介 网络流量分析是指捕捉网络中流动的数据包&#xff0c;并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 在CTF比赛中&#xff0c;以及各种技能大赛对于流量包的分析取证是一种十分重要的题型。通常这类题目都是会提供…

干货分享-策划人都在用的活动策划网站

职场上&#xff0c;学会借力&#xff0c;学会‘抄’&#xff0c;比辛辛苦苦做老黄牛&#xff0c;更能事倍功半&#xff0c;不仅自己省事省力&#xff0c;还能获得更多升职加薪的机会。 那么&#xff0c;职场新人如何快速的写出一份领导满意的方案&#xff1f; 今天分享的‘抄…