赞
踩
1,代码存放位置:/source
2,安装包文件存放目录:/data
3,虚拟环境存放位置:/envs
4,服务器端口:flask测试:84;uwsgi测试:85,nginx测试:86,nginx+uwsgi测试:88
5,参考: CentOS7.9系统部署(nginx+uwsgi+flask)项目
yum install gcc -y
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
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
python3 -m pip install --upgrade pip
pip3 -V #查看pip3版本
python3 -V:#查看python版本
pip3 install virtualenv
virtualenv /envs/flask_test --python=3.8
cd /envs/flask_test
ls
#如下所示,则表示virtualenv已经创建完成
source /envs/flask_test/bin/activate
deactivate
source /envs/flask_test/bin/activate
pip install 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安装成功
source /envs/flask_test/bin/activate
pip install uwsgi
find / -name uwsgi
ln -s /envs/flask_test/bin/uwsgi /usr/bin/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
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进程
netstat -tnpl #如下图所示,说明uwsgi已经运行,且在监听85端口
vim /source/flask_test_code/app.py
修改:app.run(host="0.0.0.0", port=84) 为 app.run()
浏览器访问,如下所示,说明uwsgi和flask已经运行起来了
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
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
ln -s /usr/local/nginx/sbin/nginx /usr/bin/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配置文件是否正确
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配置成功
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
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>
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;
- }
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,则会下载文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。