阿里云服务器部署flask项目(nginx+gunicorn)

阿里云服务器部署flask项目

  • 一、添加安全组
  • 二.登录服务器
  • 三、apt、pip改源
    • 1. pip改源(与Windows类似)
      • (1)查看是否已更改
      • (2)改源
      • (3)检查一下是否修改成功
    • 2.apt 改源
      • (1)查看是否已经修改
      • (2)改源
    • 3.安装pip3
  • 四.配置虚拟环境
    • 1.安装虚拟环境
      • (1)安装相关依赖
      • (2)配置环境变量
    • 2.创建python3的虚拟环境
  • 五.配置nginx反向代理服务器
    • 1.安装nginx
    • 2.修改配置文件
    • 3.启动niginx
  • 六.安装gunicorn服务器
  • 七.测试服务器
    • 1.安装flask
    • 2.创建工作目录
    • 3.编写测试程序
    • 4.启动服务
  • 八.部署flask项目

操作系统为Ubuntu16.04

一、添加安全组

添加到安全组中的端口才可以被外界访问。这里需要开放80端口和5000端口。(有的80端口可能已经默认开放,检查安全组中有没有,如果没有,添加之)

依次点击 实例ID/名称 -> 本实例安全组 ->创建安全组
按下图添加
阿里云服务器部署flask项目(nginx+gunicorn)_第1张图片

二.登录服务器

阿里云服务器部署flask项目(nginx+gunicorn)_第2张图片用户名默认为root,使用密码登录即可

三、apt、pip改源

pip、apt是Python、Ubuntu的一个包管理工具,存在国外源下载速度慢的问题(这两个源阿里服务器应该都改过了,这里确保万一,且如果以后使用虚拟机,这两个源也是必须要改的)

1. pip改源(与Windows类似)

(1)查看是否已更改

点击 视图->文件树 查看root文件夹,如果里面有一个 .pip 文件夹,.pip文件夹里有 pip.conf文件,则已经改源,跳过(2)步骤,如果没有,进行以下(2)步骤。

(2)改源

依次键入

mkdir ~/.pip
cd ~/.pip
touch pip.conf
vim pip.conf

写入以下内容

[global]
index-url=http://mirrors.cloud.aliyuncs.com/pypi/simple/

[install]
trusted-host=mirrors.cloud.aliyuncs.com

wq保存退出即可

(3)检查一下是否修改成功

键入

pip install numpy

在这里插入图片描述
可以看到pip的源已经是阿里源。注意,此时numpy可能会安装失败,暂时不用管,这里只是检查一下pip,待会会解决这个问题。

2.apt 改源

(1)查看是否已经修改

键入

apt-get update

如果显示阿里的源,如下图,则跳过(2)步骤,反之,执行(2)步骤
阿里云服务器部署flask项目(nginx+gunicorn)_第3张图片

(2)改源

找到并打开 /etc/apt/sources.list 文件
清空并写入以下内容(这里只适合Ubuntu16.04版本,其他版本的系统需写入对应版本的源)

deb http://mirrors.cloud.aliyuncs.com/ubuntu/ xenial main
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu/ xenial main
deb http://mirrors.cloud.aliyuncs.com/ubuntu/ xenial-updates main
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu/ xenial-updates main
deb http://mirrors.cloud.aliyuncs.com/ubuntu/ xenial universe
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu/ xenial universe
deb http://mirrors.cloud.aliyuncs.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu/ xenial-updates universe
deb http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security main
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security main
deb http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security universe
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security universe

保存退出即可
键入apt-get update如(1)中图所示,即改源成功。

3.安装pip3

Ubuntu中安装了两个版本的python,python2和python3,如果直接pip则调用的是python2的pip,而我们使用的是python3
依次键入

apt install python3-pip
pip3 install --upgrade pip

即可,因为我们都是使用的python3,以后安装包的时候使用pip3 install xxx即可

四.配置虚拟环境

1.安装虚拟环境

(1)安装相关依赖

在用户目录下创建.virtualenvs文件夹:

mkdir ~/.virtualenvs

pip3 安装依赖:

pip3 install virtualenv
pip3 install virtualenvwrapper

(2)配置环境变量

键入

vim ~/.bashrc

开头添加以下内容

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh

保存退出
键入

vim /usr/local/bin/virtualenvwrapper.sh

修改
第50行附近的

VIRTUALENVWRAPPER_PYTHON="$(command \which python)"

为:

VIRTUALENVWRAPPER_PYTHON="$(command \which python3)"

保存退出
键入

vim /etc/profile

在末尾添加

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv

保存退出
键入source ~/.bashrc使之生效即可

2.创建python3的虚拟环境

例如在这里创建名叫 py3_flask 的虚拟环境
键入

mkvirtualenv -p python3 py3_flask

(退出虚拟环境键入:deactivate,进入虚拟环境键入:workon py3_flask,前方出现括号即为在虚拟环境中)

自此以后的操作均为在py3_flask 虚拟环境中

五.配置nginx反向代理服务器

1.安装nginx

sudo apt-get install nginx

2.修改配置文件

键入:

vim /etc/nginx/sites-available/default

删除所有内容并写入以下内容

upstream flask {
        server 127.0.0.1:5000;
}
server {
        # 监听80端口
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # 请求转发到gunicorn服务器
                proxy_pass http://127.0.0.1:5000;
                # 请求转发到多个gunicorn服务器
                # proxy_pass http://flask;
                # 设置请求头,并将头信息传递给服务器端 
                proxy_set_header Host $host;
                # 设置请求头,传递原始请求ip给 gunicorn 服务器
                proxy_set_header X-Real-IP $remote_addr;
        }
}

保存退出

3.启动niginx

niginx的运行及停止命令为:

/etc/init.d/nginx start #启动
/etc/init.d/nginx stop  #停止

这里启动nginx,键入

/etc/init.d/nginx start

输入服务器公网IP,如果出现下面两种情况中的任何一种均为正常
阿里云服务器部署flask项目(nginx+gunicorn)_第4张图片
阿里云服务器部署flask项目(nginx+gunicorn)_第5张图片

六.安装gunicorn服务器

键入

pip3 install gunicorn

七.测试服务器

1.安装flask

pip3 install flask

2.创建工作目录

mkdir ~/flask_test
cd  ~/flask_test

3.编写测试程序

touch test.py
vim test.py

写入

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
	return "hello word"
	
if __name__ == "__main__":
	app.run()

保存退出

4.启动服务

键入

gunicorn -w 2 -b 127.0.0.1:5000 test:app

-w代表进程数
-b 代表运行的IP及端口号
test为.py文件名
app为Flask实例名

此时访问公网IP可能不能看到flask程序的运行结果,可关闭页面并重启服务器
点击管理->重启,等待服务器重启
阿里云服务器部署flask项目(nginx+gunicorn)_第6张图片
之后访问公网IP,如果出现hello world则为正常,如果出现以下结果
阿里云服务器部署flask项目(nginx+gunicorn)_第7张图片

进行以下操作:

重新登录服务器
进入虚拟环境

workon py3_flask

进入工作目录

cd flask_test

查看进程树,键入

pstree -ap|grep gunicorn

如果只有一个进程,如图
在这里插入图片描述
再次启动服务即可

gunicorn -w 2 -b 127.0.0.1:5000 test:app

如果有多个进程,如图
在这里插入图片描述
则杀死父进程,kill -9 进程号,在这里为

Kill -9 1997

等待几秒,再次键入

pstree -ap|grep gunicorn

发现只剩下一条,此时启动服务即可

gunicorn -w 2 -b 127.0.0.1:5000 test:app

浏览器访问公网IP即出现flask的运行结果
阿里云服务器部署flask项目(nginx+gunicorn)_第8张图片

八.部署flask项目

一般情况,都是在自己电脑上写好应用,然后到部署到服务器上,在这里可以使用WinSCP(之前在群里已经发过)上传文件。(安装的时候需选择页面风格,这里我选择了单个窗口,左侧本机,右侧服务器的页面,这个根据个人喜好即可)
点击新建站点
阿里云服务器部署flask项目(nginx+gunicorn)_第9张图片

主机名填写服务器公网IP,其他默认,点击登录,用户名输入root,密码输入服务器密码即可

将本机的flask文件拖到服务器工作目录

上传到工作目录后,与上述test.app的运行方式相同,在这里不再赘述

你可能感兴趣的:(服务器相关)