Flask+virtualenvwrapper+mariadb+redis+Uwsgi+Nginx+阿里云Centos项目部署

  • Post author:
  • Post category:其他




思路:



一定要细心看错误信息





一定要细心看错误信息





一定要细心看错误信息

  • 做每一步都需要大概知道为什么要这么做,这样在部署到后面时遇到错误想找原因就比较简单,不浪费时间
  • 其实首先要理清思路,理清思路的话

    1个小时

    内就可以完成

  • 大概流程分析:

    • 1、安装一些依赖包(对于之后安装的包有作用)
    • 2、安装Python3.7并配置信息(centos有python3以上的版本可以不安装)
    • 3、mariadb安装与配置(只需在centos中安装)
    • 4、redis安装与配置(只需在centos中安装)
    • 5、虚拟环境virtualenvwrapper的安装与配置
    • 6、在虚拟环境中跑flask项目代码,看是否运行的成功
    • 7、安装uwsgi(centos与虚拟环境中都需要安装)并在flask项目中配置对应的uwsgi.ini文件,使用uwsgi去跑项目
    • 8、nginx的安装与配置(只需在centos中安装)
    • 9、在使用uwsgi+nginx运行flask项目之前,需要配置下flask项目



部署前说明:

  • 因为每个人的项目都做的不一样,相对的目录位置、代码都不经相同,所以还需要结合多个项目部署文章来看比较好
  • 我的flask项目目录名字是bbs,存放在/root/flask-bbs目录下的,所以下面有关这些目录的路径根据个人情况自己修改
  • 其实大部分步骤都可能遇到error,然后我们不要直接跳过错误信息直接去百度查,而是先看错误信息,因为很多错误信息都提供了解决方案
  • flask项目部署和django项目部署90%的步骤都一样的,不同的点在于安装的库不完全相同、数据库的数据不同、跑flask和django项目的命令不一样、uwsgi和nginx配置不一样



部署步骤:



一、安装依赖包

安装这些依赖包,是因为这些包是安装之后的其他包的前提条件

yum install opensll-devel bzip2-devel expat-devel gdbm-devel readline-devel sql ite-devel gcc gcc-c++ opensll-devel libffi-devel python-devel mariadb-devel python-setuptools



二、安装Python3.7

1:从网上下载python压缩包

2:将python包解压到tmp目录下

3:进入到tmp下的python3.7目录下

4:配置python3.7,这样python3.7会安装到/usr/local下

5:编译python程序

6:安装python

7:设置python3.7的软链接(一般这里会有错误,说/usr/bin/python3已存在,去删掉python3重新执行该命令即可)

8:设置pip3的软链接(同上,删掉对应的pip3)

wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

tar -xzvf Python-3.7.3.tgz -C /tmp

cd /tmp/Python-3.7.3

./configure --prefix=/usr/local

make

make altinstall

ln -s /usr/local/bin/python3.7 /usr/bin/python3

ln -s /usr/local/bin/pip3.7 /usr/bin/pip3



细心看错误信息



三、maridb安装与配置

本flask中用的是mysql数据库,而在centos中安装mariadb

maridb数据库管理系统是mysql的一个分支,操作是和mysql是一样的

1:在centos系统中通过yum命令安装mariadb(如果centos中已经有的话则不用安装)

2:启动mariadb

3:试试是否能进入到mariadb内

4:退出mariadb去编辑mariadb的配置文件,令外部可以访问centos中的mariadb

5:设置mariadb的账户和密码和对应的权限

6:同上

7:刷新权限

sudo yum install mariadb-server

sudo systemctl start mariadb 

mysql -uroot

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

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'djt123' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'djt123' WITH GRANT OPTION;

FLUSH PRIVILEGES;

到这里centos中的maridb配置已经算完成了,还需要完成的是将flask项目中对应的数据库文件映射进mariadb中,可以在windows中通过SQLyog去连接centos中的mariadb,然后在里面创建flask项目对应的数据库并把数据导入进去(或者可以不在windows中这样操作,在下文的第六步中通过FileZilla将sql的文件传到centos中,然后在mariadb中使用source命令导入数据库的数据也行)



细心看错误信息



四、redis安装与配置

redis在flask项目中用作于存储一些短信验证码、图形验证码和session信息

1:安装redis

2:启动redis

3:使用redis

yum install redis

service redis start

redis-cli



细心看错误信息



五、虚拟环境virtualenvwrapper

1:使用pip3安装虚拟环境工具virtualenvwrapper(这里的pip3在二-8中设置了软链接)

pip3 install virtualenvwrapper

2:编辑root用户下(~表示root)的.bashrc文件(一种shell的配置文件)

vim ~/.bashrc

export [-fnp][变量名称]=[变量设置值] 命令是用于设置环境变量的

source filename 命令会执行filename文件中的代码,通常用于该修改完的初始化文档

在.bashrc文件中添加下面3句:
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

3:编辑完.bashrc文件后使用source执行.bashrc文件

4:在root目录下创建一个flask-bbs目录(接下来将在此目录创建虚拟环境)

5:进入/root/flask-bbs下使用虚拟环境命令mkvirtualenv去创建一个python3环境的名为bbs的虚拟环境

6:使用workon命令打开刚刚创建好的虚拟环境bbs

7:deactive可以关闭虚拟环境

source ~/.bashrc
mkdir /root/flask-bbs
mkvirtualenv -p python3 bbs
workon bbs
deactivate



细心看错误信息



六、使用FileZilla将Flask项目传输到centos中并试着运行Flaks项目

FileZilla是一种文件传输工具。

由于之前我的flask项目是在windows的虚拟环境中运行的,所以传输的时候需要把windows中项目对应的虚拟环境中含有的库名映射到文件中,这里我是映射到requirements.txt文件中(pip freeze >requirements.txt)。

将flask项目与其对应的requirements.txt文件传输到centos系统后,进入到centos的虚拟环境中运行以下命令。

1、安装requirements.txt文件中指定的库

pip3 install -r requirements.txt

2、进入到flask项目目录下,编辑bbs.py文件,在app.run()中添加host=0.0.0.0,然后尝试着去运行flask项目,然后去windows的网址上输入Centos的公网ip加5000端口去访问该网站(

阿里云的端口规则5000端口如果没开启需要去开启

)。

python bbs.py



细心看错误信息



七、uwsgi安装与配置

接下来还是处于虚拟环境中

1、安装uwsgi

pip3 install uwsgi

2、在项目目录下创建文件uwsgi.ini,然后通过vim uwsgi.ini编辑文件添加以下代码

[uwsgi]

# 必须全部为绝对路径 
# 项目的路径 
chdir = /root/flask-bbs/bbs

# flask的wsgi文件 
wsgi-file = /root/flask-bbs/bbs/bbs.py

# 回调的app对象 
callable = app

# Python虚拟环境的路径 pipenv --venv 进入到虚拟环境,目录里面执行 
home = /root/.virtualenvs/bbs

# 进程相关的设置 
# 主进程 
master = true

# 最大数量的工作进程 
processes = 10

# 设置套接字用于与nginx服务进行连接,因为是阿里云服务器的原因,这里写的是阿里云的私网IP(也是看个人,可以自己尝试写公网IP)
socket  = 172.18.110.160:5000

# 设置socket的权限 
chmod-socket = 666

# 退出的时候是否清理环境 
vacuum = true

3、试着使用uwsgi运行项目,在windows中通过ip:5000方式访问

uwsgi --ini uwsgi.ini



细心看错误信息



八、Nginx安装与配置

1、安装nginx并启动

sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx

2、在/etc/nginx/conf.d/下创建文件nginx.conf并添加以下代码

# flask-bbs
server {
         # 监听的端口号 
        listen 80;
        # 域名
        server_name 120.24.150.115;  #阿里云公网IP
        charset utf-8;

        # 最大的文件上传尺寸 
        client_max_body_size 75M;

        # 静态文件访问的url 
        location static {

        # 静态文件地址 
        alias /root/flask-bbs/bbs/static/;    # 这里遇到了一个坑,static最后面需要加/
               }

                # 最后,发送所有非静态文件请求到flask服务器 
        location / {
                uwsgi_pass 120.24.150.115:5000;   #阿里云公网IP
              # uwsgi_params文件地址 
                include /etc/nginx/uwsgi_params;
               }
       }


3、因为我的flask项目的静态文件就是放在flask目录下的static目录中,所以不像django项目那样需要拉取静态资源

4、结合nginx和uwsgi去运行flask项目

uwsgi --ini uwsgi



细心看错误信息



版权声明:本文为xiaoduu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。