Flask项目部署文档(ubantu+nginx+uwsgi+supervisor)

本文详细介绍了如何在Ubuntu服务器上部署Flask应用,包括本地项目导出、服务器环境配置、Nginx、uWSGI和Supervisor的安装与配置,以及启动服务、IP绑定域名等步骤。确保遵循每个步骤,即可成功部署Flask应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本机操作

  1. 首先进入项目文件夹,使用命令 pip freeze > requirements.txt 导出 requirements.txt

  2. 然后执行命令git push origin master将自己的项目提交到 git

服务器操作

  1. 安装 UbantuCentOS 虚拟机

  2. 安装 xshell ,安装完成后输入虚拟机 ipport 、用户名、密码来连接虚拟机,连接成功后就可以在xshell 上操作服务器

推荐使用root用户操作服务器,在xshell输入su,然后输入密码进入root权限

如果没有设置root密码,则可以按如下操作设置root密码:

第一步:sudo passwd

第二步:输入密码

第三步:确认密码

  1. 安装 python3apt install python3
  2. 安装 gitsudo apt install git

    • 生成sshkey: sudo ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
    • 查看sshkey: sudo cat ~/.ssh/id_rsa.pub
  3. su账户下安装 virtualenvvirtualenvwrapper,执行pip3 install virtualenvwrapper即可

注:安装完成后需要设置环境变量,不然无法识别命令。

1)首先安装vimsudo apt install vim

2)输入 vim ~/.bashrc进入编辑,按 ↓ 至底部,输入i进入编辑模式,输入以下两行代码:

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

输入完成后,按ESC,然后输入:wq保存并退出,然后执行source ~/.bashrc激活

  1. 创建虚拟环境,mkvirtualenv -p "/usr/bin/python3" flask-py3flask-py3是虚拟环境名称,可随意取名但不可重复,-p "/usr/bin/python3"是指定python版本为py3,这个py3的路径通过which python3命令获取

  2. 安装mysql

    sudo apt install mysql-server mysql-client

    sudo apt install libmysqld-dev

  3. 设置项目

    1)进入项目文件夹, cd /srv,项目文件一定要在srv文件夹之下

    2)新建项目文件夹 mkdir Buggg

    3)进入Buggg文件夹,并初始化为git文件夹,

    cd Buggg

    git init

    4)与远程仓库连接

    git remote add origin git@gitee.com:slowchen/Buggg.git

    ​ 备注:如果报错ssh: Could not resolve hostname gitee.com: Name or service not known,则执行以下操作:

    ​ ①ping gitee.com
    ​ 获取到github.comip116.211.167.14
    ​ ②在/ etc/hosts中添加一行如下:
    116.211.167.14 gitee.com

    5)拉取仓库代码

    git pull origin master

    ​ 输入自己的用户名和密码即可拉取

    6)进入虚拟环境

    workon flask-py3

    7)安装python package

    pip3 install -r requirements.txt

    8)进入数据库,并创建

    mysql -uroot -p,输入密码,进入数据库

    create database buggg charset utf8,注意此处的buggg与项目config.py里面的database应该一 致

    9)进入项目文件夹,迁移数据库

    python3 manage.py db init

    python3 manage.py db migrate

    python3 manage.py db upgrade

    ​ 迁移完成后,可以进入数据库查看是否迁移成功

    mysql -uroot -p

    use buggg

    show tables

    10)启动服务

    ​ ①设置运行的host'0.0.0.0',否则无法访问

    ​ ②进入项目文件夹,直接运行主app文件

    python3 app.py

    ​ ③进入项目文件夹,使用flask_script运行

    ​ 在manage.py中添加 manager.add_command('runserver', Server(host='0.0.0.0'))

    ​ 再运行python3 manage.py runserver即可启动服务

    11)本机访问

    ​ 本机访问虚拟机ip+port即可访问,port未改变则为5000,例如http://192.168.40.128:5000

nginx

安装: sudo apt-get install nginx
启动:sudo service nginx start
重启:sudo service nginx restart
停止:sudo service nginx stop
测试:sudo service nginx configtest

/etc/nginx/conf.d编写生成并配置文件buggg.conf

生成: touch buggg.conf

配置:

upstream buggg {
server unix:///srv/Buggg/buggg.sock; #项目目录下的sock文件
}

server{
        listen 80;
        server_name 192.168.1.104; #虚拟机ip
        charset utf-8;
        client_max_body_size 75M;

        location / {
                uwsgi_pass buggg; #对应第一行的 upstream
                include /etc/nginx/uwsgi_params;
        }
}

uwsgi

安装:sudo pip install uwsgi,注意不要安装在虚拟环境中,要安装在系统里面。

启动flask项目:uwsgi --http :5000 --wsgi-file /srv/Buggg/Buggg.py --callable app -H /root/.virtualenvs/buggg-env-py3

在项目文件夹,创建配置文件buggg_uwsgi.ini

[uwsgi]
chdir = /srv/Buggg      #项目文件夹地址
home = /root/.virtualenvs/buggg-env-py3         #虚拟环境
module = Buggg          #项目文件夹名称
master = true
processes = 10
wsgi-file = /srv/Buggg/Buggg.py         #项目主程序
callable = app      #主程序app名称
socket = /srv/Buggg/buggg.sock   #此处的socket应与buggg.conf中的upstream一致
chmod-socket = 666

使用配置文件启动flask项目

进入项目文件夹,执行uwsgi --ini buggg_uwsgi.ini

同时启动nginxuwsgi,然后在浏览器输入虚拟机ip即可访问项目

supervisor

  • 安装

    pip install supervisor,使用python2,安装在系统python

  • 启动

    supervisord -c supervisor.conf

  • 配置

    • 在项目文件夹下新建supervisor.conf

    • 填写如下配置

    
    # 项目名称
    
    [program:Buggg]
    
    # supervisor执行的命令
    
    command=uwsgi --ini /srv/Buggg/buggg_uwsgi.ini
    
    # 项目的目录
    
    directory = /srv/Buggg
    
    # 开始的时候等待多少秒
    
    startsecs=0
    
    # 停止的时候等待多少秒
    
    stopwaitsecs=0
    autostart=true
    
    # 程序挂了后自动重启
    
    autorestart=true
    
    # 输出的log文件
    
    stdout_logfile=/srv/Buggg/log/supervisord.log
    
    # 输出的错误文件
    
    stderr_logfile=/srv/Buggg/log/supervisord.err
    
    [supervisord]
    
    # log的级别
    
    loglevel=info
    
    
    # 使用supervisorctl的配置
    
    [supervisorctl]
    
    # 使用supervisorctl登录的地址和端口号
    
    serverurl = http://127.0.0.1:9001
    
    
    # 登录supervisorctl的用户名和密码
    
    username = admin
    password = admin
    
    [inet_http_server]
    
    # supervisor的服务器
    
    port = :9001
    
    # 用户名和密码
    
    username = admin
    password = admin
    
    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

    * 注:填写配置文件时,千万注意不要在配置后面添加注释,如需注释应该换行

    • 其他

    • 如果报错另外程序在运行中,可执行sudo killall supervisord杀掉进程,然后重新启动

    • 可在浏览器中打开虚拟机ip+ 配置文件中填写的port(例如http://192.168.1.104:9001),输入用户名 + 密码(admin:admin)来管理进程

启动

supervisord -c supervisor.conf启动supervisor

service nginx start启动nginx

在浏览器输入虚拟机ip,即可打开网站。

ip 绑定域名

在域名控制台解析到服务器 ip 后,编辑/etc/nginx/conf.d/buggg.conf,在 server_name 里面添加域名,例如

server_name 118.89.24.114 www.bug-gg.com www.bug-gg.xyz bug-gg.com bug-gg.xyz;

然后在浏览器输入域名即可访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值