uwsgi+nginx+ubantu+supervisor部署Flask项目

本机操作

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

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

服务器操作

  1. 安装 UbantuCentOS 虚拟机
  1. 安装 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
    • 添加sshkey: 将sshkey添加在自己的github密钥中
  1. 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)进入srv文件夹, cd /srvsrv可以是另外有权限访问的文件夹

    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;

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,265评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,274评论 1 288
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,087评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,479评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,782评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,218评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,594评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,316评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,955评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,274评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,803评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,177评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,732评论 3 229
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,953评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,687评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,263评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,189评论 2 258

推荐阅读更多精彩内容