centos7部署flask项目

字数 648阅读 480

centos7部署flask项目

1、更新服务器环境:

#依次执行
yum -y update
yum install gcc
yum -y install zlib*
yum install openssl-devel -y

2、mysql安装

  • 1.安装
    wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
    rpm -ivh mysql-community-release-el7-5.noarch.rpm
    yum install mysql-community-server

  • 2.重启服务
    service mysqld restart

    1. 设置bind-ip

    vim /etc/my.cnf
    在 [mysqld]:
    下面加一行
    bind-address = 0.0.0.0

  • 4.登录mysql
    mysql -u root

    1. 设置外部ip可以访问
#mysql中输入命令:
#后面用navicat连接远程服务器mysql的用户名和密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

FLUSH PRIVILEGES;
  • 6.设置mysql密码
    进入mysql:
    set password =password('123456'); #密码123456
    flush privileges;

3、pip和python3.6的安装

  • 1.安装pip
    wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
    sudo python get-pip.py

  • 2.安装python3.6
    获取 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
    tar -xzvf Python-3.6.2.tgz -C /tmp
    cd /tmp/Python-3.6.2/

    1. 把Python3.6安装到 /usr/local 目录
      ./configure --prefix=/usr/local
      make
      make altinstall
  • 4.更改/usr/bin/python链接
    ln -s /usr/local/bin/python3.6 /usr/bin/python3
    ln -s /usr/local/bin/pip3.6 /usr/bin/pip3

  • 5.安装uwsgi
    pip3 install uwsgi
    为了在终端中使用uwsgi命令,执行以下命令
    ln -s /usr/local/bin/uwsgi /usr/bin/uwsgi3

安装mysqlclient出问题

centos 7:
    yum install python-devel mariadb-devel -y

ubuntu:
    sudo apt-get install libmysqlclient-dev

然后:
    pip3 install mysqlclient

4、nginx

(1)安装

这里有安装方法:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7

sudo yum install nginx

可能会用到的命令

service nginx restart
service nginx stop
service nginx start

5、gunicorn安装

创建虚拟环境
cd 到 项目目录
cd /home/www/myproject
mkdir venv
python3 -m venv venv
激活虚拟环境:
source venv/bin/activate
到本地工程下导出 requirements.txt并上传到项目目录下
pip freeze >requirements.txt
然后根据 requirements.txt 文件安装依赖包:
pip3 install -r requirements.txt`

安装gunicorn
pip3 install gunicorn

上传项目源代码带工程目录下
需要特别注意的是,使用 sudo pip3 install xxx 安装其他插件 , 否则运行错误
app.py
gunicorn -w 3 -b 127.0.0.1:8000 app:app
1.这里使用gunicorn 启动工程

2.这里说明一下:

  • D 表示后台运行 (PS.我试了加了-D就启动失败了,原因未知)
  • w 表示有3 个 工作线程(感觉有些类似 nginx 的 master-worker 模型)
  • b 指定ip 和端口
  • 这里采用本机访问, 主要是为了使用nginx 进行代理, 方便管理
  • application 表存放 写着全局变量 app 的那个工程文件
  • 在我们的这个工程中, 即包含 init.py 的那个文件
  • app 为全局变量 (app = Flask(name))
  • ps: 在下面图示文件夹中运行 gunicorn 指令

通过执行如下命令,可以获取Gunicorn进程树:

pstree -ap|grep gunicorn
退出Gunicorn任务
kill -9 28097

6、 配置nginx 服务器脚本

vim /etc/nginx/nginx.conf
#添加nginx 需要监听的端口信息
server {
    listen 8001;
    server_name 192.168.1.1;
    location /{
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }

实际上, 我们将外部通过 8001 端口发送过来的请求, 代理给了 `127.0.0.1:8000` 也就是我们的 flask 项目
重新起动 nginx 服务喔!
sudo service nginx restart

推荐阅读更多精彩内容