python部署linux

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 listpython -V

软连接

mv python python.backln -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.rhkb.cn/news/320324.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vite打包配置

目录 minify默认是esbuild,不能启动下面配置 使用: plugins: [viteMockServe({mockPath: mock})]根目录新建mock/index.ts. 有例子Mock file examples:https://www.npmjs.com/package/vite-plugin-mock-server 开发环境生产环境地址替换。根…

计算机是如何执行指令的

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

权益商城系统源码 现支持多种支付方式

简介: 权益商城系统源码,支持多种支付方式,后台商品管理,订单管理,串货管理,分站管理,会员列表,分销日志,应用配置。 上传到服务器,修改数据库信息&#xff…

软件测试与管理-白盒测试-逻辑覆盖法例题

目录 知识点: 例题 : 知识点: 语句覆盖:设计足够多的测试用例,使得被测试程序中的“ 每条可执行语句至少被执行一次” 优点:可通过源码观察直观地得到测试用例,无须细分每个判定表达式。缺点&am…

保研面试408复习 3——操作系统

文章目录 1、操作系统一、进程有哪几种状态,状态之间的转换、二、调度策略a.处理机调度分为三级:b.调度算法 标记文字记忆,加粗文字注意,普通文字理解。 为什么越写越少? 问就是在打瓦。(bushi) 1、操作系统 一、进程…

企业网站 | 被攻击时该怎么办?

前言 每天,数以千计的网站被黑客入侵。发生这种情况时,被入侵网站可用于从网络钓鱼页面到SEO垃圾邮件或者其它内容。如果您拥有一个小型网站,很容易相信黑客不会对它感兴趣。不幸的是,通常情况并非如此。 黑客入侵网站的动机与所…

后端方案设计文档结构模板可参考

文章目录 1 方案设计文档整体结构2 方案详细设计2.1 概要设计2.2 详细设计方案2.2.1 需求分析2.2.2 业务流程设计2.2.3 抽象类:实体对象建模2.2.4 接口设计2.2.5 存储设计 1 方案设计文档整体结构 一,现状:把项目的基本情况和背景都说清楚&a…

MAC 本地搭建Dify环境

Dify 介绍 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过…

Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg

本文首发于公众号:机器感知 Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg Converting Anyones Voice: End-to-End Expressive Voice Conversion with a Conditional Diffusion Model Expressive voice conversion (VC) conducts speak…

数塔问题(蛮力算法和动态规划)

题目:如下图是一个数塔,从顶部出发在每一个节点可以选择向左或者向右走,一直走到底层,要求找出一条路径,使得路径上的数字之和最大,及路径情况。(使用蛮力算法和动态规划算法分别实现) #include…

c语言从入门到函数速成(1)

温馨提醒:本篇文章适合人群:刚学c又感觉那个地方不怎么懂的同学以及以及学了一些因为自身原因停学一段时间后又继续学c的同学 好,正片开始。 主函数 学c时最先学的是我们c语言程序的主体函数,c的主函数有两种写法,这…

【Docker】★★★

docker 的网络模式 ●host模式:使用 --nethost 指定 容器与宿主机共享网络命名空间、ip和端口 ●container模式:使用 --netcontainer:NAME_or_ID 指定 新建的容器共享已有容器的网络命名空间、ip和端口 ●none模式:使用 --netnone 指定 不进行…

被问了n遍的小程序地理位置权限开通方法

小程序地理位置接口有什么功能? 在平时我们在开发小程序时,难免会需要用到用户的地理位置信息的功能,小程序开发者开放平台新规要求如果没有申请开通微信小程序地理位置接口( getLocation ),但是在代码中却使用到了相关接口&#…

macOS sonoma 14.4.1编译JDK 12

macOS sonoma 14.4.1编译JDK 12 环境参考文档开始简述问题心路历程着手解决最终解决(前面有点啰嗦了,可以直接看这里) 记录一次靠自己看代码解决问题的经历(总之就是非常开心)。 首先,先diss一下bing,我差一点就放弃了。 环境 macOS sonom…

分布式与一致性协议之Raft算法(二)

Raft算法 什么是任期 我们知道,议会选举中的领导者是有任期的,当领导者任命到期后,需要重新再次选举。Raft算法中的领导者也是有任期,每个任期由单调递增的数字(任期编号)标识。比如,节点A的任期编号是1。任期编号会…

自定义类型

引言: C语言分为:1、内置类型 2、自定义类型: 1》结构体——每个成员有自己的空间 2》枚举型——定义多个常量 3》联合体——所有成员共用一快内存空间 一、结构体: 单独写过了一篇 关于结构体的介绍以及使用 二、 枚举型&…

论文辅助笔记:Tempo之modules/prompt.py

1 get_prompt_param_cls 2 get_prompt_value 3 Prompt 类 3.1 _init_weights 3.2 forward

表空间的概述

目录 表空间的属性 表空间的类型 永久性表空间(PermanentTablespace) 临时表空间(Temp Tablespace ) 撤销表空间(Undo Tablespace) 大文件表空间(BigfileTablespace) 表空间的状态 联机状态(Online) 读写状态(Read Write) 只读状态(Read) 脱机状态(Offline) Oracle从…

Elasticsearch初步认识

Elasticsearch初步认识 ES概述基本概念正向索引和倒排索引IK分词器ik_smart最少切分ik_max_word为最细粒度划分 ES索引库基本操作对索引库操作对文档操作 ES概述 Elasticsearch,简称为 ES,是一款非常强大的开源的高扩展的分布式全文检索引擎&#xff0c…

谁能取代迈巴赫,征服互联网安全大佬周鸿祎?

‍作者 |老缅 编辑 |德新 4月18日,「周鸿祎卖车」登上了微博热搜。这位360创始人、董事长发微博称:自己做了一个艰难的决定,将把陪伴9年的迈巴赫600给卖掉。 随后,他解释道:「这是因为我需要体验新一代车的感觉。古人…