nginx+ gunicorn部署flask项目

sudo nginx -t  # 检查配置文件是否正确
sudo systemctl reload nginx  # 重新加载配置文件
sudo systemctl restart nginx  # 重新启动 Nginx 服务


nohup gunicorn -w 4 -b 0.0.0.0:8084 ocr:app &

在 Unix 和类 Unix 系统中,& 符号用于将命令放入后台执行。在你提到的命令中,& 符号的作用是将 nohup gunicorn -w 4 -b 0.0.0.0:8084 ocr:app 这个命令放入后台执行。

具体来说,& 的作用是将命令置于后台运行,而不会阻塞当前终端会话。
[Unit] 部分
Description: 用于描述这个服务单元的作用,这个可以根据你的需求来修改。
After: 告诉 systemd 这个服务应该在哪个系统目标(target)之后启动。在这里,它会在网络服务启动之后启动,这通常是合理的。

[Service] 部分
User: 指定服务运行的用户。在这里,它被设置为 user 用户。你需要确保 user 用户具有运行该服务所需的权限。
Group: 指定服务运行的用户组。在这里,它被设置为 www-data 组。
WorkingDirectory: 指定服务的工作目录,也就是你的应用程序的根目录。
Environment: 设置环境变量。在这里,它设置了 PATH 环境变量指向虚拟环境的 bin 目录。
ExecStart: 指定启动服务时执行的命令。在这里,它使用了 Gunicorn 来启动一个 WSGI 应用程序,使用了 4 个 worker,监听一个名为 myapp.sock 的 UNIX socket 文件,并使用 wsgi:app 作为应用程序的入口点。

[Install] 部分
WantedBy: 指定了这个服务所关联的系统目标(target),这里是 multi-user.target,意味着这个服务会在多用户模式下启动。

修改建议:
如果你需要修改这个配置文件,这里有一些可能的修改建议:
修改 Description: 将描述修改为反映这个服务的实际作用。
修改 User 和 Group: 根据实际情况修改运行服务的用户和用户组。
修改 WorkingDirectory: 确保该目录指向你的应用程序根目录。
修改 Environment: 确保 PATH 环境变量指向你的虚拟环境的正确位置。
修改 ExecStart: 根据需要修改 Gunicorn 的启动参数,例如 worker 数量、绑定地址等。
查看日志设置: 你可能需要设置日志记录,以便更好地跟踪服务的运行情况。
查看安全设置: 确保服务以最小权限原则运行,并且配置文件和相关文件具有适当的权限设置。
一旦你做出了修改,请确保重启 systemd 来使配置生效:


sudo systemctl daemon-reload
sudo systemctl restart your-service-name
记得将 your-service-name 替换为你的服务的实际名称。

部署步骤及方法:

步骤 1: 准备服务器

确保你的 Ubuntu 服务器已经安装了 Python 和 pip,以及其他必要的依赖项。

sudo apt update
sudo apt install python3 python3-pip nginx

步骤 2: 设置虚拟环境并安装 Flask 应用

在服务器上设置一个虚拟环境,并在其中安装你的 Flask 应用及其依赖

# 安装虚拟环境工具
sudo apt install python3-venv

# 创建虚拟环境
python3 -m venv myprojectenv

# 激活虚拟环境
source myprojectenv/bin/activate

# 安装 Flask 和其他依赖
pip install flask gunicorn

步骤 3: 测试 Gunicorn 是否正常运行

在激活的虚拟环境中,尝试启动 Gunicorn 以确保 Flask 应用可以正常运行。

gunicorn --bind 0.0.0.0:8000 wsgi:app

这将启动 Gunicorn 并绑定到服务器的 8000 端口。确保在 Flask 应用的根目录中有一个名为 wsgi.py 的文件,其中包含 Flask 应用对象。

步骤 4: 配置 Nginx

创建一个新的 Nginx 配置文件以处理对 Flask 应用的传入请求。

sudo nano /etc/nginx/sites-available/myproject


在编辑器中,添加以下配置:


server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

替换 your_domain.com 为你的域名或服务器的 IP 地址。

步骤 5: 激活 Nginx 配置并重新加载服务

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo nginx -t   # 检查 Nginx 配置是否正确
sudo systemctl restart nginx

步骤 6: 设置 Gunicorn 为系统服务

创建一个 systemd 单元文件以使 Gunicorn 成为系统服务。

sudo nano /etc/systemd/system/myproject.service


添加以下内容:

[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=yourusername
Group=yourgroupname
WorkingDirectory=/path/to/your/project
ExecStart=/path/to/your/virtualenv/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 wsgi:app

[Install]
WantedBy=multi-user.target

确保替换 yourusernameyourgroupname/path/to/your/project/path/to/your/virtualenv 为你的实际信息。

步骤 7: 启动 Gunicorn 服务

sudo systemctl start myproject
sudo systemctl enable myproject

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值