🍺基于Python的Web服务器系列相关文章编写如下🍺:
- 🎈【Web开发】Python实现Web服务器(Flask快速入门)🎈
- 🎈【Web开发】Python实现Web服务器(Flask案例测试)🎈
- 🎈【Web开发】Python实现Web服务器(Flask部署上线)🎈
- 🎈【Web开发】Python实现Web服务器(Flask+Tornado+nginx)🎈
- 🎈【Web开发】Python实现Web服务器(Ubuntu下安装Flask)🎈
- 🎈【Web开发】Python实现Web服务器(Ubuntu下打包Flask)🎈
- 🎈【Web开发】Python实现Web服务器(Ubuntu下调试Flask)🎈
- 🎈【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???
如果您需要相关功能的代码定制化开发,可以留言私信作者;
(✿◡‿◡)
感谢各位大佬童鞋们的支持!
( ´ ▽´ )ノ ( ´ ▽´)っ!!!