欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flask 系列之 部署发布

程序员文章站 2022-07-02 17:59:09
说明 操作系统:Windows 10 Python 版本:3.7x 虚拟环境管理器:virtualenv 代码编辑器:VS Code 实验目标 通过 Windows 的 WSL ,将我们的项目网站部署到 Ubuntu 16.04 上面 操作 运行环境搭建 打开 WSL,执行下述操作 安装 Pytho ......

Flask 系列之 部署发布

说明

  • 操作系统:windows 10
  • python 版本:3.7x
  • 虚拟环境管理器:virtualenv
  • 代码编辑器:vs code

实验目标

通过 windows 的 wsl,将我们的项目网站部署到 ubuntu 16.04 上面

操作

运行环境搭建

打开 wsl,执行下述操作

  • 安装 python3 pip3 以及虚拟环境管理工具 virtualenv
sudo apt-get install python3
sudo apt-get install python3-pip
pip3 install virtualenv
  • 安装并启动 mysql

安装完成之后需要进入 mysql 的 shell 中创建我们程序需要实验的的数据库 todo

略,具体可参考:flask 系列之 sqlalchemy

  • 安装并启动 nginx
# 安装并启动 nginx
sudo apt-get install nginx
sudo service nginx start

sudo service nginx stop

注:执行完毕后可尝试访问:, 看是否正常。

代码打包与上传

pip freeze > requirements.txt

cp -r /mnt/c/users/hippiezhou/desktop/flask_todolist /home/hippie/todolist

cd /home/hippie/todolist

# 创建虚拟环境
python -m virtualenv venv

# 激活虚拟环境
source venv/bin/activate

# 安装项目依赖包
pip3 install -r requirements.txt

# 测试网站是否能正常初始化和运行
flask initdb
flask admin
flask run

上传代码之前可以先将我们现有的虚拟环境对于的文件目录 venv 删除掉,因为我们之前的虚拟环境是基于 windows 创建的,在 ubuntu 不适用,需要重新创建。

使用 gunicorn

进入当前项目的虚拟环境执行下述操作

# 安装
pip install gunicorn

# 查看帮助
gunicorn -h

# 直接运行
gunicorn 运行文件名称:flask 程序实例名

# 测试运行
# -w 4 :以 4 个进程来启动
# -b 127.0.0.1:5000 :绑定到本地的 127.0.0.1:5000 来运行
# -d :以守护进程的方式运行
# --access-logfile ./logs/log :将当前访问的日志信息记录到当前目录下的 logs/log 文件中,注:logs 文件夹需要提前创建
# manage:app :manage 代表入口函数对应的文件名称;app 为 flask 对象
gunicorn -w 4 -b 127.0.0.1:5000 -d --access-logfile ./logs/log manage:app

# 查看当前运行的后台进程, 通过此方法可查询到有 5 个进程,其中一个是主进程,另外 4 个是子进程
ps  aux | grep gunicor

# 通过上述命令查看主进程的 pid 退出该后台进程
kill -9 pid

配置 nginx

# 备份 nginx 的原始配置文件
 sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak

 # 编辑我们的网站对应的配置文件
sudo vim /etc/nginx/sites-available/default

# 配置完成之后执行下述操作检查配置是否正常
sudo nginx -t

# 重启 nginx
sudo service nginx restart

nginx 的配置如下所示:

server {
        listen 80;
        server_name _; # 外部地址
 
        location / {
                proxy_pass http://127.0.0.1:5000; #此处和你gunicore的ip和端口一致
                proxy_redirect     off;
                proxy_set_header   host                 $http_host;
                proxy_set_header   x-real-ip            $remote_addr;
                proxy_set_header   x-forwarded-for      $proxy_add_x_forwarded_for;
                proxy_set_header   x-forwarded-proto    $scheme;
        }

基于最简配置原则,我们只需修改第一个 server 中的 location 结点,并且需要屏蔽掉里面的 try_files 字段即可。

此时,如果之前我们的网站已经通过 gunicorn 运行着的话,那么我们重启一下我们的 nginx 服务,即可通过 访问我们的网站了。