欢迎光临
我们一直在努力

尝试部署flask到云服务器

按照书本,这里尝试使用 Gunicorn+Nginx部署flask应用。

1、云服务器登录

我这里用的是腾讯云轻量应用服务器,为了跟书本一致还特意将服务器系统重装成ubuntu。服务器准备好后使用公共ip通过putty登录。这里有一点注意,登录的用户名为ubuntu,密码需要在腾讯云上设定。用ubuntu登录成功后执行sudo passwd root来修改root的密码(所以root的密码是什么呢),修改完后用root来登录。登录后发现指示符变为#。

2、设置新用户、下载相关包、配置环境

①更新包(我这里不知道为什么没成功,显示没有权限,不懂)。

apt update apt upgrade

②创建新用户xxx并赋予sudo权限。新建用户过程中除了密码其他都可以默认跳过。然后切换到新创建的用户。

adduser xxx usermod -aG sudo xxx su xxx

③给云服务器安装python3、pip3、pipenv。

sudo apt install python3-dev python3-pip sudo -H pip3 install pipenv

④密钥……先跳过

从git克隆仓库到云服务器 。这里注意克隆时会向你索要github的用户名跟密码,密码的话并不是静态密码,而是要到github的setting->developer settings->Personal access tokens获取token密码(可以把权限全勾上),然后在ssh里输入密码的地方输入这个token密码。

cd ~ git clone .../example.git

⑤切进仓库目录,用pipenv安装虚拟环境和依赖,并激活。

cd example pipenv install pipenv shell

⑥在当目录下创建.env定义环境变量。内容为

nano .env -------.env内容------- FLASK_ENV=production FLASK_CONFIG=production 

⑦执行一些flask数据库的初始化操作(根据自己在__init__里的定义 比如flask init等等)

3、使用Gunicorn

①安装并设置临时防火墙允许8000端口。

pipenv install gunicorn sudo ufw allow 8000

②在目录下创建个wsgi.py,使gunicorn能通过这个文件执行flask程序。

wsgi.py: ----------------------------------------- import os from example import create_app app = create_app('production') 

③运行程序。

gunicorn --workers=4 --bind=0.0.0.0:8000 wsgi:app #workers代表线程数,--bind代表监听的主机地址和端口,wsgi:app为程序入口

按照书本说执行完上一步后,浏览器输入你的云服务器公网ip:8000或域名:8000应该就能看到你的flask页面了,但我始终没看到页面,也不知道哪里出了问题。

4、nginx

①安装。nginx成功安装后输入公网ip或域名就能看到Welcome to Nginx的页面。

sudo apt install nginx

②重新编写nginx默认配置文件。这里可以先备份一下default.bak文件(我实际操作没备份)。

sudo rm /etc/nginx/sites-enabled/default sudo nano /etc/nginx/sites-enabled/example ------------example配置文件内容---------------- server{ listen 80 default_server; server_name _; # 服务器有域名的话下划线可以写成域名 access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { proxy_pass http://127.0.0.1:8000; proxy_redirect off; proxy_set_header Host $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; } location /static{ #处理静态文件夹中的静态文件 alias /home/moming/bluelogtry/bluelogtry/static/; expires 30d; #设置缓存过期时间 } } 

③编写完配置文件后测试语法正确性。

sudo nginx -t

出现

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

就代表没问题了,然后重启nginx。

sudo service nginx restart

④运行Gunicorn 。然后浏览器进云服务器域名或公网ip(不需要填端口号),flash应用页面显示即告完成。

gunicorn -w 4 wsgi:app

到此为止,虽然能成功将flask应用部署到云服务器并显示在页面上,但还需要个工具来自动后台运行并管理。——Supervisor…这是接下来要学习的东西

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:尝试部署flask到云服务器
文章链接:https://www.jmwz.net/3297.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址