文件框架
1,代码存放位置:/source
2,安装包文件存放目录:/data
3,虚拟环境存放位置:/envs
4,服务器端口:flask测试:84;uwsgi测试:85,nginx测试:86,nginx+uwsgi测试:88
5,参考:
CentOS7.9系统部署(nginx+uwsgi+flask)项目
1、cetnos7.9下安装python3.8
1.1 安装gcc
yum install gcc -y
1.2 安装相关依赖
yum install zlib zlib-devel bzip2 bzip2-devel openssl openssl-devel xz lzma zx-devel ncurses ncurses-devel sqlite sqlite-devel readline readline-devel gdbm gdbm-devel tk tk-devel mysql mysql-devel python-devel libffi libffi-devel gcc make
1.3 下载python3.8源码并编译安装
cd /
mkdir data
cd data
wget wget https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tgz
tar -zxvf Python-3.8.16.tgz
cd Python-3.8.16
./configure
make&&make install
1.4 pip升级
python3 -m pip install --upgrade pip
1.5 测试
pip3 -V #查看pip3版本
python3 -V:#查看python版本
2、virtualenv安装与使用
2.1 virtualenv安装
pip3 install virtualenv
2.2 创建虚拟环境(python3.8)
virtualenv /envs/flask_test --python=3.8
cd /envs/flask_test
ls
#如下所示,则表示virtualenv已经创建完成
2.3 激活虚拟环境
source /envs/flask_test/bin/activate
2.4 退出虚拟环境
deactivate
3、flask安装与使用
3.1 进入虚拟环境
source /envs/flask_test/bin/activate
3.2 在虚拟环境中安装flask
pip install flask
3.3 创建flask文件并测试
#使用xftp将app.py文件放入服务器,app.py文件如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello ,这是一个Flask测试!'
if __name__ == '__main__':
app.run(host="0.0.0.0", port=84)
cd /source/flask_test_code
python app.py #注意,这里使用python也可以,是因为这是在虚拟环境
说明flask安装成功
4、uwsgi安装与使用
4.1 进入虚拟环境
source /envs/flask_test/bin/activate
4.2 在虚拟环境中安装uwsgi
pip install uwsgi
4.3 添加uwsgi软连接
find / -name uwsgi
ln -s /envs/flask_test/bin/uwsgi /usr/bin/uwsgi
4.4 编辑uwsgi配置文件
vim /source/flask_test_code/uwsgi.ini
[uwsgi]
# 主进程
master=true
# 进程数
processes=1
# 线程数
threads=20
#配置工程目录
chdir =/source/flask_test_code/
# flask项目app文件所在的位置
wsgi-file=app.py
# app实例的名字
callable=app
# 是否启用多线程
enable-threads=True
# socket文件指定的位置
socket = /source/flask_test_code/uwsgi.sock
# 监听地址
http = 0.0.0.0:85
# 给权限
chmod-socket = 777
# 结束pid的时候自动清理pid和sock文件
vacuum = true
# 指定python虚拟环境位置
virtualenv = /envs/flask_test/
# 守护和日志
daemonize=/source/flask_test_code/uwsgi.log
# pid进程保存目录
pidfile=/source/flask_test_code/uwsgi.pid
# 每个进程单独价值flask
lazy-apps = true
# 禁用访问日志
disable-logging = true
# 一个进程处理多少个请求后重启一次
max-requests = 1000
# 日志最大容量多少
log-maxsize = 5000000
gid = root
uid = root
4.5 uwsgi启动及其他操作
cd /source/flask_test_code
uwsgi --ini ./uwsgi.ini
ls
生成了uwsgi.log、uwsgi.pid和uwsgi.codk文件,说明uwsgi启动成功了
这3个文件均可手动删除
rm uwsgi.log
rm uwsgi.pid
rm uwsgi.sock
vim uwsgi.log #查看uwsgi启动过程中是否存在错误
# 其他操作
uwsgi --ini ./uwsgi.ini #启动
uwsgi --reload uwsgi.pid # 重启
uwsgi --stop uwsgi.pid # 关闭
ps -ef | grep uwsgi #查看uwsgi进程
kill -9 xxx #杀死uwsgi进程
4.6 uwsgi+flask测试
netstat -tnpl #如下图所示,说明uwsgi已经运行,且在监听85端口
vim /source/flask_test_code/app.py
修改:app.run(host="0.0.0.0", port=84) 为 app.run()
浏览器访问,如下所示,说明uwsgi和flask已经运行起来了
5、nginx安装与使用
5.1 编译安装nginx
1,激活虚拟环境 source /envs/flask_test/bin/activate
2,到nginx官网,获得稳定版下载地址http://nginx.org/download/nginx-1.22.1.tar.gz
3,
cd /data/
wget wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar xf nginx-1.22.1.tar.gz
cd nginx-1.22.1
./configure --prefix=/usr/local/nginx #安装nginx,并指定安装目录
make && make install
5.2 设置nginx为系统服务
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 赋予脚本执行权限
chmod +x /usr/lib/systemd/system/nginx.service
# 设置nginx.service为系统服务
systemctl enable /usr/lib/systemd/system/nginx.service
5.2 添加niginx为软连接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
5.3 nginx常见操作命令
##通过系统服务操作nginx
systemctl start nginx.service
systemctl reload nginx.service
systemctl restart nginx.service
systemctl stop nginx.service
systemctl start nginx
systemctl reload nginx
systemctl restart nginx
systemctl stop nginx
systemctl status nginx # 查看nginx服务状态
nginx -t#测试nginx.conf配置文件是否正确
5.4 nginx测试
vim /usr/local/nginx/conf/nginx.conf
修改:listen 80; 为:listen 88;
nginx -t
提示:nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful,说明配置文件正确
systemctl stop nginx
systemctl start nginx
访问公网ip:88,出现欢迎界面,说明nginx配置成功
5.5 修改uwsgi的配置文件
vim /source/flask_test_code/uwsgi.ini
修改:http = 0.0.0.0:85 为:socket =127.0.0.1:3001
uwsgi --stop /source/flask_test_code/uwsgi.pid
uwsgi --ini /source/flask_test_code/uwsgi.ini
5.6 增加示例静态文件
cd /source/flask_test_code
mkdir static
用xftp向/source/flask_test_code中,放入名为:huoying.jpg的图片,以及huoying.pdf的pdf文件
vim index.html
<!DOCTYPE html>
<html>
<head>
<title>静态文件测试</title>
<meta charset="utf-8">
</head>
<body>
<h1>这是一个静态文件</h1>
</body>
</html>
5.7 修改nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
修改:
location / {
root html;
index index.html index.htm;
}
为:
location /{
include uwsgi_params;
uwsgi_pass 127.0.0.1:3001;
}
location /static{
alias /source/flask_test_code/static/;
index index.html;
}
5.8 nginx+uwsgi+flask测试
ps -ef|grep nginx
ps -ef|grep uwsgi
1,确保nginx和uwsgi均已正确运行
2,确保当前虚拟环境被激活
netstat -tnpl
1,确保nginx在监听88端口,uwsgi在监听127.0.0.1:3001
公网访问:公网ip:88,出现如下界面,说明可以通过nginx访问uwsgi了
公网访问:公网IP:88/static,出现如下界面,说明可以通过nginx访问静态文件
公网访问:公网IP:88/static/huoying.jpg,则会显示图片
公网访问:公网IP:88/static/huoying.pdf,则会下载文件