flask的web部署云服务器——史上最详细小白教程没有之一

准备工作:

1.阿里云  ubuntu 系统的服务器

2.安装好Xshell软件,如果不会请参照我之前的博客  

3.以及自己已经写好的flask的web工程

废话少说,进入正题:

1.首先用Xshell软件连接我们的云服务器

 

2.更新软件源

键入命令  sudo apt update 

键入命令 sudo apt upgrade  

3. 设置安全组

4. 部署 Nginx

键入命令  sudo apt-get install software-properties-common

键入命令 sudo add-apt-repository ppa:nginx/stable

 

键入命令 sudo apt-get update

键入sudo apt-get install nginx

键入命令   nginx -v 查看 nginx的版本

5.运行nginx  

键入 sudo /etc/init.d/nginx start 

在浏览器输入你的公网ip能看到 下图页面

6.安装python虚拟环境

键入 sudo apt install python-virtualenv

键入 sudo easy_install virtualenvwrapper

 创建一个目录用来存放虚拟环境 键入命令 cd .. 在键入 sudo mkdir /flask/root 在键入 cd /flask/root 

然后创建项目目录

 

在 /flask/root/demoapp 文件夹下创建虚拟环境 切换到 /flask/root/demoapp 文件夹下键入 virtualenv -p /usr/bin/python3 py3en

激活虚拟环境 键入source py3env/bin/activate

安装flask 键入pip install flask

在flask所在路径创建一个hello.py的文件(虚拟环境) 

键入 vi hello.py

在hello.py 文件中输入一下代码

from flask import Flask
app = Flask(__name__)
 
@app.route("/")
def hello():
    return "Hello World!"
 
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080)

书写完成之后,我们按ESC键,键入:wq 退出并保存

键入命令 python hello.py ,在虚拟环境中 执行flask应用

打开 浏览器 搜索 公网ip:8080,就可以看见 hello world

虽然我们已经见到Hello World!字样了,但是此时实际连接的时flask的调试服务器,不能应用在正式工作场合。我们需要使用nginx做反向代理,使用gunicorn作为WSGI。

7.修改nginx配置

为了方便管理,我们把配置文件还是放在/flask/root/demoapp目录下,然后在/etc/nginx/conf.d下做个链接。

键入  vi demoapp_nginx.conf

将下面这段代码编写进去

server {
  
listen      80;
server_name 公网地址;
charset     utf-8;
client_max_body_size 75M;

location / {
             proxy_set_header X-Fforwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header Host $host;
             proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080;
            }


 

按esc 键入:wq 保存并退出

将刚建立的配置文件使用符号链接到Nginx配置文件文件夹中,

退出虚拟环境

键入命令 sudo ln -s /flask/root/demoapp/demoapp_nginx.conf /etc/nginx/conf.d

重启Nginx: 

键入sudo /etc/init.d/nginx start

8.在虚拟环境中安装gunicorn

 

Web框架(Flask)致力于如何生成HTML代码,而Web服务器(nginx)用于处理和响应HTTP请求。Web框架和Web服务器之间的通信,需要一套双方都遵守的接口协议。WSGI协议就是用来统一这两者的接口的。
常用的WSGI容器有Gunicorn和uWSGI,但Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多,所以这里我也选择用Gunicorn作为容器。

进入虚拟环境

键入 pip install gunicorn

键入/flask/root/demoapp/py3env/bin/gunicorn -w2 hello:app -b 0.0.0.0:8080

按ctrl+c退出

9.使用supervisor守护gunicorn    

同样在虚拟环境中 键入 sudo apt-get install supervisor

键入  echo_supervisord_conf > /etc/supervisor/supervisord.conf

10.修改/etc/supervisor/supervisord.conf

修改 supervisord.conf 键入  vim  /etc/supervisor/supervisord.conf

在文件结尾添加 

[include]

files = /flask/root/demoapp/demoapp_supervisor.conf

按键盘字母 i 插入 之后退出并保存 

键入  vim /flask/root/demoapp/demoapp_supervisor.conf

将下面代码输入进去
[program:demoapp]
command=/flask/root/demoapp/py3env/bin/gunicorn -w 2 hello:app -b 0.0.0.0:8080           ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
directory=/flask/root/demoapp     ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=999                  ; the relative start priority (default 999)
autostart=true                 ; start at supervisord start (default: true)
startsecs=10                   ; # of secs prog must stay up to be running (def. 1)
startretries=10                ; max # of serial start failures when starting (default 3)
;autorestart=unexpected        ; when to restart if exited after running (def: unexpected)
;exitcodes=0,2                 ; 'expected' exit codes used with autorestart (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
;killasgroup=false             ; SIGKILL the UNIX process group (def false)
user=root                       ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
stdout_logfile=/flask/log/supervisor/supervisor.log        ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=50MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
stderr_logfile=/flask/log/supervisor/supervisor_err.log        ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=50MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A="1",B="2"       ; process environment additions (def no adds)
;serverurl=AUTO                ; override serverurl computation (childutils)

编辑完成之后退出并保存

新建supervisor.log文件 ,就新建就行,什么都不用写。 路径看好

新建 supervisor_err.log 文件同上

11.杀掉supervisord,重新启动

退出虚拟环境 到下图路径

键入pgrep -ax supervisord

键入 kill 14661

键入 supervisord -c /etc/supervisor/supervisord.conf

键入 

supervisorctl -c /etc/supervisor/supervisord.conf status demoapp

12.浏览器搜索地址 你的公网:8080 就会显示 hello world 

 

假如我的 博客有幸帮到了您,您帮忙 麻点个赞,又不花钱,想一同学习的朋友可以关注我一下。

  • 34
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
1. 登录阿里云控制台,进入ECS实例页面,选择需要部署Flask项目的实例。 2. 在实例页面中,点击左侧导航栏中的“安全组”。在安全组页面中,点击“添加安全组规则”按钮,添加一个新的安全组规则,将协议设置为“TCP”、端口设置为“5000”(Flask默认端口),并选择允许所有来源IP访问。 3. 在实例页面中,点击左侧导航栏中的“SSH密钥对”。如果你还没有创建SSH密钥对,点击“创建SSH密钥对”按钮创建一个。 4. 在Windows系统中,使用PuTTYgen生成私钥和公钥。将私钥下载到本地,将公钥复制到ECS实例的“SSH密钥对”页面中。 5. 在Windows系统中,使用PuTTY连接到ECS实例。输入实例的公网IP地址、端口号(默认为22)、用户名(默认为root),并选择刚才下载的私钥文件。 6. 在PuTTY连接成功后,输入以下命令更新系统软件包: sudo apt-get update sudo apt-get upgrade 7. 安装Python和pip: sudo apt-get install python3-pip 8. 安装Flask和其他需要的Python库: sudo pip3 install flask 9. 编写Flask项目代码,并将代码上传到ECS实例中。可以使用SFTP客户端(如FileZilla)将代码上传到ECS实例中。 10. 在ECS实例中,进入Flask代码所在的目录,运行以下命令启动Flask应用: export FLASK_APP=app.py flask run --host=0.0.0.0 11. 在浏览器中输入实例的公网IP地址和Flask应用的端口号(默认为5000),访问Flask应用。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值