基于阿里云服务器的网站部署教程(二) — Python的Flask+uwsgi+nginx部署

本节将分享如何将python的flask框架结合uwsgi和nginx在阿里云服务器上进行生产环境的部署。这里会简单介绍一下这三者是什么,更具体的知识大家可以去查看其它博主的教程。

Flask:一种基于python的Web应用框架,通过它我们可以直接用python实现一个网站或所需的Web服务。这里结合我们后续的教程应用讲一下它的重要性。一些有AI基础的朋友们可能或多或少都用过一些深度学习框架:Tensorflow、pytorch或keras等等。但是大部分都是私底下自己电脑代码进行运行的,没有代码的其他人就无法使用。那么我们怎么将模型部署在网站或APP上使其落地供所有人使用呢?当然像Tensorflow2.0有提供像Tensorflow.js这种使用于工业部署的库,其语言基于JavaScript。个人认为其不够灵活且教程较少,不易初学者上手。所以Flask相对来说是一个更好的选择,我们可以直接利用其将python的模型或其它代码与网页部署结合,使其快速落地。相似的Web框架还有django、bottle等。

uwsgi: 一种基于uWSGI(Web服务器)的协议,用于定义传输数据的类型。简单来说在这协议里面我们要做一个转换的过程,因为前端的HTML、JavaScript等等代码和Python代码是不一样的,直接将前端代码传到python里去,python看不懂。因此我们通过uwsgi可以将Web的一些属性转换为python中对应的数据结构,使二者传输的信息可以互相读懂及接收。

Nginx:是一个HTTP和Web服务器,可加可不加。但加上的话会有一些好处,比如更易于处理负载均衡、静态资源的问题。

整个流程其实就是网页索求的信息通过http协议先发送到Nginx里,它经过处理后信息再发到uWSGI服务器里。然后uWSGI服务器再将http协议转换成uwsgi协议,让python可以直接使用。

上一节内容我们已经购买好了阿里云服务器并且可以查看系统默认部署的网站,接下来的内容是基于这个基础。如果有疑问的朋友们可以查看上一节内容。

一.配置准备部署的网站

1.创新网站。这里随便输一个域名,当然这个域名未购买未备用,我们没办法从这个域名登录。但我们可以将这个域名绑定上我们服务器公网IP地址的一个端口,就可以访问了。

2.绑定公网IP,后面随意接一个端口。但是这个端口因为阿里云服务器的防火墙阻挡,因此无法直接外网访问,我们后面还需要对防火墙进行相关设置。

3.在阿里云服务器控制台的防火墙处添加2222端口。

4.在阿里云控制台远程连接的linux后台中(用putty或mobaxterm等等的SSH连接上也可以),直接关掉防火墙(当然我为了测试省事直接暴力关掉了哈哈哈,也可以通过防火墙其它指令单独开通这个端口)。记得先输入sudo su root,有权限了才可以对防火墙进行操作。

5.测试该网站能否成功运行。

结果发现运行成功。

二.安装Python3、Flask库及建立虚拟环境

因为该环境默认的python版本是2.7,而python2目前已经不在更新,官方已经摒弃了。并且很多新的库只和python3兼容,因此我们需要将环境更换成python3。

这里需要大家掌握一些基础的linux指令,比如定位文件路径、复制、删除、等等,这一部分我就跳过,直接上代码。

1.创建python3系统文件夹。

2.安装依赖。

yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

3.Python3下载解压并安装。

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
tar -xvJf  Python-3.6.2.tar.xz
cd Python-3.6.2
./configure --prefix=/usr/local/python3
make && make install

4.创建python3软连接。

ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

5.安装虚拟环境包。

pip3 install --upgrade virtualenv

6.创建一个虚拟环境。

pip3 install --upgrade virtualenv

7.建立一个测试文件夹并启动虚拟环境安装相关库。

cd test1 
virtualenv -p python3 .env
source .env/bin/activate
pip3 install flask
deactivate  

三.撰写Flask文件代码

1.目录就在test1目录下,用vi指令建立一个test1.py文件。

四.安装和配置uwsgi

1.输入以下指令在linux上。

apt-get install python3.6-dev()
pip3 install uwsgi
find / -name uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

2.用vi指令新建一个名为uwsgi.ini的文件。并在该文件下输入以下配置内容。

[uwsgi]
chdir=/www/wwwroot/test1
home=/www/wwwroot/test1/.env
module=test1
callable=app
master=true
processes=2
chmod-socket=666
logfile-chmod=644
procname-prefix-spaced=test1
py-autoreload=1
#http=0.0.0.0:8080

vacuum=true
socket=uwsgi/uwsgi.sock
stats=uwsgi/uwsgi.status
pidfile=uwsgi/uwsgi.pid
daemonize=uwsgi/uwsgi.log

3.在该文件夹下新建一个uwsgi文件夹,并在该文件夹下新建空的uwsgi.sock/status/pid/log文件。

mkdir uwsgi
cd uwsgi
vi uwsgi.pid
vi uwsgi.sock
vi uwsgi.status
vi uwsgi.log

4.修改该网站的配置文件。将php配置注释掉,并再文件最后添加上uwsgi配置内容。

location / {
        include uwsgi_params;
        uwsgi_pass unix:/www/wwwroot/test1/uwsgi/uwsgi.sock;
}

5.uwsgi启动。

五.网站测试

1.最后我们在网站输入我们的IP地址及对应端口,发现flask里的内容成功显示出来,测试成功。

 

以上是本节的内容,谢谢大家的观看!下节会分享如何在阿里云服务器通过Flask结合HTML、CSS等静态文件部署网站。

 

你可能感兴趣的:(服务器部署,阿里云,服务器)