美文网首页
day65-flask项目部署

day65-flask项目部署

作者: barriers | 来源:发表于2019-02-15 21:05 被阅读0次

    1.项目部署步骤

    项目部署的步骤一般为先由开发人员或测试人员自己用nohup启动的方式在服务器上试部署;以检查代码是否有异常或者部署环境是否有异常。部署后,确定功能正常后。在由运维人员用nginx服务器和uwsgi库进行正式部署。

    2开发环境或测试环境试部署

    在部署前先在根目录下新建一个home文件夹,在home文件夹下新建四个文件夹(conf(存自定义的nginx及uwsgi配置文件),env(存虚拟环境),logs(存日志文件),src(存项目及后缀为.sh的nohup启动文件))
    在开发环境或测试环境下部署一般用写的nohup脚本进行部署。
    在部署前先查看所有正在运行的网络端口,以避免这些端口冲突。
    查看所有运行的网络端口

    netstat -lntp
    

    部署时一般是将迭代后的代码上传到gitub上,然后在服务器上运行git pull或者git clone将代码下拉到服务器上。也可以用Xftp直接将代码拖到对应文件夹。

    2.1创建虚拟环境

    进入存放虚拟环境的文件夹env并在当中创建环境

    virtualenv --no-site-packages -p /usr/local/python3/bin/python3 ajenv
    

    安装txt文件中写入的库

    /home/env/ajenv/bin/pip install -r /hoem/src/aj/requirements.txt
    

    2.2写nohup启动脚本

    在写之前先在服务器上开启相应的端口(本次用8080)
    进入存放项目的src文件夹,并在其中新建一个aj_start.sh。然后写入内容

    vim aj_start.sh
    /home/env/ajenv/bin/python3 /home/src/aj/manage.py runserver -p 8080 -h 0.0.0.0
    

    写入内容后,给脚本文件修改权限才能使其启动。
    修改脚本文件权限:

    chmod -R 777 aj_start.sh
    

    2.3后台启动项目

    用nohup脚本启动项目

    nohup ./aj_start.sh &
    

    3nohup启动后到正式上线前的准备工作

    在用nohup启动文件后,由于要重新使用nginx启动文件,故要将8080端口进程结束。
    查看端口网络情况及结束8080端口

    netstat -lntp
    kill -9 pid
    

    配置etc文件夹下nginx文件夹下nginx.conf文件。
    因为要新建一个nginx文件(后缀为conf)来启动项目。所以要将新建的nginx文件添加到nginx.conf文件中。

    vim /etc/nginx/nginx.conf
    include /home/conf/*.conf;
    

    在nginx.conf文件的第37行添加include /home/conf/*.conf; 意思为将/home/conf/文件夹下的所有文件后缀为.conf的启动配置文件添加到nginx.conf文件中。

    4正式上线

    正式上线用nginx和uwsgi库联合部署

    # 安装uwsgi所需的文件,版本需与py的版本一致
    sudo apt-get install libpython3.7-dev
    # 安装uwsgi
    pip install uwsgi
    # 启动nginx
    sudo /etc/init.d/nginx start
    

    4.1配置nginx文件

    进入home文件下的conf文件夹

    cd /home/conf/
    

    注意:一个ip只能启动一个80端口;一个ip下的不同域名可以有多个80端口
    创建nginx文件

    touch ajnginx.conf
    vim ajnginx.conf
    

    配置nginx文件

    server {
        listen  8080;
        server_name 47.106.180.185;这一行写域名或者ip
        
        access_log /home/logs/ajaccess.log;
        error_log /home/logs/ajerror.log;
        
        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8099;
            
            uwsgi_param UWSGI_CHDIR /home/src/aj;
            uwsgi_param UWSGI_SCRIPT manage:app;
        }
        
    }
    

    4.2配置uwsgi文件

    创建uwsgi文件

    touch ajuwsgi.ini
    vim ajuwsgi.ini
    

    配置uwsgi文件

    [uwsgi]
    master = true
    socket = 127.0.0.1:8099
    chdir = /home/src/aj
    pythonpath = /home/env/ajenv/bin/python3
    callable = app
    logto = /home/logs/ajuwsgi.log
    

    4.3重启nginx及查看状态

    systemctl restart nginx
    systemctl status nginx
    

    查看状态可以用于查看项目被访问的状态

    4.4安装uwsgi库

    /home/env/ajenv/bin/pip install uwsgi
    

    4.5启动uwsgi(启动项目)

    /home/env/ajenv/bin/uwsgi --ini /home/conf/ajuwsgi.ini
    

    启动文件bug解决

    若运行 /home/env/ajenv/bin/uwsgi --ini /home/conf/ajuwsgi.ini时,报错/web/env/display/bin/uwsgi: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory,可用以下方法解决(原文链接:(http://www.voidcn.com/article/p-svshgwjx-qc.html)

    # 进入lib文件夹
    cd /lib
    # 查看当前文件夹下所有带有pcre的
    ls *pcre*
    # 通过文件名在跟目录下查找文件名带有libpcre.so的文件
    find / -type f -name *libpcre.so.*
    # 将其中一个带有libpcre.so的文件软链接到lib文件夹下
    ln -s /home/glzt/anaconda3/lib/libpcre.so.1.2.11 /lib/libpcre.so.1
    # 重新启动
    /web/env/display/bin/uwsgi --ini /web/conf/display.ini
    

    4.6动态查看访问日志的最后一行

     tail -f ajuwsgi.log
    

    5配置首页访问

    在manage.py文件中配置使直接访问网址加端口就能直接跳转到主页

    @app.route('/')
    def index():
        return render_template('index.html')
    

    5.1启动项目前同步数据库

    已有数据库结构更新时用结构同步(用得较多)
    数据同步:将服务器上数据同步成本地数据(一般不用)

    相关文章

      网友评论

          本文标题:day65-flask项目部署

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