Python web 服务

目录

要点: Python的网络功能。

Python与网络服务

查询IP地址: $ ifconfig 看 eno1网卡的 inet 192.168.2.120 就是IP地址。

开启简单web服务

开启web服务,就可以通过浏览器直接查看图片、pdf、txt等常规文件,而无需下载。

这特别适合调试画图脚本参数:shell中修改并运行,浏览器刷新立刻预览效果。

方法1: 使用 Python 建立简单服务器。

## 在centOS + python3.6测试通过 $ python -m http.server --bind 192.168.2.120 8890 $ python -m http.server 8900 # 使用默认IP地址 ## 要在待预览图片所在目录或其父目录运行该命令; ## --bind 后面是服务器公网IP地址 和 端口号; ## IP地址可以使用ifconfig查看,也可以使用指向该IP的域名; ## 端口号一般在6000-65535之间的整数。需要服务器防火墙允许 或者 关掉防火墙。只能使用没被占用的端口。

以上代码建议在tmux中运行,这样http服务就可以常驻后台了。

运行这一行代码后,会输出一个url,打开浏览器,就可以用该url访问资源了,可以预览图片、pdf、txt等,也可用于局域网传输大文件。

方法2: 使用 js/Node 建立简单服务器。

>>点击 查看更多参数.
## node 版静态资源服务器: centOS / win10 测试通过 $ npm install -g http-server ## 安装一次即可 $ cd /your/path/ $ http-server -p 12345

方法3: 使用 docker 建立 nginx 服务器。

$ docker --version Docker version 20.10.7, build 20.10.7-0ubuntu1~20.04.1 (1) 下载镜像 $ docker pull nginx:1.21.3 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1.21.3 ad4c705f24d3 2 weeks ago 133MB (2) 写配置文件 $ cat nginx.config server { listen 80; listen [::]:80; server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; # list files autoindex on; autoindex_exact_size on; autoindex_localtime on; } } (3) 启动容器:文件映射、端口映射 $ docker run --rm -d -p 93:80 \ --mount type=bind,source=/home/wang/,target=/usr/share/nginx/html/ \ --mount type=bind,source=/home/wang/nginx.config,target=/etc/nginx/conf.d/default.conf \ nginx:1.21.3 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dddb162006ad nginx:1.21.3 "/docker-entrypoint.…" 6 seconds ago Up 4 seconds 0.0.0.0:93->80/tcp, :::93->80/tcp eager_lehmann (4) 浏览器查看 $ cat > index.html hello ctrl+C 浏览器打开 http://192.168.2.156:93/ 可见到这句话。 删掉这个文件,能看到该目录下文件列表。 (5) 关掉该服务 $ docker stop dddb

iptables开放端口访问权限

开放8787端口访问
$ sudo iptables -I INPUT -p tcp --dport 8787 -j ACCEPT

查看该端口是否开放
$ telnet x.biomooc.com 7777
如果出现 Escape character is '^]'. 一般表示开放该端口,且可以访问。

从另一台主机扫描某个端口段,查看开放的端口号
$ sudo nmap -sS -p 5000-10000 x.biomooc.com
PORT     STATE SERVICE
6666/tcp open  irc
7777/tcp open  cbt
8888/tcp open  sun-answerbook

开端口是系统资源,需要root权限或者sudo权限。



运行服务器上的 Jupyter notebook

jupyter notebook --no-browser --port 7000 --ip=192.168.2.120
# 以上代码建议在tmux中运行,这样jupyter服务就可以常驻后台了。

然后通过本地浏览器作为客户端,就可以直接使用服务器硬件和文件了。
http://192.168.2.120:7000/?token=3816b9c204abfd22c38ba70cd298c262d01ad826215beffb (注意替换IP、端口号为当前设置的值,token为每次运行自动生成的登陆凭证)

$ jupyter notebook list # 查询当前主机可用的jupyter及其token

基于python的笔记管理系统txtBlog.py

txtBlog.py(github, 简介)

[知识管理]A simple yet powerful blog system for reading and organizing txt files, based on Python3 flask framework. 支持txt, html, markdown 格式的笔记。

整体结构



对markdown的支持,自动代码行号,左下角自动生成悬浮目录。