阿里云CentOS、Nginx、uWSGI、Flask部署简易博客

Blog地址:https://www.jiangdog.com/blog/flask-deployment

前期准备

  1. 阿里云服务器ECS
  2. 云数据库 RDS版
  3. CentOS 7.2系统
  4. 基本开发完成的Flask应用

基本环境准备

  1. 安装基本依赖并创建应用目录

    • 安装基本依赖:

      yum groupinstall "Development tools" 
      
      yum install zlib zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
      
    • 创建应用根目录:
      
      # cd /home
      
      
      # mkdir apps
      
  2. 安装Python3

    • 进入安装目录# cd /usr/local/bin
    • 下载Python3.5源码:# wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
    • 解压源码文件:# tar -xzvf Python-3.5.1.tgz
    • 进入目录并编译安装:

      
      # cd Python-3.5.1
      
      
      # ./configure prefix=/usr/local/python3
      
      
      # make && make install
      
      
    • 添加python3, pip3软连接(python3是自带pip3的,是在python3同目录下,不需要自己再重新安装):

      
      # ln -s /usr/local/python3/bin/python3 /usr/bin/python3
      
      
      # python3 -V
      
      
      
      # ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
      
      
      # pip3 list
      
      
      # pip3 install --upgrade pip
      
  3. 使用虚拟环境:

    • 安装并配置virtualenv

      
      # pip3 install virtualenv
      
      
      # vi ~/.bashrc
      
      
      # export PATH=/usr/local/python3/bin:$PATH
      
      
      # source ~/.bashrc
      
      
      # echo $PATH
      
      
      # cd /home/apps/
      
      
      # virtualenv venv --no-site-packages --python=python3
      
      
      # source venv/bin/activate
      
      
    • 中间有一步骤是将export PATH=/usr/local/python3/bin:$PATH添加到文件顶部,然后执行,添加了系统变量。
    • 进入虚拟环境, 退出虚拟环境:

      
      # source /home/apps/venv/bin/activate
      
      (venv) # deactivate
      
    • 若想删除虚拟环境,则直接将创建的虚拟环境venv对应的文件夹删掉就行了。
  4. Nginx

    • 安装Nginx:

上传应用到服务器

  1. 从Git上克隆代码:

    
    # cd /home/apps
    
    
    # git clone https://github.com/jiangdog/jiangdog_blog.git
    
    
  2. 根据requirements.txt安装第三方库:

    
    # souce ./venv/bin/activate
    
    (venv) # cd jiangdog_blog/
    (venv) # pip install -r requirements.txt
    

    requirements.txt可以通过# pip freeze requirements.txt生成。

配置服务器代理

  1. 安装并使用uWSGI:

    • 进入虚拟环境安装uWSGI:

      
      # source /home/apps/venv/bin/activate 
      
      (venv) # pip install uwsgi
      (venv) # uwsgi -h
      
    • 修改uWSGI配置文件uwsgi。

      [uwsgi]
      
      # uwsgi 启动时所使用的地址与端口
      
      socket = 127.0.0.1:8080
      
      
      # 指向网站目录
      
      chdir = /home/apps/jiangdog_blog/
      
      
      # python 启动程序文件
      
      wsgi-file = main.py
      
      
      # python 程序内用以启动的 application 变量名
      
      callable = app
      
      
      # 进程数
      
      processes = 4
      
      
      # 线程数
      
      threads = 2
    • 通过uWSGI启动。

      (venv) # uwsgi uwsgi_config.ini
  2. 安装并使用Nginx

    • 安装Nginx(也可以通过源码安装):

      
      # rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
      
      
      # yum install nginx
      
      
      # nginx -v
      
      
    • 查看并修改nginx配置文件:

      
      # nginx -t
      
      
      # cd /etc/nginx/conf.d/
      
      

      直接添加一个新的nginx_config.conf配置文件:

      server {
         listen  80;
         server_name xxx.xxx.xxx.xxx; #公网地址或域名
      
         access_log  /home/apps/jiangdog_blog/logs/access.log;
         error_log  /home/apps/jiangdog_blog/logs/error.log;
      
         location / {
             include      uwsgi_params;
             uwsgi_pass   127.0.0.1:8080;  # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
             uwsgi_param UWSGI_PYHOME /home/apps/jiangdog_blog/venv/; # 指向虚拟环境目录
             uwsgi_param UWSGI_CHDIR  /home/apps/jiangdog_blog/; # 指向网站根目录
             uwsgi_param UWSGI_SCRIPT main:app; # 指定启动程序
         }
      }
  3. 修改应用配置:

    • 修改config.py。
    • 修改main.py,将config_name改成线上环境。

      config_name = 'production'
      
  4. 启动并查看应用:

    • 启动Nginx:

      
      # nginx
      
      
    • 启动uWSGI:

      (venv) cd /home/apps/jiangdog_blog/
      (venv) # uwsgi uwsgi_config.ini
      
    • 其他(查看端口,关闭Nginx,关闭uWSGI)

      
      # netstat -ntlp
      
      
      # nginx -s -stop
      
      
      # ps -aux | grep uwsgi
      
      
      # kill -9 [pid]
      
      
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值