Flask 系列之 部署发布

匿名 (未验证) 提交于 2019-12-02 22:11:45

  • 操作系统: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

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

 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 不适用,需要重新创建。

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

# 安装 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 的原始配置文件  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 服务,即可通过 127.0.0.1 访问我们的网站了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!