Centos下搭建flask项目(环境部署)

1,620 阅读3分钟

参考文章:www.jianshu.com/p/f1acbd401…

1.安装python

1)下载 python 3.6.1

wget https://www.Python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz

2) 解压

tar xJf  Python-3.6.1.tar.xz

3) 进入 python-3.6.1 目录

cd  Python-3.6.1

4)安装

./configure  --prefix=/usr/local/python3 && make && make install

如果安装失败需要先执行:

sudo yum install gcc-c++

如果报:zipimport.ZipImportError: can't decompress data; zlib not available

执行:yum -y install zlib*

5)创建python3软链接

sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3

sudo ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

一般安装python3后pip3会一起安装了,(pip3 -V查看是否安装)如果没有安装pip3

参考:blog.csdn.net/qq_25046261…

2.虚拟环境

1)安装虚拟环境

pip3 install virtualenv -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

2)创建Python的虚拟环境

在指定目录下执行则安装在该目录下(比如可以在py36venv下,先mkdir py36venv)

/usr/local/python3/bin/virtualenv  -p /usr/bin/python3 venv

3)激活虚拟环境(虚拟环境目录下执行,如py36venv下)

source venv/bin/activate

4)关闭环境:

deactivate

3.requirements.txt的生成和安装

首先在项目的虚拟环境生成requirements.txt,进入虚拟环境:

pip freeze>requirements.txt

服务器端进入虚拟环境,执行安装

pip install -r requirements.txt

4.安装MySQL

wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'

sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

yum repolist all | grep mysql

sudo yum install mysql-community-server

启动mysql服务

sudo service mysqld start

sudo systemctl start mysqld

sudo systemctl status mysqld

查看系统默认的root密码

grep "temporary password" /var/log/mysqld.log

mysql -u root -p输入密码后进入MySQL修改默认密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'(密码改成了root)

修改密码会提示校验不通过先执行:set global validate_password_policy=0;

PS:注意本地安装Navicat连接远程服务器的时候,会被拒绝这时需要在服务器端运行授权:

grant all privileges on *.*  to  'root'@'%' identified by 'root';

flush privileges;

5.安装nginx

安装依赖包:

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel```

wget http://nginx.org/download/nginx-1.10.2.tar.gz

tar -zxvf nginx-1.10.2.tar.gz

cd nginx-1.10.2

./configure --prefix=/usr/local/nginxmake && make install

whereis nginx

/usr/local/nginx/sbin/nginx

修改NGINX配置文件:

cd /etc/nginx

vi nginx.conf

#location增加uwsgi的配置

   location / {

            include uwsgi_params;

            uwsgi_pass 127.0.0.1:8080;

        }


6.安装uwsgi

虚拟环境下安装uwsgi:pip install uwsgi

找一个文件夹下创建一个配置文件config.ini

[uwsgi]

# uwsgi 启动时所使用的地址与端口

socket = 127.0.0.1:8080

# 指向网站目录

chdir=/root/www/flask_idiom

# python 启动程序文件

wsgi-file = manage.py

# python 程序内用以启动的 application 变量名

callable = app

# 处理器数

processes = 4

# 线程数

threads = 2

buffer-size = 32768

#状态检测地址

stats = 127.0.0.1:9090

PS:socket地址和nginx处一致端口也要一致

启动直接:uwsgi config.ini

7. 项目部署:

项目地址:/root/www/flask_idiom

虚拟环境地址:/root/py36venv/venv

uwsgi配置地址:/root/www/flask_idiom

1)激活虚拟环境:[root@instance-9bor86dn venv]# source bin/activate

2)虚拟环境下进入到项目地址:初始化数据库

export FALSK_APP=manage.py

flask db init

flask db migrate

flask db upgrade

3)运行爬虫脚本初始化数据到数据库

mysql -u root -p

#创建数据库
create database bss_demo charset utf8;

4)运行项目:uwsgi config.ini

查看进程:ps -aux|grep uwsgi

kill -9 进程号停止服务

Tip:uwsgi是直接在前台启动的,当我们的连接终端跟服务器断开的时候uwsgi进程也被关闭了,所以我们需要uwsgi在后台运行。 后台启动项目用nohup启动:不挂断运行命令,用"&"可以让你的命令在后台执行(注意:别漏了&号。)

nohup uwsgi config.ini &

8.安装Supervisor(监控进程)

参考:www.jianshu.com/p/ac6c84a2f…

Supervisor(supervisord.org/) 是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具。

它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

pip install supervisor
#修改supervisor的配置文件