[更新中]centos7.9安装python3.8,virtual,flask,uwsgi,nginx

文件框架

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,则会下载文件

猜你喜欢

转载自blog.csdn.net/chenjie05/article/details/129039425