Web前端之Flask+uwsgi+Nginx+Centos的部署教程

一、云服务器

1、云服务器的选择

2、云服务器与云共享主机的区别

  • 云服务器:一台独立的服务器,硬件资源是独立的。
  • 云共享主机:在云服务器上通过技术可以分割出很多虚拟主机出来,共享服务器的硬件资源

云服务器对外访问:服务器+域名+备案

3、远程数据库(Centos服务器下)

  • 安装

yum install mariadb-server -y 
systemctl start mariadb 
systemctl enable mariadb 
  • 修改密码
mysql_secure_installation  # 一直默认回车,过程中修改密码
  • 进入MySQL数据库
mysql -uroot -p密码
  • 用户远程登录授权(进入数据库后进行)
    当远程访问mysql数据库时,一般的思路为,使用增加权限的语句,并且不要忘记刷新权限
> grant all privileges on *.* to 'root@%' identified by '密码';   # . 表示数据库中的所有表,%表示所有用户
> flush privileges; 
  • 创建一个数据库(进入MySQL后)
# 设置默认编码格式
create database todoList dafault charset utf8; 
# 创建一个用户
create user 'flask@%';
# 为新创建的用户授予登录权限
 grant all privileges on todoList.* to 'flask@%' identified by '密码';
 # 设置权限后刷新权限
 flush privileges;
  • 修改配置文件
# /etc/my.cnf 中symbolic下增加
bind-address=0.0.0.0  # 使所有用户均可访问该主机
  • 重启数据库
# 修改后需要重启
systemctl restart mariadb
  • 查看所有IP和端口信息
# 确保3306端口是否共享所有IP
netstat -antlpe | grep 3306
  • 检验是否可远程连接
    检验前要在阿里云实例中添加端口号3306的安全规则
mysql -h阿里云实例IP -uflask -p登录密码
show databases;

二、Flask+uwsgi+Nginx+Centos部署

在这里插入图片描述

1、主机选择

云主机:Centos

2、云主机连接方式(windows下)

  • 1)无需软件
    随便进入一个文件,shift+鼠标右键
    进入Powershell
  • 2)Git Bash中

前两种方式进入后运行如下代码:

ssh root@(云主机ip) 

通过如下代码修改云主机名:

hostname name
  • 3)使用Xshell

3、版本控制工具

1)在Xshell中从码云拉取代码
yum insatll git -y 
# 不用搭建yum仓库是因为云主机中 /etc/yum.repos.d 中已有一个建好的仓库
mkdir -p /data/www/ 
# 项目存放目录,其中-p表示创建没有父级目录的目录
cd /data/www/
git clone https://gitee.com____.git 
# 从码云中代码相应的网址拉取代码
2)安装python3

由于centos8以下的版本中默认只用python2,所以需要安装python3

yum install python3 -y
yum install python3-devel -y   # 安装开发包
cd /data/www/TodoList   
3)配置虚拟环境,安装第三方模块
  • 配置虚拟环境
witch python3   # 查看python3所在位置
# 并进入python3所在的位置
virtualenv -p 位置 venv  # 在python3所在位置创建一个虚拟环境 -p表示虚拟环境下父级的解释器是什么  venv为虚拟环境的名称,自拟 
cd venv/bin
source venv/bin/activate    # 激活虚拟环境,并进入虚拟环境
  • 安装第三方模块
python3        # 进入python3
pip install -r requirements.txt  

4、UWSGI基础知识与配置启动

1)uWSGI、uwsgi与WSGI
  • uWSGI是一个web服务器,它实现了WSGI协议、uwsgi协议、http协议等。(C语言开发)
  • uwsgi是一种线路协议而不是通信协议,常用于在uWSGI服务器与其他网络服务器的数据通信。
  • WSGI是一种Web服务器网关接口。它是一个Web服务器(uWSGI等服务器)与web应用(如用Django/Flask框架写的程序)通信的一种协议。
    在这里插入图片描述
2)uwsgi配置
i、安装uwsgi
pip insatll uwsgi  
ii、配置uwsgi配置文件
  • pwd确保是在项目目录下
  • 配置
vim uwsgi.ini  # 配置文件位置:/data/www/TodoList/uwsgi.ini
[uwsgi] 
# 源码目录 
chdir = /data/www/TodoProject 
# Python虚拟环境 
home = /data/www/TodoProject/venv 
module = manage 
callable = app 
master = true 
processes = 4 
# 启动的端口号 
http = 0.0.0.0:5000 
# socket存放文件 
socket = /data/www/logs/todo.sock 
chmod-socket = 777 
logfile-chmod = 644 
# 缓存的大小
buffer-size = 65535 
# pid存放文件 
pidfile = /data/www/logs/todo.pid 
daemonize = /data/www/logs/todo.log 
static-map = /static = /data/www/TodoProject/app/static
3)启动uwsgi服务
uwsgi --ini uwsgi.ini     # 不可多次重复启动
killat -9 uwsgi     #若多次重启导致启动失败,将与uwsgi有关的所有结束
ps aux | grep uwsgi  # 查看启动的进程
curl -I http://127.0.0.0.1:5000/login # 进入项目的一个页面,查看是否启动成功  -I表示返回访问状态
4)重新/关闭加载uwsgi配置
uwsgi --reload /data/www/logs/todo.pid 
uwsgi --stop /data/www/logs/todo.pid 

5、Nginx

1)什么是Nginx?

Nginx 是一个 Web 服务器和反向代理服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。 采 用单线程来异步非阻塞处理请求(epoll)实现高并发功能。目前使用的最多的 Web 服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用。

Nginx的优势:

  • 跨平台、配置简单
  • 非阻塞、高并发连接。处理 2-3 万并发连接数,官方监测能支持 5 万并发
  • 内存消耗小, 开启 10 个 Nginx 才占 150M 内存。
  • 成本低廉,且开源。
  • 稳定性高,宕机的概率非常小。
2)Nginx的安装
  • 安装
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7- 0.el7.ngx.noarch.rpm   # 添加Nginx源
yum install nginx -y
  • 卸载
yum remove nginx -y 
yum -fr /etc/nginx/*     #删除配置文件
3)Nginx常用命令
# 查看 Nginx 版本 
nginx -v 
# 检查 Nginx 配置文件是否正确 
nginx -t 
# 启动 Nginx 
systemctl start nginx | nginx 
# 停止 Nginx 
systemctl stop nginx | nginx -s stop 
# 重新加载 Nginx配置 
systemctl reload nginx | nginx -s reload 
# 重新加载指定配置文件 
nginx -c conf.d/todo.conf 
4)Nginx配置文件

在这里插入图片描述

i、编辑自己的配置文件

配置文件位置:/etc/nginx/conf.d/todo.conf

# 配置虚拟主机 
server { 
    # 监听端口 
    listen 80 default_server; 
    # 允许域名 
    server_name www.todo.com; 
    # 使用alias路径替换location路径 
    location /static { 
        alias /data/www/TodoProject/app/static; 
     }
     location / { 
         # 使用try_files判断uri是否带有文件名或者目录名,如果没有跳转到其他代理服务器
         try_files $uri @todoApp; 
     }
     location @todoApp { 
	  # 包含uwsgi的请求参数 
	  include uwsgi_params; 
	  # 转发请求给uwsgi 
	  uwsgi_pass unix:/data/www/logs/todo.sock; 
     } 
}

nginx的主配置文件 nginx/nginx.conf 中第39、40行将主配置端口注释,因为与自己定义的配置文件中的端口有冲突。

ii、查看nginx状态
systemctl status nginx
iii、查看日志文件
less /var/log/nginx/error.log
iv、查看指定端口谁在使用
netstat -antlpe | grep 80
v、配置好后重启
nginx -s reload

在本地通过阿里云IP访问远程页面,访问前在阿里云实例中添加端口号为22的安全规则。

三、效果展示

用户访问云主机的IP, 即可登录、注册等, 访问TodoList项目的所有路由。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值