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

Python 云服务器应用,Https,定时重启

Python 云服务器应用,Https,定时重启

  • 环境搭建
  • Python模块
  • 模块导入
  • 生成Flask实例
  • GET处理
  • 启动服务器
  • 打开网页验证 GET
  • 接入证书 支持https
    • 申请证书
    • 下载证书
    • 保留 xxx.crt 和 xxx.key文件就可以了 copy到python项目目录
    • ssl_context 配置
  • 宝塔面板操作
    • 在www目录下新建python工作目录
    • 在python工作目录下新建项目子目录
    • 上传本地的 .py文件到服务器项目目录下![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ffb04f92b8d0402bb26ac61e465356a0.png)
    • 宝塔操作 添加python项目
    • 项目配置 - 具体参数如下截图 - 配置好后 提交
    • 项目添加模块
    • 开放端口 8002 你用到哪个端口就放开哪个端口
    • 入站配置
      • 打开购买云服务器的平台网站
      • 进入实例
      • 添加入站规则
      • 协议填tcp 端口8002 备注 python服务器 其他的默认 就可以了
  • 测试云端GET
  • 测试云端POST
  • 配置服务器 定时器重启
    • 脚本写好了后执行一遍验证一下
  • 详细视频教程 - bilibili
  • Python源码
    • main.py
    • LockIP.py
  • Demo 仓库

环境搭建

  • python 3.6+
  • vscode
  • centos云服务器一台
  • 宝塔Liunx面板已安装
  • SSL证书 nginx版本

Python模块

  • flask
    搭建https服务器
  • gevent.pywsgi
    支持服务器生产环境

pip install flask
pip install gevent

模块导入

from flask import Flask,request,redirect,jsonify, url_for
from LockIP import IPStatus, check

生成Flask实例

app = Flask(__name__)

GET处理

@app.route('/new')
def newHtml():return "lpl 加油!"

启动服务器

def openserver():import datetimetimestr = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')print(f'{timestr} 服务器启动中.....')app.run(host="0.0.0.0", port=8000,debug=True)if __name__ == '__main__':openserver()

打开网页验证 GET

网页输入 http://127.0.0.1:8000/new

出现 lpl 加油! 服务器启动成功
在这里插入图片描述

接入证书 支持https

申请证书

以西部数据为案例
在这里插入图片描述

下载证书

下载支持nginx的版本
在这里插入图片描述

保留 xxx.crt 和 xxx.key文件就可以了 copy到python项目目录

  • .crt
  • .key

ssl_context 配置

这里填你自己申请的证书文件名 对应的crt和key文件

app.run(host="0.0.0.0", port=8002, ssl_context=('www.geek7.top.crt', 'www.geek7.top.key'))

宝塔面板操作

在www目录下新建python工作目录

在这里插入图片描述

在python工作目录下新建项目子目录

在这里插入图片描述

上传本地的 .py文件到服务器项目目录下在这里插入图片描述

宝塔操作 添加python项目

在这里插入图片描述

项目配置 - 具体参数如下截图 - 配置好后 提交

在这里插入图片描述

项目添加模块

在这里插入图片描述
不需要填版本好 直接填需要依赖的模块名就好了
在这里插入图片描述

开放端口 8002 你用到哪个端口就放开哪个端口

协议填tcp 端口8002 备注 python服务器 其他的默认 就可以了
在这里插入图片描述

入站配置

打开购买云服务器的平台网站

在这里插入图片描述

进入实例

在这里插入图片描述

添加入站规则

在这里插入图片描述

协议填tcp 端口8002 备注 python服务器 其他的默认 就可以了

测试云端GET

没有域名的 用ip也可以的 前面要用https
https://www.geek7.top:8002/new
在这里插入图片描述

测试云端POST

代码保留在案例了 自己去瞅瞅 给你一个发挥的机会 代码可以跑通 自己研究研究

配置服务器 定时器重启

  • 宝塔面板 - 计划任务 - Shell脚本
    在这里插入图片描述

  • 时间自填

  • 脚本内容

ps -ef|grep PYServer|grep -v grep|cut -c 9-15|xargs kill -9
cd /www/python_projs/PYServer/
/www/server/pyporject_evn/444ab1b88bd66070681fb30537aeeb8c_venv/bin/python3 -u /www/python_projs/PYServer/server.py

脚本内容 中的PYServer改成你的项目名
在这里插入图片描述

脚本写好了后执行一遍验证一下

怎么验证呢? 方式有很多种 最简单的一种 先关闭python项目 然后执行一次脚本 如果项目跑起来了 就表示shell脚本成功
在这里插入图片描述

详细视频教程 - bilibili

Python Https云服务器,定时重启

Python源码

main.py

from flask import Flask,request,redirect,jsonify, url_for
from LockIP import IPStatus, checkapp = Flask(__name__)@app.route('/new')
def newHtml():ip = request.remote_addrstatus = check(ip)if status == IPStatus.Lock:return "你已在黑名单中"elif status == IPStatus.Suspicion:return "频繁触发警告"  return "lpl 加油!"@app.route('/form',methods=['POST'])
def form():#获取上传的文件files = request.filesfor key in files:file = files[key]file.save(f"imgs/{file.filename}")return "upload success"def openserver():import datetimetimestr = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')print(f'{timestr} 服务器启动中.....')# 本地测试# app.run(host="0.0.0.0", port=8000,debug=True)# debug开发模式# app.run(host="0.0.0.0", port=8002, ssl_context=(#     'www.geek7.top.crt', 'www.geek7.top.key'))#生产环境from gevent import pywsgiserver = pywsgi.WSGIServer(('0.0.0.0',8002),app,keyfile='www.geek7.top.key', certfile='www.geek7.top.crt')server.serve_forever()if __name__ == '__main__':openserver()

LockIP.py

import time
from enum import Enumrequest_history = {}  #请求历史信息 包含ip 最后一次请求时间戳 频繁请求计数 违规次数
blacklist = [] #黑名单 通知一次玩家已经是在黑名单了
locklist = []  #锁定列表 返回空字符串class IPStatus(Enum):General = 1    Lock = 2Suspicion = 3def check( ip ):# 锁定ip列表if ip in locklist:return IPStatus.Lock# 黑名端 会通知一次客户端if ip in blacklist:locklist.append(ip)return IPStatus.Suspicion# 1秒内请求限制5次if ip not in request_history.keys():request_history[ip] = [time.time(), 1, 0 ]  # 最近call的时间, 短时间内调用的次数, 频繁计数else:if time.time() - request_history[ip][0] < 1:request_history[ip][1] += 1# 频繁请求 违规处理if request_history[ip][1] >= 5:#违规次数统计request_history[ip][2] += 1if request_history[ip][2] >= 5:blacklist.append(ip) #加入黑名端return IPStatus.Suspicionelse:request_history[ip][1] = 1request_history[ip][0] = time.time()return IPStatus.General

Demo 仓库

github

相关文章:

Python 云服务器应用,Https,定时重启

Python 云服务器应用,Https,定时重启 环境搭建Python模块模块导入生成Flask实例GET处理启动服务器打开网页验证 GET接入证书 支持https申请证书下载证书保留 xxx.crt 和 xxx.key文件就可以了 copy到python项目目录ssl_context 配置 宝塔面板操作在www目录下新建python工作目录在…...

pytorch 笔记:dist 和 cdist

1 dist 1.1 基本使用方法 torch.dist(input, other, p2) 计算两个Tensor之间的p-范数 1.2 主要参数 input输入张量other另一个输入张量p范数 input 和 other的形状需要是可广播的 1.3 举例 import torchxtorch.randn(4) x #tensor([ 1.2698, -0.1209, 0.0462, -1.3271…...

Java的List中的各种浅拷贝和深拷贝问题

先来看一组代码 public class Temp{public static void main(String[] args) {List<Integer> list new ArrayList<>();list.add(1);list.add(2);list.add(3);List<Integer> temp list;list.add(4);System.out.println(list.toString());System.out.print…...

20231207_最新已测_Centos7.4安装nginx1.24.0_安装详细步骤---Linux工作笔记066

以前安装的太模糊了,干脆重新写一个: 1.首先下载对应的nginx-1.24.0.tar.gz安装文件 2.然后: 去执行命令 安装依赖 yum install -y gcc yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel 3.然后:去解压 tar -zxvf ngi…...

前端知识笔记(二十六)———React如何像Vue一样将css和js写在同一文件

如果想在React中想要像Vue一样把css和js写到一个文件中&#xff0c;可以使用CSS-in-JS。 使用CSS-in-JS 下载 npm i styled-components使用 就像写scss一样&#xff0c;不过需要声明元素的类型 基本语法及展示如下 import styled from "styled-components"expor…...

Photoshop Circular Text

Ctrl N 新增 现学现卖...

深入解析Spring Boot中的注解@PathVariable、@RequestParam、@RequestBody的正确使用

文章目录 1. 引言2. PathVariable&#xff1a;处理路径变量2.1 简介2.2 使用示例 3. RequestParam&#xff1a;处理请求参数3.1 简介3.2 使用示例 4. RequestBody&#xff1a;处理请求体4.1 简介4.2 使用示例 5. 多个注解的组合使用6. 参数绑定的原理6.1 HandlerMethodArgument…...

Qt Location中加载地图对象

在Qt Location中加载地图对象&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1&#xff0c;首先&#xff0c;确保你已经安装了Qt Location模块&#xff0c;并在项目中包含了相应的头文件。在项目文件&#xff08;.pro&#xff09;中添加以下行&#xff1a; QT locatio…...

4-Docker命令之docker ps

1.docker ps介绍 docker ps命令是用来列出容器的相关信息 2.docker ps用法 docker ps [参数] [rootcentos79 ~]# docker ps --helpUsage: docker ps [OPTIONS]List containersAliases:docker container ls, docker container list, docker container ps, docker psOptions…...

你在地铁上修过bug吗?

作为技术人员&#xff0c;有没有遇到下班路上收到老板电话&#xff0c;系统故障&#xff0c;然后地铁上掏出电脑&#xff0c;修bug的场景。自己负责的业务线上出现问题&#xff0c;负责人心里是很慌的&#xff0c;在这种心理状态下做事很容易二次犯错&#xff0c;造成更大的问题…...

CPU、MCU、MPU、DSP、FPGA各是什么?有什么区别?

1、CPU 中央处理器&#xff0c;简称 CPU&#xff08;Central Processing Unit&#xff09;&#xff0c;中央处理器主要包括两个部分&#xff0c;即控制器、运算器&#xff0c;其中还包括高速缓冲存储器及实现它们之间联系的数据、控制的总线。 电子计算机三大核心部件就是CPU…...

SpringBoot之logback 在Linux系统上启动的时候,设置日志按日期分割并设置指定时间自动清除日志

一、在src/main/resources/下创建logback-spring.xml文件 <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 日志存放路径 --><property name"log.path" value"/home/xmmc/logs" /><!-- 日志…...

OpenHarmony北向-让更广泛的应用开发者更容易参与

一、标准系统的体验 按照官方文档指导&#xff0c;这样操作&#xff0c;OH标准系统开发板就可以运行开发者开发的OpenHarmony应用了。 二、实际情况 按照开发文档上的说明&#xff0c;肯定是装不上的。因为OH不同的发行版&#xff0c;不同发行板不同的设备&#xff0c;IDE&…...

数据结构之归并排序及排序总结

目录 归并排序 归并排序的时间复杂度 排序的稳定性 排序总结 归并排序 归并排序大家只需要掌握其递归方法即可&#xff0c;非递归方法由于在某些特殊场景下边界难控制&#xff0c;我们一般很少使用非递归实现归并排序。那么归并排序的递归方法我们究竟是怎样实现呢&#xff…...

仿windows12网盘,私有云盘部署教程,支持多种网盘

仿windows12网盘,私有云盘部署教程&#xff0c;支持多种网盘 资源宝分享&#xff1a;www.httple.net 视频教程&#xff1a;https://www.bilibili.com/video/BV1m64y1G7Bq/ 宝塔部署方式&#xff1a; 1.验证是否安装jdk,没有安装请看安装教程 推荐安装jdk8&#xff08;注意您…...

深度学习 时间序列回归学习笔记

目录 常用的深度学习时间序列回归模型: ARIMA模型 ETS模型 效果评估...

【postgresql】ERROR: INSERT has more expressions than target columns

执行下面sql insert into apply_account_cancellation3 select * from pply_account_cancellation; 返回下面错误信息 insert into apply_account_cancellation3 select * from apply_account_cancellation > ERROR: INSERT has more expressions than target colu…...

Android Kotlin语言下的文件存储

目录 将数据存储到文件中 创建文件和保存数据 读取文件 SharedPreferences存储 存储数据到SharedPreferences中 Context类中的getSharedPreferences()方法 Activity类中的getPreferences()方法 从SharedPreferences中读取数据 SQLite数据库存储 创建数据库 调用数据…...

Verilog 入门(八)(验证)

文章目录 编写测试验证程序波形产生值序列重复模式 测试验证程序实例从文本文件中读取向量实例&#xff1a;时序检测器 测试验证程序用于测试和验证设计方法的正确性。Verilog 提供强有力的结构来说明测试验证程序。 编写测试验证程序 测试验证程序有三个主要目的&#xff1a;…...

vue3 vue-router 导航守卫 (五)

在Vue 3中&#xff0c;导航守卫仍然是一个重要的概念&#xff0c;用于在路由切换时执行一些特定的逻辑。Vue Router提供了多个导航守卫&#xff0c;包括全局守卫、路由独享守卫和组件内守卫。可以在路由切换时执行一些特定的逻辑&#xff0c;例如身份验证、权限控制、数据加载等…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...