• python flask项目linux的部署以及本地js的跨域访问


    本文章是linux机器可以联网的情况下,安装python环境,以及部署flask项目的详细步骤。

    如果已经安装过python环境,此步骤可以忽略

    python环境的安装步骤:

    1.linux环境下默认的python版本是2.7 ,如图所示本人的linux系统版本。

     2.下载安装python环境需要的压缩包,我安装的是python3.7.3,如果你想安装其他的版本,可以修改相应的数字

    举例:3.7.3/Python-3.7.3.tgz---》3.8.3/Python-3.8.3.tgz
    wget --no-check-certificate https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

    3.解压安装

    cd /usr/local
    mkdir python3
    tar -zxvf ./Python-3.7.3.tgz -C /usr/local/python3

    4.安装到指定的目录,然后构建安装

    cd /usr/local/python3/Python-3.7.3
    ./configure --prefix=/usr/local/python3    # 将python3安装在这个目录
    make
    make install

    5.执行make install 安装的时候,有时候报出这样的错误

     解决办法:

    yum install libffi-devel -y                #安装libbffi-devel软件包
    ./configure --prefix=/usr/local/python3    # 将python3安装在这个目录
    make
    make install

    问题原因:

    Python3中有个内置模块叫ctypes,它是Python3的外部函数库模块,它提供兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用CentOS7系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库)。
    由于在CentOS7系统中没有安装外部函数库(libffi)的开发链接库软件包,所以在安装pip的时候就报了"ModuleNotFoundError: No module named '_ctypes'"的错误。

    6.重新执行完上面的命令之后出现,代表成功

     7.接下来,还需要配置环境变量

    vi ~/.bash_profile
    添加以下代码:
    export PYTHON_HOME=/usr/local/python3
    export PATH=$PYTHON_HOME/bin:$PATH

    8.执行命令,使配置文件添加的代码生效

    source ~/.bash_profile

    9.执行python3 -V,pip3 list 出现,证明python环境安装成功

     安装flask环境:

    nginx的安装:

    1.首先安装nginx,下载并且解压

    wget -c https://nginx.org/download/nginx-1.19.9.tar.gz 
    tar -zxvf nginx-1.19.9.tar.gz -C /usr/local
    cd /usr/local
    mkdir nginx
    cd nginx-1.19.9
    ./configure --prefix=/usr/local/nginx
    make&&make install

    2.测试nginx是否安装成功

     3.nginx安装成功的标志

     4.nginx的热加载,如果修改了配置文件,可以通过下面这个命令进行热加载

    ./sbin/nginx -s reload

    5.结束nginx进程的方法

    强制停止:kill -9 nginx master 进程和work进程

    批量停止:pkill nginx

    uwsgi的安装:

    1.安装命令

    pip3 install uwsgi

    flask的安装:

    1.安装命令

    pip3 install flask

    重要:修改nginx的配置文件nginx.conf

    server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            access_log /root/script/flask.log;
            error_log /root/script/flaskError.log;
            location /{
                    include /usr/local/nginx/conf/uwsgi_params;   # 导入uwsgi配置
                    uwsgi_pass 127.0.0.1:5555;   # 转发端口,需要和uwsgi配置当中的监听端口一致
    
                    uwsgi_param UWSGI_PYTHON /usr/local/python3/bin/python3;   # Python解释器所在的路径,如果有虚拟环境可将路径设置为虚拟环境
                    uwsgi_param UWSGI_CHDIR /root/myproject;                   # 项目根目录
                    uwsgi_param UWSGI_SCRIPT app:app;                          # 项目的主程序,比如你测试用app.py文件,文件中app = Flask(__name__),那么这里就填app:app
    
    
            }
           # location / {
            #    root   html;
             #   index  index.html index.htm;
            #}

    uWSGI 配置:

    mkdir script
    vim uwsgi.ini

     上传你的python测试代码:

    mkdir myproject

    代码测试内容:

    from flask import Flask, request, jsonify
    from flask import render_template
    app = Flask(__name__)
    
    
    @app.route('/')
    def hello_world():
        return "hello world"
    if __name__ == '__main__':
        app.run()

    到现在为止,所有的安装工作已经准备就绪,接下来 启动服务

    1.启动nginx

     2.启动uwsgi,前台启动

     但是不建议前台启动,建议后台启动

    uwsgi -d --ini uwsgi.ini

     3.访问linux的ip,结果返回的值

     批量停止nginx和uwsgi

    pkill -9 uwsgi
    pkill nginx

    注意可能会出现的错误:跨域问题:

    https://blog.csdn.net/whatday/article/details/106298170/

  • 相关阅读:
    git gui 学习
    Java中关于 ArrayList 和 Map 的常用遍历方法 (学习笔记,便于以后查询)
    关于对 NUMA 理解(学习笔记,便于以后查阅)
    Java判断数据库表是否存在的方法
    流程开发Activiti 与SpringMVC整合实例
    shiro权限管理框架与springmvc整合
    Java开发中的23种设计模式详解(转)
    JMS学习之路(一):整合activeMQ到SpringMVC
    SpringMVC中定时任务配置
    RPC远程过程调用学习之路(一):用最原始代码还原PRC框架
  • 原文地址:https://www.cnblogs.com/yyfyl/p/15039032.html
Copyright © 2020-2023  润新知