在阿里云上部署flask
项目
使用python3+ubuntu+gunicorn+supervisor+nginx部署flask项目
1、将本地项目上传至阿里云。
- 通过
git
进行代码克隆 - 通过
rz
命令将项目进行本地上传。 - 本次部署的项目是
finance
,是一个股票爬虫的web版本。我将它上传至了/var/www/
目录下。
2、环境搭建
进入项目目录下,使用
virtualenv
创建环境。# 创建环境 virtualenv venv # 激活 source venv/bin/activate
安装项目需要的库。
(venv)。。。:pip install -r requements.txt
安装
gunicorn
:(venv)。。。:pip install gunicorn
3、数据库准备:
- 如果有数据库,请先将数据库及表创建出来。
4、gunicorn
测试项目。
#当前环境下。
gunicorn -w 4 -b 0.0.0.0:5003 project:app
project
是当前项目的入口文件,app
是进行run
的Flask
实例名。
这时,可以在浏览器上输入阿里云公网ip:5003
,查看项目是否已经启动。
5、supervisor进行项目管理
5.1、安装配置
因为supervisor不支持python3.X,所以需要退出python环境进行安装
sudo apt-get install supervisor
安装结束后,直接编辑配置文件。
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配置
在
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; } }
Nginx
刷新。service nginx restart/start/status/stop
等。
7、最后
在/etc/hosts
中,将ip
进行对应。
127.0.0.1 外网的ip
#将本机ip和阿里云的ip进行对应。
以上就是在阿里云部署flask项目的全过程。