欢迎光临
我们一直在努力

尝试部署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) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《尝试部署flask到云服务器》
文章链接:https://www.456zj.com/906.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    Itís nearly impossible to find educated people about this subject, but you seem like you know what youíre talking about! Thanks

    שירותי ליווי2年前 (2022-09-06)Reply