CentOS7.4 部署Flask服务器(Ngnix + Uwsgi + Memcached + MySQL)

Flask环境部署

本文将带你通过一步一步使用mysql、nginx 、uwsgi、memcached在Centos7.4中完整在Centos7.4中搭建一个Flask服务器。因为在做我的项目中使用到mysql以及memcached缓存,因此也一致完整进行说明,memcached在项目中我主要做“忘记密码”这个功能,做验证码的校验。

对于前期的准备工作:

  1. 需要将我们的开发工程中,将所使用的第三方库进行统一迁移:pip freeze >requirements.txt

那么,话不多说,直接开干了了了。

一、Mysql的安装

MySQL数据库在Centos7上安装在百度也有很多博文说明,因此这里就不在累述, 至于安装过程可以参考如下连接:

https://blog.csdn.net/qq_34491508/article/details/89150107

注意事项:

  1. MySQL密码修改:
    1.1 如果安装的MYSQL数据库在7.8以下需要使用以下语句:

      set password =password('your password');
      flush privileges;
    

    1.2 如果安装MYSQL数据库在7.8版本,则使用以下语句:

    alter user 'root'@'localhost' identified by 'youpassword';  
    flush privileges;
    
  2. 安装完成后,我们需要通过Navicat对数据库进行访问, 那么需要执行以下SQL语句:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '您的数据库密码' WITH GRANT OPTION;
    
    flush privileges;
    

二、安装Python3以及Flask所需的虚拟环境

对python3的安装,以及虚拟环境

  1. Python3安装yum -y install python3

  2. 安装虚拟环境virtualenvwrapperpip3 install virtualenvwrapper

  3. 配置虚拟环境 方式如下:
    编辑:./barshrc文件命令 vi ~/.bashrc
    并在该文件末尾加入以下内容:

    export WORKON_HOME=$HOME/.virtualenvs                 
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3      #安装的python3的路径,不清楚可以直接使用which python3
    source /usr/local/python3/bin/virtualenvwrapper.sh    #查找virtualenvwrapper的路径: which virtualenvwrapper.sh
    

    python的路径以及虚拟环境的virtualenvwrapper.sh的路径,根据查询结果进行填写, 完成后,再进行保存。
    添加完成成执行:source ~/.bashrc # 使该文件生效

  4. /opt目录(也可以在你想要的其它目录,只要你喜欢)创建虚拟环境
    4.1 创建虚拟换名mkvirtualenv --python=/usr/bin/python3 flaskapp 其中flaskapp是自定义虚拟环境名称,指定创建使用python3,创建后默认激活该虚拟环境
    4.2 补充虚拟环境的一些其它命令
    激活虚拟环境: workon flaskapp
    查看有哪些虚拟环境:lsvirtualenv
    删除虚拟环境:rmvirtualenv flaskapp
    关闭虚拟环境:deactivate
    其中flaskapp是自定义虚拟环境名称

  5. 需要将代码放到我们刚刚建立的flaskapp这个文件夹中:
    那么此时我们需要把刚刚用上了准备工作中的requirements.txt
    执行以下命令安装在代码中所使用的第三方库:pip install -r requirements.txt

三、安装Uwsgi以及配置

3.1 安装uwsgi: 执行以下命令进行安装Uwsgi

  1. 安装所需包:yum install -y gcc* pcre-devel openssl-devel
  2. 安装到python3对应的版本:yum install python3-devel
  3. 安装:pip3 install uwsgi

3.2 配置uwsgi
首先需要在放置代码工程文件的地方,新创建一个文件:touch uwsgi.ini
然后在uwsgi.ini文件中加入以下内容:
注:将以下内容的flaskapp切换成对应的名称(因我的虚拟环境名称与文件夹名称同名)

[uwsgi]
# manage.py文件所在目录;修改成对应的路径
chdir           = /opt/flaskapp/

home = /root/.virtualenvs/flaskapp
 
callable = app
 
# flask文件名, 修改成对应的路径
wsgi-file= /opt/flaskapp/app.py

# 进程数
processes  = 10
 
# 使用5001端口;修改成对应的路径
socket = /opt/flaskapp/flaskapp.sock

chmod-socket  = 666

vacuue = true

master = true
 
# 日志输出目录; 保存路径需要已有的文件夹,没有的话,请自行创建一个文件夹
daemonize = /opt/uwsgi-flask/flask.log
 
pidfile = project-master.pid

配置好以后:
启动uwsgi服务: uwsgi uwsgi.ini

停止uwsgi服务:pkill -f uwsgi -9

三、安装Ngnix以及配置

Ngnix的安装在网上有太多相关资源,此外不在累述,关于安装,请参考以下连接:

https://blog.csdn.net/lizhiqiang1217/article/details/82632729

Nginx配置:
1. 首页需要在代码工程文件中,新建一个文件:touch nginx.conf
2. 编辑该文件,并加入以下内容:

    #user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
	upstream flaskAPP{  #需要修改
		server unix:///opt/flaskAPP/flaskbbs.sock;  #需要修改
	}

    server {
        listen       80;
        server_name  10.10.12.123;  #此处填写服务器的IP地址,或者域名地址

        charset utf-8;
		
		#上传文件的最大尺寸
		client_max_body_size 300M;
		
		#静态文件访问路径
		 location /static {

			  #静态文件地址
			  alias /opt/flaskapp/static;  #需要修改
		}
		
		location / {
		   uwsgi_pass flaskAPP;  #需要修改
		  
		  # uswgi_params文件地址
		  include      /usr/local/nginx/conf/uwsgi_params;
		}

    }
}

需要注意以下内容:

  1. 每行的不可少,否则会报错。
  2. 上面标记需要修改的地方,请根据实际情况进行修改;
  3. 启动nginx命令:/usr/local/nginx/sbin/nginx -c /opt/flaskapp/nginx.conf 其中-c后面就是刚刚创建的配置文件
  4. 停止nginx服务:pkill -f nginx -9

四、 Memcached以及启动、停止、开机启动

直接执行以下命令:

  1. 安装: yum -y install memcached

2.启动Memcached:service memcached start

3.停止Memcamched:service memcached stop

4.将Memcached设置开机启动:systemctl enable memcached.service

5.取消开机启动:systemctl disable mysqld.service

五、 补充:supervisor进程管理

  1. 安装很简单,直接使用: pip3 install supervisor
  2. 在项目目录下新建一个touch supervisor.conf文件
  3. touch supervisor.conf文件中增加以下内容:
#supervisor的名字
[program:flaskapp]

#supervisor执行命令(需要修改)
command=/opt/flaskapp/uwsgi uwsgi.ini

#项目目录  (需要修改)
directory=/opt/flaskapp/

#开始的时候等待多久秒
startsecs=0
#停止的时候等待多少秒
stopsecs=0

#自动开始
autostart=true

#程序挂了之后自动重启
autorestart=true

#输出的log文件  (需要修改)
stdout_logfile=/var/logs/flaskbbs_supervisor_out.log
#输出的错误文件  (需要修改)
stderr_logfile=/var/logs/flaskbbs_supervisor_err.err

[supervisord]
# log的级别
loglevel=debug

[inet_http_server]
# supervisor服务器
port= :9001
#用户名与密码
username=admin
password=123

#使用supervisorctl的配制
[supervisorctl]
#使用supervisorctl登录的地址和端口号
serverurl= http://127.0.0.1:9001

#登录supersiorctl登录的用户名与密码
username = admin
password = 123

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

注:1. 需要进行修改的地方,已进行标记
2. 目前在Centos7中使用该supervisor进行进程管理,会导致服务器卡死,具体原因还在寻找中

六、 关闭防火墙以及启动服务

systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #禁止开机启动

七、 服务启动汇总:

因目前部署只Ngnix + Uwsgi + Memcached ,而mysql已设置了开启自启动这样就不需要关注:
因此我们最终只用使用以下命令进行:

  1. 激活虚拟环境: workon flaskapp
  2. 启用uwsgi命令(将目前切换到flaskapp目录):uwsgi uwsgi.ini
  3. 启用ngnix命令:/usr/local/nginx/sbin/nginx -c /opt/flaskapp/nginx.conf

其它:

  1. 停止uwsgi命令: pkill -f uwsgi -9
  2. 停止nginx命令: pkill -f nginx -9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值