【Web开发】Python实现Web服务器(Ubuntu下调试Flask)

news2024/12/26 22:25:55

在这里插入图片描述

🍺基于Python的Web服务器系列相关文章编写如下🍺:

  1. 🎈【Web开发】Python实现Web服务器(Flask快速入门)🎈
  2. 🎈【Web开发】Python实现Web服务器(Flask案例测试)🎈
  3. 🎈【Web开发】Python实现Web服务器(Flask部署上线)🎈
  4. 🎈【Web开发】Python实现Web服务器(Flask+Tornado+nginx)🎈
  5. 🎈【Web开发】Python实现Web服务器(Ubuntu下安装Flask)🎈
  6. 🎈【Web开发】Python实现Web服务器(Ubuntu下打包Flask)🎈
  7. 🎈【Web开发】Python实现Web服务器(Ubuntu下调试Flask)🎈
  8. 🎈【Web开发】Python实现Web服务器(Ubuntu下Flask使用MySQL)🎈

文章目录

  • 1、简介
  • 2、ubuntu远程访问
  • 3、ubuntu进程管理
    • 3.1 查看端口是否被占用方法
    • 3.2 top命令查看进程pid
    • 3.3 ps命令查看进程
    • 3.4 kill命令关闭进程
    • 3.5 nohup命令
  • 4、ubuntu防火墙设置
    • 4.1 查看防火墙状态
    • 4.2 开启和关闭防火墙
    • 4.3 打开或关闭某个端口
  • 5、flask测试
    • 5.1 配置python开发环境
    • 5.2 创建虚拟环境venv
    • 5.3 安装flask库
    • 5.4 测试flask入门例子
    • 5.5 测试flask图表例子(pyecharts)
  • 结语

1、简介

本文介绍在ubuntu系统中如何远程开发,防火墙设置,配置python开发环境,以及使用flask框架进行web服务器的开发。

2、ubuntu远程访问

在虚拟机VMware Workstation Pro中安装了一个Ubuntu系统。
有人反映新装的Ubuntu竟然没有默认安装ssh。

更新一下软件源:

sudo apt-get update

在这里插入图片描述
下载ssh并安装:
安装命令:sudo apt-get install openssh-server
卸载命令:sudo apt-get remove openssh-server

sudo apt-get install openssh-server

在这里插入图片描述
查看是否开启了ssh服务 (没有开始的话使用命令sudo service ssh start)

sudo service ssh start
sudo ps -e | grep ssh

在这里插入图片描述
看到sshd那说明ssh-server已经启动了。若没有则可以这样启动:sudo /etc/init.d/ssh start 或者 service ssh start。

进入Ubuntu,Ctrl+Alt+T打开终端,输入ifconfig命令查看IP情况,如下图:

ifconfig

在这里插入图片描述
首先要保证虚拟机和主机之间可以互相ping通,如果不能ping通则后续工作无法进行。
打开Putty客户端,出现以下界面,填入相关参数:
在这里插入图片描述
输入ubuntu系统的用户名和密码:
在这里插入图片描述
成功进入命令行界面:
在这里插入图片描述

putty连接Ubuntu虚拟机超时,Network error: Connection timed out?
网络能ping通,但是putty连接Ubuntu时却显示连接超时?

(1)如果仍然无法远程访问ubuntu系统,可能是ubuntu防火墙开了,关掉试试。
(2)也可以试试还原vmware的网络设置,当然ip等信息会自动变化。
在这里插入图片描述
在这里插入图片描述
点击还原默认设置即可,还原后,他的子网地址会改变,linux的ip地址也会改变。

3、ubuntu进程管理

3.1 查看端口是否被占用方法

netstat -anp |grep 40001

在这里插入图片描述

3.2 top命令查看进程pid

top

在这里插入图片描述

3.3 ps命令查看进程

相关参数整理如下:

-aux    以BSD风格显示进程 常用
-efH    以System V风格显示进程
-e , -A 显示所有进程
a         显示终端上所有用户的进程
x         显示无终端进程
u         显示详细信息
f          树状显示
w        完整显示信息
l          显示长列表
ps

在这里插入图片描述

ps aux

在这里插入图片描述

ps aux| grep pyheat

在这里插入图片描述

3.4 kill命令关闭进程

kill -9  pid    #用来强制终止指定pid进程(推荐使用此方法)
kill -9 -1      #终止你拥有的全部进程
kill -9 15494

在这里插入图片描述

pkill  firefox

在这里插入图片描述

3.5 nohup命令

nohup 命令是英语词组 no hangup 的缩写,意思是不挂断,也就是指程序不退出。这个命令会使程序忽略 HUP 信号,保证程序能够正常进行。

  • 1、nohup 是 no hang up 的缩写,就是不挂断的意思。
  • 2、nohup命令:在系统上运行一个进程的时候,不想让其在你退出账号时关闭,即可用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
  • 3、nohup在不规定的情况下,所以输出内容会到nohup.out中。
nohup python3 demo.py >/dev/null 2>&1 &

run.py为Flask项目的启动脚本,在python环境中不间断的运行run.py,并且将标准内容和错误内容输出到flask.log这个日志文件中,即请求api若出现报错信息即可通过日志定位到问题。

nohup python3 run.py >> /www/wwwroot/log/flask.log 2>&1 &
  • 2>&1的意思:
0 表示stdin标准输入,用户键盘输入的内容
1 表示stdout标准输出,输出到显示屏的内容
2 表示stderr标准错误,报错内容
2>&1是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。
  • nohup和&的区别:
    1、&才是后台运行
    2、nohup : 不挂断的运行,注意并没有后台运行的功能,,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;
    在这里插入图片描述

4、ubuntu防火墙设置

4.1 查看防火墙状态

由于LInux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw。
ubuntu 9.10默认的便是UFW防火墙,它已经支持界面操作了。在命令行运行ufw命令就可以看到提示的一系列可进行的操作。
Ubuntu20.04一般都默认安装了UFW(Uncomplicated Firewall),它是一款轻量化的工具,主要用于对输入输出的流量进行监控。
如果没有安装,请用下面的命令安装:

sudo apt install ufw

正常情况安装以后应该是默认禁止状态的,输入如下命令查看状态:

sudo ufw status verbose

在这里插入图片描述
这表示防火墙没有开启,下面启用防火墙。

sudo ufw status

在这里插入图片描述

4.2 开启和关闭防火墙

只需设置如下三条命令:

sudo apt install ufw
sudo ufw enable
sudo ufw default deny

在这里插入图片描述
sudo ufw default allow/deny:外来访问默认允许/拒绝。
sudo ufw enable/disable:打开/关闭ufw。
sudo ufw status:查看已经定义的ufw规则。
sudo ufw delete allow/deny 20:删除以前定义的"允许/拒绝访问20端口"的规则。

sudo ufw disable

在这里插入图片描述

4.3 打开或关闭某个端口

sudo ufw allow 53 允许外部访问53端口(tcp/udp)
sudo ufw allow 3690 允许外部访问3690端口(svn)
sudo ufw allow from 192.168.1.111 允许此IP访问所有的本机端口
sudo ufw allow proto tcp from 192.168.0.0/24 to any port 22  允许指定的IP段访问特定端口
sudo ufw delete allow smtp 删除上面建立的某条规则,比如删除svn端口就是 sudo ufw delete allow 3690 
sudo ufw allow 40001
sudo ufw delete allow 40001

在这里插入图片描述

5、flask测试

以 Flask 项目为例,Flask作为Web框架,它的作用主要是为了开发Web应用程序。
一个Web应用程序包含了三个部分,前端,服务端,数据库。

  • 数据库负责存储数据,作为数据存储和查询的引擎;
  • 前端网站作为用户直接查看的页面,负责展示数据。
  • Flask 负责对数据库进行操作,将数据库中的数据渲染至前端。

5.1 配置python开发环境

python

在这里插入图片描述

python3
# or
python3 -V

在这里插入图片描述
在这里插入图片描述

pip list

在这里插入图片描述

sudo apt install python3-pip

在这里插入图片描述

pip list

在这里插入图片描述

5.2 创建虚拟环境venv

# 新建测试文件夹
mkdir test
cd test

# 注意:python3 内置了venv,所以不用再pip安装virtualenv了。
# venv_demo 就是虚拟环境的名字
python -m venv venv_demo  

# 激活虚拟环境
venv_demo/Scripts/activate

在这里插入图片描述
创建虚拟环境失败,系统提示需要装工具。安装虚拟环境库venv工具。

sudo apt install python3.8-venv

在这里插入图片描述
安装成功,再继续创建虚拟环境如下:

python -m venv venv_demo  

在这里插入图片描述
激活虚拟环境如下:

source venv_demo/bin/activate

在这里插入图片描述

python
python -V
pip list

在这里插入图片描述

5.3 安装flask库

pip install flask

在这里插入图片描述
安装一步到位,安装成功如上。

5.4 测试flask入门例子

编写测试脚本demo.py如下:

  • demo.py:
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!小沐!'

if __name__ == '__main__':
    app.run()

运行命令如下:

python demo.py

在这里插入图片描述
运行结果,跨电脑无法访问。即使防火墙允许了端口5000。
在这里插入图片描述
修改测试脚本demo.py如下:

  • demo.py:
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!小沐!'

if __name__ == '__main__':
    app.run(host="0.0.0.0")

运行命令如下:

python demo.py

在这里插入图片描述
在这里插入图片描述
运行结果,跨电脑可以访问。

5.5 测试flask图表例子(pyecharts)

新建一个项目flask_pyecharts

  • (1)安装pyecharts库
pip install pyecharts

在这里插入图片描述

pip list

在这里插入图片描述

  • (2)拷贝 pyecharts 模板
    在这里插入图片描述

将链接中的以下模板
├── jupyter_lab.html
├── jupyter_notebook.html
├── macro
├── nteract.html
├── simple_chart.html
├── simple_page.html
└── table.html
全部拷贝到 tempaltes 文件夹中
https://github.com/pyecharts/pyecharts/tree/master/pyecharts/render/templates

  • (3)编写测试脚本demo_echart.py如下:
from flask import Flask
# from jinja2 import Markup
from markupsafe import Markup

from pyecharts import options as opts
from pyecharts.charts import Bar

app = Flask(__name__, static_folder="templates")


def bar_base() -> Bar:
    c = (
        Bar()
            .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
            .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
            .add_yaxis("商家B", [15, 25, 16, 55, 48, 8])
            .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
    )
    return c


@app.route("/")
def index():
    c = bar_base()
    return Markup(c.render_embed())


if __name__ == "__main__":
    app.run(host="0.0.0.0")

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

在这里插入图片描述

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

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

相关文章

工厂卖家如何借助TikTok突围?

众所周知,TikTok已然成为全球最受欢迎的社交媒体之一,拥有巨大的流量池,对于跨境电商卖家来说,TikTok也是最大的站外流量来源。作为月活跃用户接近16亿的应用程序,TikTok的发展速度让很多社交媒体平台望尘莫及&#xf…

node.js+uni计算机毕设项目基于微信小程序寸金校园租车平台(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

rabbitmq基础6——交换器和队列web监控基础运维、备份交换机、消息确认机制、消息状态查看

文章目录一、交换器和队列的使用1.1 web监控创建交换器1.1.1 交换器参数1.1.2 备份交换器1.1.2.1 工作原理1.1.2.2 弊端情形1.2 web监控创建队列1.2.1 队列参数1.2.1.1 通用参数1.2.1.2 其他参数1.2.1.2.1 所有队列1.2.1.2.2 主队列1.2.1.2.3 仲裁队列1.2.1.2.4 流队列1.3 web监…

从原理和源码梳理Springboot FatJar 的机制

一、概述 SpringBoot FatJar 的设计,打破了标准 jar 的结构,在 jar 包内携带了其所依赖的 jar 包,通过 jar 中的 main 方法创建自己的类加载器,来识别加载运行其不规范的目录下的代码和依赖。 二、标准的 jar 包结构 打开 Java…

用html实现一个静态登陆页面-可根据需求更改样式

一、创建html文件,vscode下载相关插件 我们先选择一个文件夹创建login.html,.之前的文件命无所谓,.之后就必须为html或者htm。 在编辑改文件输入!且出现提示后按回车或按tab快捷生成基础代码。 然后我们下载一个可以方便我们开发的插件。 …

【计算机网络课程设计】TCP协议包自动生成工具【蒙混过关版】

文章目录引言设计要求分工安排文献查阅总体设计流程具体设计内容🌕博客x主页:己不由心王道长🌕! 🌎文章说明:TCP协议包自动生成工具🌎 ✅系列专栏:计算机网络 🌴本篇内容&#xff1a…

Linux系统基础——系统调用

Linux系统调用 特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料,本文大部分内容和所有图片来源于这个专栏。 1 相关概念 程序vs进程vs命令: Linux系统上所有的操作由进程完成,进程的运行是动态的,在此之前是一个静态的程序。用户用一…

2年过去了,有谁还记得曾想取代Node.js的他?

大家好,我卡颂。 22年11月14日,Deno发布了v1.28,距离他第一个稳定版本v1.0.0发布(2020年5月13日)已过去2年。 作为Node.js的竞争者,Deno似乎并没有达到取代前者的目标。 甚至,他在前端社区的…

离散数学数理逻辑部分【1】

前言 本文创作的起因是,经历了离散数学的学习,深感学习离散之艰辛。所以产生了写一些内容帮助大家期末复习。虽然在csdn发表本文,有些不太合适,但是还是相信本文的质量和内容,可以给正在学习离散数学的大学生提供一些…

【数据结构】—— 队列(有序队列及环形队列的数组实现)

目录 队列的一个使用场景 什么是队列? 数组模拟队列 实现思路: 编写一个ArrayQueue类的代码实现过程 判断队列是否满和空 入队出队 显示队列数据 问题 用数组模拟队列你会发现使用一次之后就不能使用了 ,没有达到复用的效果。 数组…

yolov5s融合SPD-Conv用于提升小目标和低分辨率图像检测性能实践五子棋检测识别

今天刚发表的一篇论文提出来了针对小目标和低分辨率图像检测性能提升的技术SPD-Conv,感觉还是挺有意义的,今天主要是基于这项技术融合进yolov5s模型中来开发对应的目标检测模型,实现五子棋的检测,本身五子棋就是比较密集的小目标检…

RV1126笔记十五:吸烟行为检测及部署<二>

若该文为原创文章,转载请注明原文出处。 PC下yolov5环境搭建 我使用的训练环境是Windows10+MiniConda 接下来记录搭建全过程 备注:条件允许就使用ubuntu物理机,最好要有显卡,训练有显卡速度会快很多,没有显卡,训练300轮,亲测大概40小时,不值得。 一、miniconda 安装…

Linux常用操作(上)

目录 快捷键 设置别名 通配符 重定向 进阶查找 打包压缩 压缩(gz) 压缩(zip) 快捷键 设置别名 通配符 重定向 进阶查找 打包压缩 压缩(gz) touch {0..10}.txt tar -cvf my.tar [0-10].txt tar -…

2022圣诞代码合集(圣诞树+圣诞老人)

文章目录前言使用方法圣诞树圣诞老人前言 圣诞节里的喜悦,飘扬万里;圣诞树上的星星,璀璨耀眼;圣诞星空绽放的烟花,迎来吉祥;圣诞钟声奏响的旋律,传递欢乐;圣诞老人送给你的礼物&…

实现安卓PWM-LED设备驱动:不写一行代码

文章目录一、前言二、系列文章三、准备工作3.1 查找PWM引脚3.2 原理图:确认引脚位置3.3 PWM Controller四、查阅PWM bindings五、编写设备树节点5.1 实现节点:pwm-leds5.2 测试命令六、后语一、前言 在完成了基于GPIO的LED设备驱动的文章后,…

软件定义网络SDN(计算机网络-网络层)

目录 软件定义网络SDN 数据平面和控制平面 SDN 最重要的三个特征 控制平面与数据平面分离 SDN 的数据平面 软件定义网络SDN SDN的本质特点是控制平面和数据平面的分离以及网络的可编程性,从而实现了网络流量的灵活控制,方便用户管理和配置网络以及部…

2022(一等奖)B1014基于深度学习与街景图像的城市色彩感知与分析——以深圳市罗湖区为例

小组编号:B1014(一等奖) 作品名称:基于深度学习与街景图像的城市色彩感知与分析——以深圳罗湖区为例 作者单位:深圳大学建筑与城市规划学院 小组成员:吴若楠,曾绿,廖童欣,李丁一祺 指导老师:涂伟 作品视频 ,时长14:53 作品介绍 1 应用背景 城市色彩是指城市外部空…

云服务器安装Tomcat并设置域名解析

文章目录一、操作环境二、安装Tomcat服务器1.上传并解压压缩包2.配置Java环境3.启动Tomcat服务三、设置域名解析一、操作环境 操作系统版本:Ubuntu 20.04 64位 jdk版本:jdk-8u211-linux-x64(版本尽量不要太高) Tomcat版本&#x…

SpringFrameWork最基本框架场景及其原理

Hook扩展点 Hook钩子是一种编程思想,也是监听者模式的一种实现。在控制中心的执行过程(可理解也模板方法)中,会调用分阶段或者分层次来调用用户注册进来的Hook方法,用来修改或者监听控制中心的逻辑。如果需要将控制中心的内容暴露出来&#…

node.js+uni计算机毕设项目二手物品交易论坛小程序(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…