当前位置: 首页 > news >正文

【Linux】部署 flask

文章目录

  • 一、安装Python3环境
  • 二、将本地开发环境的依赖项目生成清单文件
  • 三、创建虚拟环境
    • 启用虚拟环境
    • 退出虚拟环境
  • 四、添加自定义系统服务(很重要)

一、安装Python3环境

1.首先安装编译环境(后续需要从python官网获取Python3的源码自己编译python

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

2.从官网下载python3的源码

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

3.依次执行 解压>进入解压后的目录>编译安装

tar -xvJf Python-3.6.2.tar.xzcd Python-3.6.2./configure prefix=/usr/local/python3make && make install

4.安装完毕,创建python3软连接

ln -s /usr/local/python3/bin/python3 /usr/bin/python3

执行命令

python3 -V python -V #将会看到python2的版本

5.创建pip软连接

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
pip3 -V #将会看到pip3的版本
pip3 install --upgrade pip  更新pip3

二、将本地开发环境的依赖项目生成清单文件

1.在的开发环境中,cmd来到项目的目录下执行:

 pip3 freeze >requirements.txt

certifi2018.4.16
chardet
3.0.4
idna2.7
requests
2.19.1
urllib3==1.23

2.将生成后的文件上传到linux服务器
3.将Python项目上传到服务器
在这里插入图片描述

三、创建虚拟环境

切换到pip3所在的目录

cd  /usr/local/python3/bin

安装虚拟环境

pip3 install virtualenv

这里如果报错证明你的pip3版本过低使用国内镜像进行更新

pip3 install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

创建虚拟环境 ENV

virtualenv ENV

这里会显示无命令,是因为路径问题

vi /etc/profile

进入编辑模式,在底部加入一行代码

PATH=$PATH:/usr/local/python3/bin

启用虚拟环境

cd ENV 切换到虚拟环境所在的目录
source ./bin/activate 启用虚拟环境
pip3 install -r requirements.txt 安装依赖清单里的库

退出虚拟环境

deactivate

四、添加自定义系统服务(很重要)

这样的命令在ssh终端退出后,python进程也会被杀掉

python xxx.py &

需要创建一个自定义的系统服务,来保证python程序能够在后台运行。

1.创建系统服务

vim /usr/lib/systemd/system/robot.service

内容如下:

[Unit]
Description=robot
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/python3/bin/ENV/bin/python /usr/local/python3/bin/ENV/p3.py &
PrivateTmp=true
[Install]
WantedBy=multi-user.target

ExecStart为服务启动时执行的命令,不能用相对路径, 一定要全路径。
这里也可以将命令写到任意的.sh文件中,这里写.sh文件的全路径也是可以的。

systemctl enable robot  启用自定义系统服务systemctl start robot  启动服务ps aux|grep robot   可以查看进程,确认一下服务是否启动

相关文章:

  • Gateway和VirtualService
  • 揭秘顶级 RAG 技术,不可错过的关键知识!
  • C语言实现归并排序(Merge Sort)
  • oracle 定时任务每月27号到月底
  • AccessClient在MacOS14 (sonoma)闪退无法调用远程桌面
  • Spark 性能优化高频面试题及答案
  • 国产操作系统(统信UOS)网络安全等级保护基础安全加固
  • 杨辉三角-C语言
  • word中的表格全部设置宽度100%
  • 之前请求都是正常的,然后第三方的数据库抖动了导致请求的二次请求出现431
  • PHP视频活体检测API接口示例-视频活体检测引领身份验证新潮流
  • windows安装Redis以后配置远程访问
  • 项目启动错误
  • harmonyos面试题
  • Vue3 中 this 一分钟了解
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • classpath对获取配置文件的影响
  • HTTP 简介
  • JavaScript 一些 DOM 的知识点
  • Java新版本的开发已正式进入轨道,版本号18.3
  • js 实现textarea输入字数提示
  • mongodb--安装和初步使用教程
  • Netty源码解析1-Buffer
  • Next.js之基础概念(二)
  • Redux 中间件分析
  • vagrant 添加本地 box 安装 laravel homestead
  • Vue ES6 Jade Scss Webpack Gulp
  • web标准化(下)
  • Web标准制定过程
  • 简析gRPC client 连接管理
  • 深度学习在携程攻略社区的应用
  • 探索 JS 中的模块化
  • 微信开放平台全网发布【失败】的几点排查方法
  • Nginx实现动静分离
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​如何防止网络攻击?
  • #define用法
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $(function(){})与(function($){....})(jQuery)的区别
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (超详细)语音信号处理之特征提取
  • (分布式缓存)Redis持久化
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (离散数学)逻辑连接词
  • (学习日记)2024.01.19
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default