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

来源:互联网 发布:im即时通讯源码java 编辑:程序博客网 时间:2024/06/06 20:09

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]
原创粉丝点击