从0开始搭建python项目(二:linux服务器配置Flask+uwsgi+Nginx)

我们开始配置项目环境

  • 1.安装python
  • 2.安装虚拟环境模块
  • 3.简单flask项目运行演示
  • 4.安装并配置uwsgi
  • 5.配置Nginx
  1. 安装python

    python官网
    从0开始搭建python项目(二:linux服务器配置Flask+uwsgi+Nginx)_第1张图片
    下载的包拖到服务器 然后 cd 到 python包的目录下
    解压:

    tar xvf Python-3.8.1.tar.xz
    

    安装Python所需要的依赖

    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
    	cd Python-3.8.1
    

    添加配置,执行以下命令:其中–prefix是Python的安装目录

    ./configure --prefix=/usr/python
    

    编译源码:

    make
    make install
    

    设置软链接

    ln -s /usr/python/bin/python3.8 usr/bin/python
    ln -s /usr/python/bin/pip3 usr/bin/pip
    

    配置环境变量

    vi ~/.bash_profile
    
    export PYTHON_HOME=/usr/python
    export PATH=$PYTHON_HOME/bin:$PATH
    

    从0开始搭建python项目(二:linux服务器配置Flask+uwsgi+Nginx)_第2张图片
    使配置立即生效

    source ~/.bash_profile
    

    查看配置是否生效(输出 /usr/python 即为成功)

    echo $PYTHON_HOME
    
    导出Python环境安装包
    这将会创建一个 packages.txt文件,其中包含了当前环境中所有包及各自的版本的简单列表(即pip list 所列出的包列表)
    pip freeze > packages.txt
    
    安装导入Python环境包
    pip install -r packages.txt
    
  2. 安装虚拟环境模块

    安装虚拟环境有两种 虚拟环境 和 集成虚拟环境的一个虚拟环境管理工具,可以不安 virtualenv
    我喜欢用这个管理工具,比较好用一些
    这个是安装正常版本的

    pip install virtualenv
    

    这个是虚拟环境管理工具

    #Windows
    pip install virtualenvwrapper-win
    #Windows
    pip install virtualenvwrapper
    

    如果在服务器上安装virtualenvwrapper或者其他python包报一下这种错误:

    ModuleNotFoundError: No module named '_ctypes'
    

    解决办法:

    yum install libffi-devel 
    #然后进入之前下载的python解压包中(make install)重新编译即可
    #cd python解压包下
    make install
    
    下面是一些常用操作virtualenv虚拟环境的命令
    #创建
    mkvirtualenv mydemo
    #查看所有虚拟环境
    workon
    #使用,进入虚拟环境
    workon mydemo
    #linux : 进入虚拟环境
    source /mydemo/bin/activate
    #退出当前虚拟环境
    deactivate
    #删除
    rmvirtualenv mydemo
    
  3. 简单flask项目运行演示

    项目文件
    从0开始搭建python项目(二:linux服务器配置Flask+uwsgi+Nginx)_第3张图片
    图片随便放一个命名为:2020.jpg 就好了

    贴一个简单的flask项目

    # -*- coding: utf-8 -*-
    from flask import Response, Flask
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def demo():
        return 'hello world'
    
    @app.route('/image')
    def get_image():
        imgPath = 'static/images/2020.jpg'
        mdict = {
            'jpeg': 'image/jpeg',
            'jpg': 'image/jpeg',
            'png': 'image/png',
            'gif': 'image/gif'
        }
        mime = mdict['jpg']
        with open(imgPath, 'rb') as f:
            image = f.read()
        return Response(image, mimetype=mime)
    
    
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=8000)
    

    接下来把项目文件拖到服务器上面
    我的项目目录为

    /home/flask_demo
    

    linux进入虚拟环境命令 win系统请返回步骤2

    #创建虚拟环境
    mkvirtualenv flaskdemo
    #进入虚拟环境(linux进入虚拟环境命令 win系统请返回步骤2)
    source /flaskdemo/bin/activate
    #安装flask
    pip install Flask
    #到项目根目录(/home/flask_demo)
    cd /home/flask_demo
    #运行项目
    python app.py
    

    从0开始搭建python项目(二:linux服务器配置Flask+uwsgi+Nginx)_第4张图片
    启动后 你的公网ip:8000 浏览器即可访问
    我用curl试一下
    在这里插入图片描述

    没有问题就可以退出flask了 我么接下来要用uwsgi来运行项目
  4. 安装并配置uwsgi

    首先我们先了解一下大概的流程
    1.我们不使用nginx 只使用uwsgi来启动,开放端口会暴露在外面 例如:http://47.888.88.88:8000/
    2.我们使用nginx 通过nginx反向代理uwsgi ,开放的端口给到nginx 我们就不需要加端口访问
    例如:http://47.888.88.88/
    下面开始安装

    pip install uwsgi 
    

    配置uwgi文件 我把uwsgi.ini文件放到了根目录下面

    cd /home/flask_demo
    vi uwsgi.ini
    

    uwsgi配置文件

    [uwsgi]
    module= /home/flask_demo/app.py #项目跟目录启动文件
    #http =  :8000 #这个是只用uwsgi运行项目使用的
    socket = 127.0.0.1:8000  #这个是nginx使用的要在之后的配置nginx文件中配置相同
    chdir = /home/flask_demo/  #项目跟目录
    wsgi-file = /home/flask_demo/app.py  #项目跟目录启动文件
    callable=app #app.py 中  app = Flask(__name__)  的命名
    processes=4  #uwsgi启动的进程数,可设为机器核数+1
    threads=2  #线程数
    virtualenv=/flaskdemo #虚拟环境根路径
    

    文件保存后
    运行:

    #启动uwsgi
    uwsgi --ini uwsgi.ini
    #后台启动
    uwsgi -d --ini uwsgi.ini
    #杀死所有uwsgi
    killall -9 uwsgi
    

    运行后下面即为成功
    从0开始搭建python项目(二:linux服务器配置Flask+uwsgi+Nginx)_第5张图片
    curl访问:出现下面这种情况就可以继续下一步 配置nginx了
    退出uwsgi 或者uwsgi -d --ini uwsgi.ini后台运行
    在这里插入图片描述
    从0开始搭建python项目(二:linux服务器配置Flask+uwsgi+Nginx)_第6张图片

  5. 配置Nginx

    这里有我上一篇安装Nginx链接: 从0开始搭建python项目(一:配置服务器).
    好了 开始配置nginx 马上就要完成了 !!
    我这里出现了一个情况就是有两个nginx配置文件

    #我两个文件是这么配置的
    #1第一种
    vim /usr/local/nginx/conf/nginx.conf
    #include /home/flask_demo/*.conf 添加我们自己项目里面的配置信息
    #2第二种
    vim /etc/nginx/nginx.conf
    

    第一种 wq保存退出
    从0开始搭建python项目(二:linux服务器配置Flask+uwsgi+Nginx)_第7张图片
    第二种 wq保存退出
    从0开始搭建python项目(二:linux服务器配置Flask+uwsgi+Nginx)_第8张图片
    不知道是怎么回事 有可能是我多装了一遍
    我不太清楚,没有太深究 大家注意下
    然后配置nginx文件:

    cd /home/flask_demo
    vim nginx.conf
    
    server {                                                                       
    listen 80;                   # 服务器监听端口                                                 
    server_name 47.888.88.88; # 这里写你的域名或者公网IP                                                    
    charset      utf-8;          # 编码                                                  
    client_max_body_size 75M;    # 之前写的关于GET和POST的区别,这里应该是原因之一吧                                                   
    
    location / {                                                                   
        include uwsgi_params;         # 导入uwsgi配置                                            
        uwsgi_pass 127.0.0.1:8000;    # 转发端口,需要和uwsgi配置当中的监听端口一致                                             
        uwsgi_param UWSGI_PYTHON /flaskdemo;       # Python解释器所在的路径(这里为虚拟环境)      
        uwsgi_param UWSGI_CHDIR /home/flask_demo;             # 项目根目录     
        uwsgi_param UWSGI_SCRIPT app:app;   
        # 项目的主程序 第一个app是app.py文件命名第二个app是app.py 中  app = Flask(__name__)  的命名}                                                                              
    }
    
    

    然后重启nginx

    nginx -s reload
    #如果不好用或者报错
    killall -9 nginx
    nginx
    #重启
    

    大功告成
    最后贴一个运行成功的图片 祝大家2020年新年快乐

你可能感兴趣的:(linux,服务器配置,python)