返回列表 发帖

CentOS8安装Flask+Apache2.4反向代理

实验中,操作系统的版本信息:
[root@centos8 ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@centos8 ~]#
[root@centos8 ~]# uname -r
4.18.0-193.el8.x86_64


Python的版本信息:
[root@centos8 ~]# python3 --version
Python 3.6.8


服务器连接公网安装第三方库(Flask):
[root@centos8 ~]# pip3 install flask -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com > 1.txt
[root@centos8 ~]#

查看安装记录:
[root@centos8 ~]# cat 1.txt
Looking in indexes: http://mirrors.aliyun.com/pypi/simple
Collecting flask
  Downloading http://mirrors.aliyun.com/pypi/packages/cd/77/59df23681f4fd19b7cbbb5e92484d46ad587554f5d490f33ef907e456132/Flask-2.0.3-py3-none-any.whl (95kB)
Collecting Werkzeug>=2.0 (from flask)
  Downloading http://mirrors.aliyun.com/pypi/packages/f4/f3/22afbdb20cc4654b10c98043414a14057cd27fdba9d4ae61cea596000ba2/Werkzeug-2.0.3-py3-none-any.whl (289kB)
Collecting Jinja2>=3.0 (from flask)
  Downloading http://mirrors.aliyun.com/pypi/packages/20/9a/e5d9ec41927401e41aea8af6d16e78b5e612bca4699d417f646a9610a076/Jinja2-3.0.3-py3-none-any.whl (133kB)
Collecting click>=7.1.2 (from flask)
  Downloading http://mirrors.aliyun.com/pypi/packages/4a/a8/0b2ced25639fb20cc1c9784de90a8c25f9504a7f18cd8b5397bd61696d7d/click-8.0.4-py3-none-any.whl (97kB)
Collecting itsdangerous>=2.0 (from flask)
  Downloading http://mirrors.aliyun.com/pypi/packages/9c/96/26f935afba9cd6140216da5add223a0c465b99d0f112b68a4ca426441019/itsdangerous-2.0.1-py3-none-any.whl
Collecting dataclasses; python_version < "3.7" (from Werkzeug>=2.0->flask)
  Downloading http://mirrors.aliyun.com/pypi/packages/fe/ca/75fac5856ab5cfa51bbbcefa250182e50441074fdc3f803f6e76451fab43/dataclasses-0.8-py3-none-any.whl
Collecting MarkupSafe>=2.0 (from Jinja2>=3.0->flask)
  Downloading http://mirrors.aliyun.com/pypi/packages/fc/d6/57f9a97e56447a1e340f8574836d3b636e2c14de304943836bd645fa9c7e/MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl
Collecting importlib-metadata; python_version < "3.8" (from click>=7.1.2->flask)
  Downloading http://mirrors.aliyun.com/pypi/packages/a0/a1/b153a0a4caf7a7e3f15c2cd56c7702e2cf3d89b1b359d1f1c5e59d68f4ce/importlib_metadata-4.8.3-py3-none-any.whl
Collecting zipp>=0.5 (from importlib-metadata; python_version < "3.8"->click>=7.1.2->flask)
  Downloading http://mirrors.aliyun.com/pypi/packages/bd/df/d4a4974a3e3957fd1c1fa3082366d7fff6e428ddb55f074bf64876f8e8ad/zipp-3.6.0-py3-none-any.whl
Collecting typing-extensions>=3.6.4; python_version < "3.8" (from importlib-metadata; python_version < "3.8"->click>=7.1.2->flask)
  Downloading http://mirrors.aliyun.com/pypi/packages/45/6b/44f7f8f1e110027cf88956b59f2fad776cca7e1704396d043f89effd3a0e/typing_extensions-4.1.1-py3-none-any.whl
Installing collected packages: dataclasses, Werkzeug, MarkupSafe, Jinja2, zipp, typing-extensions, importlib-metadata, click, itsdangerous, flask
Successfully installed Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.3 click-8.0.4 dataclasses-0.8 flask-2.0.3 importlib-metadata-4.8.3 itsdangerous-2.0.1 typing-extensions-4.1.1 zipp-3.6.0
[root@centos8 ~]#



安装成功后,列出当前环境中所有已经安装的第三方库的名称和其版本号:
[root@centos8 ~]# pip3 freeze
click==8.0.4
dataclasses==0.8
Flask==2.0.3
importlib-metadata==4.8.3
itsdangerous==2.0.1
Jinja2==3.0.3
MarkupSafe==2.0.1
typing-extensions==4.1.1
Werkzeug==2.0.3
zipp==3.6.0
[root@centos8 ~]#

注释:会附带安装一些其他的依赖软件包。


保存当前环境中所有已经安装的第三方库的名称和其版本号信息到文件a.txt:
[root@centos8 ~]# pip3 freeze > a.txt
[root@centos8 ~]#
[root@centos8 ~]# cat a.txt
click==8.0.4
dataclasses==0.8
Flask==2.0.3
importlib-metadata==4.8.3
itsdangerous==2.0.1
Jinja2==3.0.3
MarkupSafe==2.0.1
typing-extensions==4.1.1
Werkzeug==2.0.3
zipp==3.6.0
[root@centos8 ~]#



打开防火墙(firewalld)的TCP 8080端口:
[root@centos8 ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success

使规则生效:
[root@centos8 ~]# firewall-cmd --reload
success



给Flask创建一个脚本“index.py”,内容如下:
[root@centos8 ~]# cat index.py
#coding=utf-8
from flask import Flask

app = Flask(__name__)

@app.route("/")
def func1():
        return "Welcome to zhuohua! 这是我的第一个Flask网站。"
       
if __name__ == '__main__':
        app.run(host='192.168.168.154',port=8080,debug=True)

笺注:
服务器IP地址为 192.168.168.154
这里的访问端口设置为8080,即TCP 8080端口,也可以自定义为别的数字的。


脚本“index.py”运行中的效果:(组合键Ctrl+c可结束程序的执行)
python3 index.py
图片1.png
2022-3-30 19:42



客户端访问Flask网站:
http://192.168.168.154:8080/
图片2.png
2022-3-30 19:42



笺注:
一旦结束脚本的运行,客户端就无法访问Flask网站了;可以把脚本“index.py”放在后台执行,具体命令如下:
[root@centos8 ~]# nohup python3 /root/index.py &
[1] 35314
[root@centos8 ~]# nohup: 忽略输入并把输出追加到'nohup.out'


[root@centos8 ~]#


查看脚本“index.py”的进程号:
[root@centos8 ~]# ps aux | grep "index.py" |grep -v grep
root       35314  0.8  1.5 110752 28760 pts/3    S    17:25   0:00 python3 /root/index.py
root       35318  5.5  1.6 207324 29756 pts/3    Sl   17:25   0:04 /usr/local/bin/python3 /root/index.py
[root@centos8 ~]#


终止脚本“index.py”的运行:(等于终止Flask网站)
[root@centos8 ~]# kill -9 35314
[root@centos8 ~]# kill -9 35318
[1]+  已杀死               nohup python3 /root/index.py
[root@centos8 ~]#





######

Apache2.4反向代理+Flask

目的:把客户端对本机的TCP 80端口的访问,反向代理到本机的TCP 8080端口。

Apache的安装可参考: CentOS8安装LAMP+phpMyAdmin

Apache的反向代理配置:(Apache默认使用的是TCP 80端口)
[root@centos8 ~]# vi /etc/httpd/conf/httpd.conf
文件后面追加:
ProxyRequests On
ProxyPass / http://192.168.168.154:8080/
ProxyPassReverse / http://192.168.168.154:8080/

保存文件退出后,重启Apache:
[root@centos8 ~]# systemctl restart httpd

注释:
反向代理成功后,防火墙只需要打开TCP 80端口;
Flask使用的端口不得与Apache使用的端口冲突;


反向代理成功,客户端直接访问服务器的IP地址即可:(访问本机的TCP 80端口等于访问本机的TCP 8080端口)
http://192.168.168.154/
图片3.png
2022-3-30 19:45






######

Linux下卸载安装好的第三方库(Flask):
[root@centos8 ~]# pip3 uninstall flask -y
Uninstalling Flask-2.0.3:
  Successfully uninstalled Flask-2.0.3






######

把文件1.txt里的链接地址筛选出来,并写到文件2.txt:
[root@centos8 ~]# cat xx.py
#coding=utf-8

Path_1 = "./1.txt"
f_name = open(Path_1,'r')

fields_1 = f_name.readlines() #输出结果为列表,包含换行符
f_name.close()


#把最终的输出结果写入(追加)到文件2.txt;文件不存在时,会自动创建
K_1 = "Downloading" #关键字
Path_2 = r'./2.txt'

for Key_1 in fields_1:
        if K_1 in Key_1:
                Result_1 = Key_1.split()[1]
                f_name = open(Path_2,'a')
                print(Result_1,file=f_name)


脚本“xx.py”运行后的效果:
[root@centos8 ~]# python3 xx.py
[root@centos8 ~]#

可以看到文件2.txt里都是链接地址:
[root@centos8 ~]# cat 2.txt
http://mirrors.aliyun.com/pypi/packages/cd/77/59df23681f4fd19b7cbbb5e92484d46ad587554f5d490f33ef907e456132/Flask-2.0.3-py3-none-any.whl
http://mirrors.aliyun.com/pypi/packages/f4/f3/22afbdb20cc4654b10c98043414a14057cd27fdba9d4ae61cea596000ba2/Werkzeug-2.0.3-py3-none-any.whl
http://mirrors.aliyun.com/pypi/packages/20/9a/e5d9ec41927401e41aea8af6d16e78b5e612bca4699d417f646a9610a076/Jinja2-3.0.3-py3-none-any.whl
http://mirrors.aliyun.com/pypi/packages/4a/a8/0b2ced25639fb20cc1c9784de90a8c25f9504a7f18cd8b5397bd61696d7d/click-8.0.4-py3-none-any.whl
http://mirrors.aliyun.com/pypi/packages/9c/96/26f935afba9cd6140216da5add223a0c465b99d0f112b68a4ca426441019/itsdangerous-2.0.1-py3-none-any.whl
http://mirrors.aliyun.com/pypi/packages/fe/ca/75fac5856ab5cfa51bbbcefa250182e50441074fdc3f803f6e76451fab43/dataclasses-0.8-py3-none-any.whl
http://mirrors.aliyun.com/pypi/packages/fc/d6/57f9a97e56447a1e340f8574836d3b636e2c14de304943836bd645fa9c7e/MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl
http://mirrors.aliyun.com/pypi/packages/a0/a1/b153a0a4caf7a7e3f15c2cd56c7702e2cf3d89b1b359d1f1c5e59d68f4ce/importlib_metadata-4.8.3-py3-none-any.whl
http://mirrors.aliyun.com/pypi/packages/bd/df/d4a4974a3e3957fd1c1fa3082366d7fff6e428ddb55f074bf64876f8e8ad/zipp-3.6.0-py3-none-any.whl
http://mirrors.aliyun.com/pypi/packages/45/6b/44f7f8f1e110027cf88956b59f2fad776cca7e1704396d043f89effd3a0e/typing_extensions-4.1.1-py3-none-any.whl
[root@centos8 ~]#



######

根据文件2.txt里的链接地址下载文件:

服务器连接公网安装第三方库(wget):
[root@centos8 ~]# pip3 install wget -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com
Looking in indexes: http://mirrors.aliyun.com/pypi/simple
Collecting wget
  Downloading http://mirrors.aliyun.com/pypi/packages/47/6a/62e288da7bcda82b935ff0c6cfe542970f04e29c756b0e147251b2fb251f/wget-3.2.zip
Installing collected packages: wget
  Running setup.py install for wget ... done
Successfully installed wget-3.2
[root@centos8 ~]#


创建存放下载下来的文件的目录:
[root@centos8 ~]# mkdir -p /down


[root@centos8 ~]# cat yy.py
#coding=utf-8
import wget

Path_1 = "./2.txt"
f_name = open(Path_1,'r')

fields_1 = f_name.readlines()
f_name.close()


Path_2 = '/down'

for Key_1 in fields_1:
        Key_1 = Key_1.strip()
        wget.download(Key_1,Path_2)


脚本“yy.py”运行后的效果:
[root@centos8 ~]# python3 yy.py
100% [..............................................................................] 26844 / 26844
[root@centos8 ~]#


文件下载成功:
[root@centos8 ~]# du -ah /down
96K     /share/Flask-2.0.3-py3-none-any.whl
284K    /share/Werkzeug-2.0.3-py3-none-any.whl
132K    /share/Jinja2-3.0.3-py3-none-any.whl
96K     /share/click-8.0.4-py3-none-any.whl
20K     /share/itsdangerous-2.0.1-py3-none-any.whl
20K     /share/dataclasses-0.8-py3-none-any.whl
32K     /share/MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl
20K     /share/importlib_metadata-4.8.3-py3-none-any.whl
8.0K    /share/zipp-3.6.0-py3-none-any.whl
28K     /share/typing_extensions-4.1.1-py3-none-any.whl
740K    /share
[root@centos8 ~]#



当切换到一台新的服务器时,一次性安装多个已经存在的whl文件:
[root@centos8 ~]# pip3 install /down/*.whl
Processing /down/click-8.0.4-py3-none-any.whl
Processing /down/dataclasses-0.8-py3-none-any.whl
Processing /down/Flask-2.0.3-py3-none-any.whl
Processing /down/importlib_metadata-4.8.3-py3-none-any.whl
Processing /down/itsdangerous-2.0.1-py3-none-any.whl
Processing /down/Jinja2-3.0.3-py3-none-any.whl
Processing /down/MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl
Processing /down/typing_extensions-4.1.1-py3-none-any.whl
Processing /down/Werkzeug-2.0.3-py3-none-any.whl
Processing /down/zipp-3.6.0-py3-none-any.whl
Installing collected packages: zipp, typing-extensions, importlib-metadata, click, dataclasses, itsdangerous, MarkupSafe, Jinja2, Werkzeug, Flask
Successfully installed Flask-2.0.3 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.3 click-8.0.4 dataclasses-0.8 importlib-metadata-4.8.3 itsdangerous-2.0.1 typing-extensions-4.1.1 zipp-3.6.0
[root@centos8 ~]#


安装成功:
[root@centos8 ~]# pip3 freeze
click==8.0.4
dataclasses==0.8
Flask==2.0.3
importlib-metadata==4.8.3
itsdangerous==2.0.1
Jinja2==3.0.3
MarkupSafe==2.0.1
typing-extensions==4.1.1
Werkzeug==2.0.3
zipp==3.6.0
[root@centos8 ~]#





######

连接公网安装第三方库时,指定软件版本:
[root@centos8 ~]# cat a.txt
click==8.0.4
dataclasses==0.8
Flask==2.0.3
importlib-metadata==4.8.3
itsdangerous==2.0.1
Jinja2==3.0.3
MarkupSafe==2.0.1
typing-extensions==4.1.1
Werkzeug==2.0.3
zipp==3.6.0
[root@centos8 ~]#


当切换到一台新的服务器时,会重新从公网下载指定版本的第三方库:
[root@centos8 ~]# pip3 install -r a.txt -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com
Looking in indexes: http://mirrors.aliyun.com/pypi/simple
Collecting click==8.0.4 (from -r a.txt (line 1))
  Downloading http://mirrors.aliyun.com/pypi/packages/4a/a8/0b2ced25639fb20cc1c9784de90a8c25f9504a7f18cd8b5397bd61696d7d/click-8.0.4-py3-none-any.whl (97kB)
    100% |████████████████████████████████| 102kB 362kB/s
Collecting dataclasses==0.8 (from -r a.txt (line 2))
  Downloading http://mirrors.aliyun.com/pypi/packages/fe/ca/75fac5856ab5cfa51bbbcefa250182e50441074fdc3f803f6e76451fab43/dataclasses-0.8-py3-none-any.whl
Collecting Flask==2.0.3 (from -r a.txt (line 3))
  Downloading http://mirrors.aliyun.com/pypi/packages/cd/77/59df23681f4fd19b7cbbb5e92484d46ad587554f5d490f33ef907e456132/Flask-2.0.3-py3-none-any.whl (95kB)
    100% |████████████████████████████████| 102kB 490kB/s
Collecting importlib-metadata==4.8.3 (from -r a.txt (line 4))
  Downloading http://mirrors.aliyun.com/pypi/packages/a0/a1/b153a0a4caf7a7e3f15c2cd56c7702e2cf3d89b1b359d1f1c5e59d68f4ce/importlib_metadata-4.8.3-py3-none-any.whl
Collecting itsdangerous==2.0.1 (from -r a.txt (line 5))
  Downloading http://mirrors.aliyun.com/pypi/packages/9c/96/26f935afba9cd6140216da5add223a0c465b99d0f112b68a4ca426441019/itsdangerous-2.0.1-py3-none-any.whl
Collecting Jinja2==3.0.3 (from -r a.txt (line 6))
  Downloading http://mirrors.aliyun.com/pypi/packages/20/9a/e5d9ec41927401e41aea8af6d16e78b5e612bca4699d417f646a9610a076/Jinja2-3.0.3-py3-none-any.whl (133kB)
    100% |████████████████████████████████| 143kB 250kB/s
Collecting MarkupSafe==2.0.1 (from -r a.txt (line 7))
  Downloading http://mirrors.aliyun.com/pypi/packages/fc/d6/57f9a97e56447a1e340f8574836d3b636e2c14de304943836bd645fa9c7e/MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl
Collecting typing-extensions==4.1.1 (from -r a.txt (line 8))
  Downloading http://mirrors.aliyun.com/pypi/packages/45/6b/44f7f8f1e110027cf88956b59f2fad776cca7e1704396d043f89effd3a0e/typing_extensions-4.1.1-py3-none-any.whl
Collecting Werkzeug==2.0.3 (from -r a.txt (line 9))
  Downloading http://mirrors.aliyun.com/pypi/packages/f4/f3/22afbdb20cc4654b10c98043414a14057cd27fdba9d4ae61cea596000ba2/Werkzeug-2.0.3-py3-none-any.whl (289kB)
    100% |████████████████████████████████| 296kB 423kB/s
Collecting zipp==3.6.0 (from -r a.txt (line 10))
  Downloading http://mirrors.aliyun.com/pypi/packages/bd/df/d4a4974a3e3957fd1c1fa3082366d7fff6e428ddb55f074bf64876f8e8ad/zipp-3.6.0-py3-none-any.whl
Installing collected packages: typing-extensions, zipp, importlib-metadata, click, dataclasses, MarkupSafe, Jinja2, itsdangerous, Werkzeug, Flask
Successfully installed Flask-2.0.3 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.3 click-8.0.4 dataclasses-0.8 importlib-metadata-4.8.3 itsdangerous-2.0.1 typing-extensions-4.1.1 zipp-3.6.0
[root@centos8 ~]#


安装成功:
[root@centos8 ~]# pip3 freeze
click==8.0.4
dataclasses==0.8
Flask==2.0.3
importlib-metadata==4.8.3
itsdangerous==2.0.1
Jinja2==3.0.3
MarkupSafe==2.0.1
typing-extensions==4.1.1
Werkzeug==2.0.3
zipp==3.6.0
[root@centos8 ~]#





相关文章:
CentOS8_Apache2.4反向代理

CentOS8安装Django+Nginx反向代理
CentOS8使用Virtual Environment

CentOS8_在Docker中安装Flask

for循环语句
网络爬虫_爬(电影天堂)

返回列表