目录

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

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

准备工作:

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

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

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

废话少说,进入正题:

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

https://i-blog.csdnimg.cn/blog_migrate/29f26b4f6db29669bf4c162a636ffcfa.png

2.更新软件源

键入命令  sudo apt update

https://i-blog.csdnimg.cn/blog_migrate/cb2267a4ace876afc5ebb947aeaa6045.png

键入命令 sudo apt upgrade

https://i-blog.csdnimg.cn/blog_migrate/33bfd9c8a4b477369c1d99ba3a26640a.png

3. 设置安全组

https://i-blog.csdnimg.cn/blog_migrate/e6c4f97d4f0122d8fd47662f1f36d69c.png

4. 部署 Nginx

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

https://i-blog.csdnimg.cn/blog_migrate/6faa5858129b3d124ddedd29eb62c7da.png

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

https://i-blog.csdnimg.cn/blog_migrate/16c582b92d7d134c24db7ded900e793f.png

键入命令 sudo apt-get update

https://i-blog.csdnimg.cn/blog_migrate/814b8bb2d156771ac5627b380952fcff.png

键入sudo apt-get install nginx

https://i-blog.csdnimg.cn/blog_migrate/5b99ac81ecd542e98cc44a0b51b3ac9a.png

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

https://i-blog.csdnimg.cn/blog_migrate/9cc50666849b0ddcd663a55256f62320.png

5.运行nginx

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

https://i-blog.csdnimg.cn/blog_migrate/cb65a9873b7e1b800005b56873762a72.png

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

https://i-blog.csdnimg.cn/blog_migrate/8fc1b6c050498a28dc12eb79530d7c2c.png

6.安装python虚拟环境

键入 sudo apt install python-virtualenv

https://i-blog.csdnimg.cn/blog_migrate/d80cc940f2e2f5a850d5e9acc832162b.png

键入 sudo easy_install virtualenvwrapper

https://i-blog.csdnimg.cn/blog_migrate/7fce658f3d91396ae243698cb12ca2ee.png

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

https://i-blog.csdnimg.cn/blog_migrate/25ec73bf137d497aad32ffc668d53eac.png

然后创建项目目录

https://i-blog.csdnimg.cn/blog_migrate/6d8f4675fd7ebabdbb73e08376abc19e.png

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

https://i-blog.csdnimg.cn/blog_migrate/47163fd2ff90ff952066a019f99e4973.png

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

https://i-blog.csdnimg.cn/blog_migrate/c8b8e74ae8209442080eba2f1242c2d4.png

安装flask 键入pip install flask

https://i-blog.csdnimg.cn/blog_migrate/745bc033238af6be1a6c192cf2cd877c.png

在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)

https://i-blog.csdnimg.cn/blog_migrate/e17e9b139a1323dccc2a811b01567bbe.png

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

https://i-blog.csdnimg.cn/blog_migrate/d3c968583c1b727cf010a48b11c7c1b7.png

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

https://i-blog.csdnimg.cn/blog_migrate/65650995abef141259393e7b78d9accb.png

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

https://i-blog.csdnimg.cn/blog_migrate/31e57f1929f252035188610c38d1732a.png

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

7.修改nginx配置

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

键入  vi demoapp_nginx.conf

https://i-blog.csdnimg.cn/blog_migrate/474766bf0bda0012665cdff471f5765f.png

将下面这段代码编写进去

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;

}

}

https://i-blog.csdnimg.cn/blog_migrate/c532c59e2e84230d4d593726689e3987.png

按esc 键入:wq 保存并退出

https://i-blog.csdnimg.cn/blog_migrate/9d2d258a8a9dc99c3582be91051596a4.png

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

退出虚拟环境

https://i-blog.csdnimg.cn/blog_migrate/a10af2c050a4ac65ffddf53cf5c8de0d.png

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

https://i-blog.csdnimg.cn/blog_migrate/14975aaa44bb842b0773673a1273dabc.png

重启Nginx:

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

https://i-blog.csdnimg.cn/blog_migrate/5b6bc9d429cdcf7306df8a9fbc070d28.png

8.在虚拟环境中安装gunicorn

Web框架(Flask)致力于如何生成HTML代码,而Web服务器(nginx)用于处理和响应HTTP请求。Web框架和Web服务器之间的通信,需要一套双方都遵守的接口协议。WSGI协议就是用来统一这两者的接口的。

常用的WSGI容器有Gunicorn和uWSGI,但Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多,所以这里我也选择用Gunicorn作为容器。

进入虚拟环境

键入 pip install gunicorn

https://i-blog.csdnimg.cn/blog_migrate/2663c766fce874d1d78a6e3c07320be3.png

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

https://i-blog.csdnimg.cn/blog_migrate/96a01e77a92d6c2978b03737e6961638.png

按ctrl+c退出

9.使用supervisor守护gunicorn

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

https://i-blog.csdnimg.cn/blog_migrate/f018a6f21381dd09e4008fc9392655d3.png

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

https://i-blog.csdnimg.cn/blog_migrate/c9c91ee1646e79719333b98a3679b2b0.png

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

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

https://i-blog.csdnimg.cn/blog_migrate/29350482bebb41f3d38c29c03ee3b22f.png

在文件结尾添加

[include]

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

https://i-blog.csdnimg.cn/blog_migrate/67f8840e493baf8f89ff703d81f8438c.png

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

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

https://i-blog.csdnimg.cn/blog_migrate/af43c578393dafab313289541b7375df.png

将下面代码输入进去

[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文件 ,就新建就行,什么都不用写。 路径看好

https://i-blog.csdnimg.cn/blog_migrate/913d06fd1773cbe53e60e78a36de45c6.png

新建 supervisor_err.log 文件同上

https://i-blog.csdnimg.cn/blog_migrate/a305478a6b8d13c9d257b964ebf5cae3.png

11.杀掉supervisord,重新启动

退出虚拟环境 到下图路径

https://i-blog.csdnimg.cn/blog_migrate/e77a5c59debf271b2217b5d9fcfad9ed.png

键入pgrep -ax supervisord

https://i-blog.csdnimg.cn/blog_migrate/02f20ab2ab190e582602586d296c1d44.png

键入 kill 14661

https://i-blog.csdnimg.cn/blog_migrate/7a317d0d63bd98007826808a62f83d0f.png

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

https://i-blog.csdnimg.cn/blog_migrate/440edf4f2a635191b6492d2e7a9b2110.png

键入

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

https://i-blog.csdnimg.cn/blog_migrate/3f5646678692e21cd324551c548426b8.png

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

https://i-blog.csdnimg.cn/blog_migrate/cae34e5735d89a81d935af7339836643.png

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

https://i-blog.csdnimg.cn/blog_migrate/b3472589517ce01a423a685cc8c2a8e6.gif

68747470733a2f2f62:6c6f672e6373646e2e6e65742f71715f34303833313737382f:61727469636c652f64657461696c732f313034363339303736