个人项目需要。前端准备使用Vue框架,相关的API接口准备在同服务器使用Python和Flask来制作。下面是环境搭建过程。特此记录。
先是Python3的安装吧。因为主机用到了宝塔面板,安装过程我也留意到它有使用python.所以一般用的默认的系统自带的python2,所以这里要避免影响主机面板。只做python3的安装,不替换默认的python软链接。
下载相关源码到本地,并解压缩:
wget -O Python-3.7.4.tgz https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz tar -xzvf Python-3.7.4.tgz
将python3.7安装到之前创建的目录
cd Python-3.7.4/ # mkdir /usr/local/python37 ./configure --prefix=/usr/local/python37 make && make install
创建软链接方便之后使用
ln -s /usr/local/python37/bin/python3.7 /usr/bin/python3 ln -s /usr/local/python37/bin/python3.7 /usr/bin/python37 [root@vultr Python-3.7.4]# python3 Python 3.7.4 (default, Sep 24 2019, 12:34:28) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
至此Python3.7已经顺利安装完毕,接着是安装虚拟环境
关于虚拟环境,这里要特别说明一下。其实虚拟环境工具有多个。比如常见的 virtualenv ,此外自python3.3版起,它也直接自带了一个虚拟环境venv, 因为这里我用的是python3.7,所以可以直接使用venv, 也可以另外安装virtualenv, 如果你使用的是python2,那么就需要再安装virtualenv了(pip install virtualenv). 这里我喜欢新鲜的东西,所以我决定直接用venv (有没有坑另说)
cd /root python3 -m venv myAPI source myAPI/bin/activate (myAPI) [root@vultr ~]#
验证一下版本和pip的路径
(myAPI) [root@vultr ~]# python -V Python 3.7.4 (myAPI) [root@vultr ~]# pip -V pip 19.0.3 from /root/myAPI/lib/python3.7/site-packages/pip (python 3.7) (myAPI) [root@vultr ~]#
好了,放心了,可以开始使用pip安装需要的包了。第一个就是Flask喽
pip install flask
可以查看并将相关的依赖保存到 requirement.txt
(myAPI) [root@vultr ~]# pip freeze Click==7.0 Flask==1.1.1 itsdangerous==1.1.0 Jinja2==2.10.1 MarkupSafe==1.1.1 Werkzeug==0.16.0 (myAPI) [root@vultr ~]# pip freeze > requirements.txt (myAPI) [root@vultr ~]#
后面如果有比较多的依赖包,我们也可以直接编辑requirements.txt ,然后使用 pip install -r requirements.txt 直接进行安装。这里主要先演示一下API成功与否。一个Flask已经够了,如果要进行数据库连接,还可以再安装pymysql等等模块。
新建一个api.py 文件,内容如下:
from flask import Flask app = Flask(__name__) @app.route('/ping') def index(): return "pong"
还记得之前安装的Flask吗?它是最新的1.1.1版本。根据最新的文档: 点这里
没办法,我就是这样,喜欢给你看最新的。
(myAPI) [root@vultr ~]# vi api.py (myAPI) [root@vultr ~]# export FLASK_APP=api (myAPI) [root@vultr ~]# flask run * Serving Flask app "api" * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
至此,API已经搭建完毕 访问 http://127.0.0.1:5000/ping 即可得到一个pong的回应。
[root@vultr ~]# curl http://127.0.0.1:5000/ping pong[root@vultr ~]#
但是这样是默认本地端口。如果要从外部访问的话,flask run时 要指定host
(myAPI) [root@vultr ~]# flask run --host=0.0.0.0
我使用的VPS安装的是CentOS7,默认使用了防火墙,需要打开端口。
[root@vultr ~]# firewall-cmd --permanent --zone=public --add-port=5000/tcp success [root@vultr ~]# firewall-cmd --reload success
从公网访问成功:
直接使用Flask自带的Web服务器未免太LOW了. 安装
pip install gunicorn
gunicorn -w 4 -b 127.0.0.1:5000 api:app
-w 4
是指预定义的工作进程数为4,-b 127.0.0.1:5000
指绑定地址和端口- api是flask的启动python文件,app则是flask应用程序实例
转载请注明:Linc Hu » 用Python3 + Flask 制作API接口