00:00

文章目录

加载目录中...

Flask项目部署服务器环境安装

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