当前位置: 首页 > 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;例如身份验证、权限控制、数据加载等…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...