1.安装python(两种方式)
1.1使用源码安装(可以指定版本)
安装gcc
yum install gcc -y
安装python依赖
yum install zlib zlib-devel -y
yum install bzip2 bzip2-devel -y
yum install ncurses ncurses-devel -y
yum install readline readline-devel -y
yum install openssl openssl-devel -y
yum install xz xz-devel lzma -y
yum install sqlite sqlite-devel -y
yum install gdbm gdbm-devel -y
yum install tk tk-devel -y
yum install mysql-devel -y
yum install python3-devel -y
yum install libffi-devel -y
下载源码
1.2.使用命令安装
sudo yum install -y python3 python3-pip
验证安装
python3 --version
pip3 --version
查看安装路径
which python3
- 通过 yum 或 EPEL 仓库安装:
- 通常位于
/usr/bin/python3 - 相关库文件在
/usr/lib/python3.x/或/usr/lib64/python3.x/
- 通常位于
2.配置虚拟环境
2.1安装virtualenv
pip3 install virtualenv
2.2创建虚拟环境
环境: /envs/flaskblog
# 在系统根目录下创建envs目录
mkdir /envs
cd /envs
# /envs/后跟的是创建的虚拟环境名称
virtualenv /envs/flaskblog --python=3.10.11
2.3激活虚拟环境
虚拟环境创建成功后,在bin目录下会有一个activate,用于激活,执行此条命令进行激活
source /envs/flaskblog/bin/activate
在激活状态下,安装flask(pip install flask), 就会将flask包安装到此虚拟环境中,后期基于此虚拟环境就可以运行项目
3.安装配置mysql
在mysql中创建的数据库名字和mysql的密码一定要与项目开发当中配置文件中的数据库连接配置一致,保证flask项目能正确连接到数据库。
3.1安装mysql服务
yum install mariadb-server -y
3.2授权
进入mysql服务
mysql -u root -p
root 设置密码
UPDATE user SET password=password('xxx') WHERE user='root';
flush privileges;
4.uwsgi
4.1安装
先激活虚拟环境,在虚拟环境下进行安装
pip install uwsgi
4.2基于uwsgi运行flask项目
1.命令的方式
uwsgi --http :8001 --wsgi-file app.py --callable app
2.配置文件方式(推荐)
创建flaskblog_uwsgi.ini文件
socket 监听8001端口,chdir 项目目录, processes 进程数, virtualenv 为项目创建的虚拟环境目录
[uwsgi]
socket = 127.0.0.1:8001
chdir = /data/www/flaskblog/
wsgi-file = app.py
callable = app
processes = 2
virtualenv = /envs/flaskblog/
# 先激活虚拟环境
source /envs/flaskblog/bin/activate
# 执行此命令后uwsgi将会运行
uwsgi --ini flaskblog_uwsgi.ini(按ctrl c 停止运行)
# 停止运行,执行此命令查看uwsgi进程id
ps aux | grep uwsgi
# 输出结果类似这样
www-data 1234 0.0 2.0 12345 6789 ? S 10:00 0:00 uwsgi --ini /path/to/your/uwsgi.ini
www-data 1235 0.0 1.8 12345 6789 ? S 10:00 0:00 uwsgi --ini /path/to/your/uwsgi.ini
root 1236 0.0 0.1 12345 6789 pts/0 S+ 10:01 0:00 grep --color=auto uwsgi
# 第一列和第二列的1234,1235kill掉
# 最后一行通常是grep自身的进程,可以忽略。
kill -9 xxxx
4.3让uwsgi在后台运行,远程连接断开后依然运行
- 使用 nohup 命令
- 命令格式:
nohup uwsgi --ini your_uwsgi.ini --daemonize /var/log/uwsgi.log &。 - 示例:假设你的项目目录为
/data/www/stock - project,uWSGI 配置文件为flaskblog_uwsgi.ini,首先进入项目目录cd /data/www/stock - project,然后执行命令nohup uwsgi --ini flaskblog_uwsgi.ini --daemonize /var/log/uwsgi.log &。该命令会在后台启动 uWSGI,并将输出重定向到指定的日志文件/var/log/uwsgi.log,这样即使 Xshell 断开连接,uWSGI 服务也会继续运行。
- 命令格式:
5.nginx
使用nginx做反向代理和静态文件处理
5.1安装
yum install nginx -y
5.2配置
普通请求(由nginx转发给uwsgi) -> 8001端口
静态文件请求(由nginx直接处理):/static/ -> /data/www/flaskblog/static
修改nginx.conf配置文件: /etc/nginx/nginx.conf
删除默认的nginx.conf
rm nginx.conf
新建 nginx.conf 将文件内容拷贝(根据自己的项目稍作修改)进去
# 创建并打开文件
vim nginx.conf
# 进入编辑模式
i
# 拷贝完后保存退出
:wq
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
client_max_body_size 20m;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream flask {
server 127.0.0.1:8001;
}
server {
listen 80;
listen [::]:80;
# Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
location /static {
alias /data/www/flaskblog/static;
}
location / {
uwsgi_pass flask;
include uwsgi_params;
}
}
}
此段代码是核心中的核心:
# 这里配置的是静态文件目录,静态文件请求由nginx直接处理
location /static {
alias /data/www/flaskblog/static;
}
location / {
uwsgi_pass flask;
include uwsgi_params;
}
5.3启动
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
# 开机启动
systemctl enable nginx
返回文章列表
评论区 0