美文网首页
阿里云部署Flask项目

阿里云部署Flask项目

作者: sunshaoping | 来源:发表于2018-10-10 09:52 被阅读0次

    一.购买阿里云服务器
    1.登录阿里云官网,购买云服务器ECS,
    此处有两种方法,一是购买云服务器ECS,费用较高,二是购买学生机(24岁以下默认学生)
    2.自行选择服务器配置(此处以学生机为例),一般选择云服务器ECS,CentOS7.3,64位。


    image.png

    3.购买成功后,进入控制台,查看服务器IP及配置


    image.png
    4.重置root账号密码
    在上述图片中点击更多,选择密码/密钥>>重置密码
    5.修改好密码,重启云服务器,然后用xshell链接服务器试试
    二.配置项目需要的环境
    1.安装python

    2.安装msyql数据库
    3.安装redis数据库
    三.Flask简单项目部署(nginx代理项目,同时需要注意服务器防火墙设置)
    1.安装nginx
    centos7系统库中默认是没有nginx的rpm包的,所以我们自己需要先更新下rpm依赖库

    命令: rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    安装: yum install nginx
    启动: systemctl start nginx
    查看状态: systemctl status nginx
    开机自启: systemctl enable nginx.service
    

    2.编写Flask项目
    新建app.py文件
    3.配置Nignx--(cd //etc/nginx/nginx.conf)(可选择配置,默认80端口)

    proxy_pass此处的启动端口一定要和项目的启动端口一致,这样才能保证项目能够被nginx代理,之前在此迷糊了好久。

        #只用nginx代理的配置
        server {
             listen          80;
             server_name     47.106.218.225;  # 阿里云公网ip
     
             location / {
                proxy_pass    http://127.0.0.1:5000;      # 本机:启动端口(此处端口与项目端口一致)      
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
         }
    

    配置完nginx重启nginx服务

    nginx -s reload
    如果出现报错:nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
    可能是nginx服务没有启动
    systemctl start nginx  # 启动nginx 
    

    4.启动项目,可以直接通过IP:http://47.106.218.225访问,nginx代理会将访问指向项目

    python app.py
    

    5.后台启动Flask项目(可先使用python启动项目测试,如果可以正常访问,就使用后台代理的方法启动)

    nohup python app.py >> app.out &   将运行日志输出到app.out文件 
    

    6.查看实时项目状态运行状态:

    tail -f app.out/tailf app.out
    

    四.Flask项目部署(使用uwsgi+nginx代理启动项目,同时需要注意服务器防火墙设置)
    1.安装uwsgi,并创建uwsgi软连接,不然报错找不到uwsgi命令

    pip install uwsgi
    ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
    

    2.配置uwsgi
    在部署项目的跟目录下新建一个配置文件uwsgiconfig.ini,添加配置内容

    [uwsgi]
    # uwsgi 启动时所使用的地址与端口
    socket = 127.0.0.1:5000(可以与项目端口不一致)
    # 指向网站目录
    chdir=/usr/local/project/demo03/clxt4.0
    # python 启动程序文件
    wsgi-file = manage.py
    # python 程序内用以启动的 application 变量名
    callable = app
    # 处理器数
    processes = 4
    # 线程数
    threads = 2
    # 缓冲区
    buffer-size = 32768
    #状态检测地址
    stats = 127.0.0.1:9191
    

    3.保存并退出

    :wq
    

    4.配置nginx(在此时配置nginx时,之前配置的单独nginx代理项目的配置代码需要隐藏,然后添加新的配置文件)

    备注此处的listen,和server_name一定要写上,之前就是因为这个导致迷糊了好久

    cd /etc/nginx/conf.d,添加代码  
    server {
             listen          80;
             server_name     47.106.218.225;  # 阿里云公网ip
    location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:5000;
            uwsgi_param UWSGI_PYHOME /path/mtenv;  #python位置,要么是虚拟机,要么是运行的环境变量位置
            uwsgi_param UWSGI_CHDIR /path/python-prj/flask-prj;  #项目根目录
            uwsgi_param UWSGI_SCRIPT manage:app;    #启动项目的主程序,如果manage.py位域flask-prj的src/flask/这样的目录下,那么就写成src/flask/manage:app这样
            #root   /usr/share/nginx/html;
            #index  index.html index.htm;
        }
    

    5.配置重启nginx服务

    nginx -s reload
    service nginx restart  # 重启nginx服务
    service nginx star # 启动服务
    service nginx stop # 停止服务 
    

    6.运行uwsgi服务(通过执行启动脚本运行项目)

    uwsgi --ini /usr/local/project/demo03/clxt4.0/uwsgiconfig.ini  (启动脚本存放位置)
    # 后台运行
    uwsgi --ini /usr/local/project/demo03/clxt4.0/config.ini --daemonize /usr/local/project/demo03/clxt4.0/manage.out
    # 停止uwsgi服务,可通过查询uwsgi进程号kill进程
    kill 进程号(不完全停止服务,服务会重启)
    kill -9 进程号(服务完全停止,需要重新启动)
    

    7.遇到问题:使用uwsgi启动项目之后一直提示是使用python2启动的?(不知怎么配置导致uwsgi使用python2的版本启动)

    # 1.查看uwsgi使用的python版本
    uwsgi --python-version
    # 2.查看uwsgi软连接指向
    cd /usr/local/python3/bin  # 切换到指定目录
    ll  # 查看所有软连接指向
    # 3.删除uwsgi软连接
    rm -rf /usr/bin/uwsgi
    # 4.重新创建链接
    ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
    # 5.再次查看uwsgi使用python版本
    uwsgi --python-version
    # 6.可以使用启动uwsgi的方法启动项目
    

    注:本文总结可能会有些乱,具体步骤总结如下:
    安装python3.6可以参考文章《linux安装python3.6》
    安装mysql服务可以参考文章《linux安装mysql》
    安装redis服务可以参考文章《阿里云Centos7安装redis》
    使用nginx代理可以从《nginx代理项目》开始实施
    安装uwsgi服务可以从《使用uwsgi+nginx代理启动flask项目》开始实施
    ps:此方法不使用于生产环境下,生产环境下应该使用Python+Gunicorn(web服务器)+nginx(正反向代理)方式部署。

    相关文章

      网友评论

          本文标题:阿里云部署Flask项目

          本文链接:https://www.haomeiwen.com/subject/dafyaftx.html