在阿里云上部署flask项目

使用python3+ubuntu+gunicorn+supervisor+nginx部署flask项目

1、将本地项目上传至阿里云。

  1. 通过git进行代码克隆
  2. 通过rz命令将项目进行本地上传。
  3. 本次部署的项目是finance,是一个股票爬虫的web版本。我将它上传至了/var/www/目录下。

2、环境搭建

  1. 进入项目目录下,使用virtualenv创建环境。

    # 创建环境
    virtualenv venv
    
    # 激活
    source venv/bin/activate
    
  2. 安装项目需要的库。

    (venv)。。。:pip install -r requements.txt
    
  3. 安装gunicorn

    (venv)。。。:pip install gunicorn
    

3、数据库准备:

  1. 如果有数据库,请先将数据库及表创建出来。

4、gunicorn测试项目。

#当前环境下。
gunicorn -w 4 -b 0.0.0.0:5003 project:app

project是当前项目的入口文件,app是进行runFlask实例名。

这时,可以在浏览器上输入阿里云公网ip:5003,查看项目是否已经启动。

5、supervisor进行项目管理

5.1、安装配置

  1. 因为supervisor不支持python3.X,所以需要退出python环境进行安装

    sudo apt-get install supervisor
    
  2. 安装结束后,直接编辑配置文件。

    vim /etc/supervisor/supervisor.conf
    

    编辑内容:
    注意:在配置中,gunicorn的日志的目录不会自动创建。请先手动将日志目录创建好。

    [program:f_app]
    #f_app是给当前这个项目起的名字
    command=/var/www/finance/venv/bin/gunicorn -w 4 -b 127.0.0.1:5001 finance:app ;
    # 执行的命令,
    directory=/var/www/finance ;
    #项目的目录
    startsecs=0 ;
    #启动时间
    stopwaitsecs=0 ;
    终止等待时间
    autostart=true ;
    #是否自动启动
    autorestart=true ;
    #是否自动重启
    
    stdout_logfile=/var/www/server/log/gunicorn.log ;
    stderr_logfile=/var/www/server/log/gunicorn.err ;
    #日志文件目录
    

5.2、测试

#执行下面这个命令,让配置文件生效
supervisord -c /etc/supervisor/supervisor.conf

#可能会出现无法链接的错误,这时执行下面的命令。
find / -name supervisor.sock
>>/run/supervisor.sock

#这时将查找到的文件链接取消掉,
unlink /run/supervisor.sock

#再次执行supervisord -c... 命令进行新的链接

这是可以使用supervisorctl进行一些启动,关闭等管理操作。

6、nginx配置

  1. supervisor.conf中,我们将项目启动在本地的5001端口。在nginx中的配置如下。

    server {
    	listen 80;
    	server_name 外网的ip;
    	location / {
                    proxy_pass http://127.0.0.1:5001;
                    #和本机启动的那个项目对应
                    proxy_set_header Host $host;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    }
    
    
  2. Nginx刷新。service nginx restart/start/status/stop等。

7、最后

/etc/hosts中,将ip进行对应。

127.0.0.1 外网的ip
#将本机ip和阿里云的ip进行对应。

以上就是在阿里云部署flask项目的全过程。

01-03 13:56