一、云服务器
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项目的所有路由。