Flask 应用部署

Flask+uwsgi+Ngnix 部署

图片名称

配置信息:

服务器 : 阿里云4核8g CentOS 7.9 (cat /etc/redhat-release)
anaconda : 最好用的python集成安装包
uwsgi: 高性能web服务器
python3.8

安装python3.8

先更新yum源

备份原有源

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

设置为阿里源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 

运行yum makecache生成缓存

yum makecache

可选:删除旧缓存

yum clean all

安装编译相关工具

yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install libffi-devel -y

下载python安装包

wget https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz
tar -zxvf  Python-3.8.10.tgz

编译安装python

mkdir /usr/local/python3 #创建编译安装目录
cd Python-3.8.10 
./configure --prefix=/usr/local/python3
make && make install

安装过,出现下面两行就成功了
image

创建软连接

查看当前python软连接
ll /usr/bin/ |grep python

image

默认系统安装的是python2.7

删除python软连接
rm -rf /usr/bin/python
配置软连接为python3
#添加python3的软链接 
ln -s /usr/local/python3/bin/python3 /usr/bin/python

这个时候看下python默认版本

python -V
删除默认pip软连接,并添加pip3新的软连接
rm -rf /usr/bin/pip
#添加 pip3 的软链接 
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

更改yum配置

因为其要用到python2才能执行,否则会导致yum不能正常使用(不管安装 python3的那个版本,都必须要做的)

vi /usr/bin/yum
把 #! /usr/bin/python 修改为 #! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
把 #! /usr/bin/python 修改为 #! /usr/bin/python2
vi /usr/bin/yum-config-manager
#!/usr/bin/python 改为 #!/usr/bin/python2

卸载python3

rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps ##卸载python3
whereis python3 |xargs rm -frv ## 删除所有残余文件
whereis python ##查看现有安装的python

参考:
https://blog.csdn.net/fanxl10/article/details/106854062
https://blog.csdn.net/Y168H/article/details/122224947

uWSGI

编写uwsgi.ini文件
在项目目录下touch 一个ini文件(xml,yaml 格式),名称随意,vi进去

[uwsgi]
socket = 0.0.0.0:8000  # 设置0.0.0.0 表示可以接收不同服务器的nginx发送过来的请求,127.0.0.1 表示只接收同一台服务器发送过来的请求,8000 为应用内的监听端口 
# http = :5000    # 启动程序时所使用的地址和端口,通常在本地运行flask项目
chdir = /home/flaskproject/    # 项目目录
wsgi-file = manage.py  # flask程序的启动文件,通常在本地是通过运行,python manage.py runserver 来启动项目的
callable = app     # 程序内启用application 变量名
processes = 4  # 处理器个数  进程个数 一般最大填写cpu的核心数量
threads = 2  # 线程个数 默认的linux系统中一个进程最多2048个线程 
stats = 127.0.0.1:9191   # 获取uwsgi统计信息的服务地址 只能本机访问
pidfile = uwsgi.pid    # 保存pid 信息 方便停止服务和重启的时候用
daemonize = ../logs/uwsgi.log   # 后台运行时记录uwsgi的运行日志
lazy-apps = true     # 当需要连接cassandra时,uwsgi 无法启动服务,可以使用该选项设置
master-fifo  = /opt/mt-search/web-service/mfifo   # 使用chain-reloading 逐个work重启 服务不中断 命令是echo c > mfifo
touch-chain-reload=true


命令

uwsgi --ini uwsgi.ini  # 启动后直接进控制台
nohup uwsgi --ini uwsgi.ini & # 后台启动uwsgi服务
uwsgi --reload uwsgi.pid   # 重启
uwsgi --stop uwsgi.pid  # 停止
kill -9 pid # 关闭服务 直接kill  uwsgi 端口

从Nginx 反向代理uWSGI

location / {
  include uwsgi_params;
  uwsgi_pass 127.0.0.1:8000;
}

Nginx

1.检查是否已安装nginx

find -name nginx

如果系统已安装nginx,那么卸载:

yum remove nginx

2.安装需准备的一些lib库

yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl--devel

3.安装:
(1)首先进入/usr/local目录

cd /usr/local

(2)官网下载nginx 这里是nginx-1.21.1.tar.gz

wget -c http://nginx.org/download/nginx-1.20.2.tar.gz

(3)解压

tar -zxvf nginx-1.20.2.tar.gz

(4)进入该目录

cd nginx-1.20.2

(5)配置、安装

mkdir /usr/local/nginx
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-pcre --with-http_ssl_module

make && make install

# 备份
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
# 将./objs/nginx覆盖原来的nginx
cp ./objs/nginx /usr/local/nginx/sbin/

(6)启动nginx

cd /usr/local/nginx/sbin
./nginx

到浏览器 访问服务器ip+80 端口,出现如下界面则成功

image

nginx常用命令

./nginx # 启动
./nginx -s stop # 停止
./nginx -s quit # 安全退出
./nginx -s reload # 重新加载配置文件
ps aux|grep nginx # 查看 nginx 进程

参考
https://blog.csdn.net/hjq_ku/article/details/122370804

posted @ 2022-03-30 13:56  钟鼎山林  阅读(161)  评论(0编辑  收藏  举报