Flask_项目部署Linux+uwsgi+nginx

Flask_项目部署Linux+uwsgi+nginx

一、 安装Python环境

  • 从源码编译python
  1. # 安装gcc 默认centos7.4已经安装了gcc工具,此步骤可以省略
    yum install gcc
    # 装一些依赖库,这些库都以devel为后缀
    yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel expat-devel
    
  2. 下载python3压缩包

    # https://www.python.org/downloads/release/python-363/ 有下载地址
    wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
    # 或者在windnows下下载好,拉到linux中
    
  3. 解压

    # 解压
    tar -zxvf Python-3.6.3.tgz
    # 进入到目录
    cd Python-3.6.3
    
  4. 源码安装 三步走

    # 配置
    ./configure --enable-optimizations --prefix=/usr/local/python
    # 编译
    make
    #安装
    make install
    # 可以合成一步 make && make install
    
  5. 如何执行python3

    #通过修改profile文件:
    vim /etc/profile
    export PATH="/usr/local/python/bin:$PATH"	#(注意:等号两边都不能有任何的空格) 
    #不过该文件注释也说明了,这种做法不太推荐,建议是在/etc/profile.d/目录下创建一个.sh后缀文件
    # 主要目的是方便日后维护(推荐方案)
    $ vim /etc/profile.d/py36.sh
    # 添加如下内容
    export PATH=$PATH:/usr/local/python36/bin
    保存,退出,然后运行:
    source /etc/profile
    #即可生效
    
  6. virtualenv工具的安装

# 直接使用pip3安装virtualenv即可,这样安装到的是在python36目录下的bin目录里
$ pip3 install virtualenv

二、Redis的安装及基本配置

  • 下载源码

    # 建议以root身份创建redis源码安装目录
    $ mkdir -p /root/soft-build/redis-lab
    # 下载redis源码,目前下载4.0版本
    $ wget http://download.redis.io/releases/redis-4.0.11.tar.gz
    # 解压
    $ tar -zxvf redis-4.0.11.tar.gz
    
  • 编译及安装

    cd redis-4.0.11
    # 为了可以在系统任何位置上都可以使用redis,同时也方便管理,在/usr/local内,创建redis目录
    $ mkdir -p /usr/local/redis4.0/bin
    # 进入到redis源码目录的src目录
    $ cd src
    # 拷贝编译好的可执行文件到/usr/local/redis4.0/bin目录下
    $ cp mkreleasehdr.sh /usr/local/redis4.0/bin/
    $ cp redis-benchmark /usr/local/redis4.0/bin/
    $ cp redis-check-aof /usr/local/redis4.0/bin/
    $ cp redis-check-rdb /usr/local/redis4.0/bin/
    $ cp redis-cli /usr/local/redis4.0/bin/
    $ cp redis-sentinel /usr/local/redis4.0/bin/
    $ cp redis-server /usr/local/redis4.0/bin/
    # 将/usr/local/redis4.0/bin目录配置到系统PATH路径上
    # 在/etc/profile.d/下创建一个叫redis.sh文件
    export PATH=$PATH:/usr/local/redis4.0/bin
    
  • 配置文件

  默认在源码目录下,会有一个参考配置文件redis.conf,可以在这个文件基础上进行二次修改.
  位置:
  /root/soft-build/redis-lab/redis-4.0.11/redis.conf

三、安装UWSGIF服务器

  • 利用pip安装,注意uWSGI安装时,需要系统有gcc等的C语言编译环境
pip install uwsgi
  • 商家后台服务配置(文件参考): 文件位置: 工程项目中的ini目录下cms_app.ini

    [uwsgi]
    # 所有的配置文件的路径必须为绝对路径
    
    # uwsgi服务开放的socket接口的信息
    socket = 127.0.0.1:5050
    # wsgi规范的模块的路径信息		入口文件
    wsgi-file = /webapps/whn/elm_webapps/cms_app.py		
    # application的对象名   主APP对象
    callable = cms_app		
    
    # 运行时,先进入到哪个工程目录
    chdir = /webapps/whn/elm_webapps/   # 工程目录
    
    # 虚拟环境的路径
    virtualenv = /webapps/whn/virtual/elm/		
    
    processes = 1
    threads = 1
    master = true
    # 守护进行的日志文件路径
    daemonize = /webapps/whn/logs/cms.log		# 文件必须存在
    
    • 买家前台服务配置(文件参考):文件位置: 工程项目中的ini目录下api_app.ini

      [uwsgi]
      # 所有的配置文件的路径必须为绝对路径
      
      # 服务的端口
      socket = 127.0.0.1:5080
      # wsgi规范的模块的路径信息
      wsgi-file = /webapps/whn/elm_webapps/api_app.py
      callable = api_app
      
      # 运行时,先进入到哪个工程目录
      chdir = /webapps/whn/elm_webapps/
      
      # 虚拟环境的路径
      virtualenv = /webapps/whn/virtual/elm/
      
      processes = 1
      threads = 1
      master = true
      
      daemonize = /webapps/whn/logs/api.log
      

四、Nginx服务器篇

  • Nginx安装

    • 阿里云自带了nginx的yum源,可以直接使用yum进行安装,建议还是使用root用户进行安装

      $ yum install nginx
      
  • Nginx的常用控制方式

    • nginx的启动

      $ nginx
      
    • nginx的重启

      $ nginx -s reload
      
    • nginx的配置文件测试

      $ nginx -t
      
  • Nginx的配置文件

    • nginx的配置文件采用的是主从配置的关系,即由主配置文件,然后在主配置文件内通过include包含其他子配置文件.
    • nginx的主配置文件所在位置: /etc/nginx/nginx.conf
    • nginx主配置文件main空间字段含义:
# user指定了nginx的worker进程以什么用户和组权限运行,必须改为你开发的用户和所属组
user whn webapps;			# 需要修改 例: user 用户名   组名
# worker_processes代表工人进程的数量,建议和CPU核心数一致
worker_processes auto;
# 全局错误日志文件
error_log /var/log/nginx/error.log;
# master进程的进程号存放的位置
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
# ★ 不建议修改这里的include文件,他是代表全局; ★
# ★ 建议修改http空间里的include来包含个人业务网站的配置信息. ★
  • nginx的事件空间字段含义:
events {
	# 每个工人进程的连接最大数
    worker_connections 1024;
    # 使用什么模型进行IO复用
    use epoll;
}
  • nginx的http空间字段含义:

    http {
    	# 日志打印格式
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        # 访问日志存储位置及存储内容所使用的格式
        access_log  /var/log/nginx/access.log  main;
    
    	# 打开内核文件传输的开关
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;
    
    	# 包含content-type的取值依据文件
        include             /etc/nginx/mime.types;
        # 若传输文件后缀名无效时,默认content-type的取值
        default_type        application/octet-stream;
    
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        # ★ 系统默认的子配置存储的位置,建议屏蔽后,包含自己工程目录下的文件 ★
        #include /etc/nginx/conf.d/*.conf;
        # ★ 配置自己工程项目的nginx配置文件 ★
        include /webapps/whn/elm_webapps/conf.d/*.conf;		# 放在工程目录内
    
    	# nginx官方提供的参考server配置,可以屏蔽来使自定义的虚拟服务起作用
        # server {
        #     listen       80 default_server;
        #     listen       [::]:80 default_server;
        #     server_name  _;
        #     root         /usr/share/nginx/html;
    
        # Load configuration files for the default server block.
        #     include /etc/nginx/default.d/*.conf;
    
        #    location / {
        #     }
    
        #     error_page 404 /404.html;
        #         location = /40x.html {
        #     }
    
        #     error_page 500 502 503 504 /50x.html;
        #         location = /50x.html {
        #     }
        # }
    }
    
  • Nginx的反向代理

    • nginx的虚拟服务器配置,其实就是把静态请求和动态请求通过location区分出来

    • 后台虚拟服务的参考配置:文件位置: 工程项目中的conf.d目录下cms_app.conf

      server {
      	# listen代表监听端口
          listen   80;
          # server_name代表虚拟服务器的域名
          server_name _;
      
      	# location代表一条匹配规则,当规则满足时,指定括号里的映射关系
          location /static/ {			# 静态文件  当访问静态文件时,自动到alias 指定的路径 寻找
          	# 使用alias做虚拟url和物理目录的映射关系.
              alias    /webapps/whn/elm_webapps/apps/cms_statics/; # 静态文件路径
          }
      
          location / {
          	# 加载nginx提供的uwsgi模块
              include uwsgi_params;
              # 利用uwsgi_pass访问本地socket的5050端口,进行进程间通信
              uwsgi_pass 127.0.0.1:5050; # 对应uwsgi的端口
          }
      }
      
    • API虚拟服务的参考配置:文件位置: 工程项目中的conf.d目录下api_app.conf

      server {
          listen   9801;		# 监听此端口
          server_name _;
      
          location /api/ {	# 为动态资源请求
              include uwsgi_params;
              uwsgi_pass 127.0.0.1:5080; # 与本地5080 端口进行进程间通信 对应uwsgi的端口
          }
      
          location / {
              alias   /webapps/whn/elm_webapps/apps/vue_client/; # 静态文件资源
              # 默认访问该路径时,找哪个文件作为首页文件
              index   index.html;	# 当访问跟目录时,自动响应index.html 资源
          }
      }
      

五、 启动服务注意(关闭Linux系统防火墙)

每次启动Nginx前 都必须映射两个ini文件至uwsgi服务器,否则动态内容不可访问

命令语法: uwsgi文件位置 ini文件位置

查看启动状态: netstat -tanp 使用此命令查看服务是否开启

转载于:https://my.oschina.net/u/3978509/blog/3001140

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值