引言

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,与 Python 3.6+ 类型提示一起使用。Linux 系统作为其运行环境,具有高度的可定制性。本文将介绍如何在 Linux 系统上实现 FastAPI 应用程序的开机自启,确保每次系统启动时应用程序都能自动运行。

准备工作

在开始之前,请确保以下条件已经满足:

  1. 安装了 Python 3.6 或更高版本。
  2. 安装了 FastAPI 和 Uvicorn,这是 FastAPI 的 ASGI 服务器。
  3. 您的 FastAPI 应用程序已经构建并测试通过。

步骤一:创建启动脚本

首先,您需要创建一个启动脚本,该脚本将启动您的 FastAPI 应用程序。以下是一个基本的启动脚本示例:

#!/bin/bash # 启动脚本名称:fastapi-start.sh # 设置 FastAPI 应用的运行目录 cd /path/to/your/fastapi/app # 设置环境变量 export MY_ENV_VAR="my_value" # 运行 FastAPI 应用程序 uvicorn main:app --reload 

确保将 /path/to/your/fastapi/app 替换为您 FastAPI 应用的实际路径,并将 main:app 替换为您应用的模块名和应用程序实例。

步骤二:设置开机自启

Linux 系统提供了多种方式来实现开机自启,以下是在不同发行版中设置开机自启的方法:

对于 Debian/Ubuntu 系统

  1. 使用 systemd 服务管理器创建一个新的服务文件。
sudo nano /etc/systemd/system/fastapi.service 
  1. 在打开的文件中添加以下内容:
[Unit] Description=FastAPI Application After=network.target [Service] User=your_username Group=your_group WorkingDirectory=/path/to/your/fastapi/app Environment="MY_ENV_VAR=my_value" ExecStart=/usr/bin/python3 /path/to/your/script/fastapi-start.sh [Install] WantedBy=multi-user.target 

确保将 your_usernameyour_group/path/to/your/script/fastapi-start.sh 替换为您的实际用户名、用户组以及启动脚本的路径。

  1. 使服务文件生效并启动服务:
sudo systemctl daemon-reload sudo systemctl enable fastapi.service sudo systemctl start fastapi.service 

对于 CentOS/RHEL 系统

  1. 使用 systemd 服务管理器创建一个新的服务文件。
sudo nano /etc/systemd/system/fastapi.service 
  1. 在打开的文件中添加以下内容:
[Unit] Description=FastAPI Application After=network.target [Service] User=your_username Group=your_group WorkingDirectory=/path/to/your/fastapi/app Environment="MY_ENV_VAR=my_value" ExecStart=/usr/bin/python3 /path/to/your/script/fastapi-start.sh [Install] WantedBy=multi-user.target 

确保将 your_usernameyour_group/path/to/your/script/fastapi-start.sh 替换为您的实际用户名、用户组以及启动脚本的路径。

  1. 使服务文件生效并启动服务:
sudo systemctl daemon-reload sudo systemctl enable fastapi.service sudo systemctl start fastapi.service 

对于其他系统

如果您的系统不是 Debian/Ubuntu 或 CentOS/RHEL,您可能需要使用其他方法来设置开机自启,例如 crontab 或 init.d。

结论

通过上述步骤,您可以在 Linux 系统上轻松实现 FastAPI 应用程序的开机自启。这样,每次系统启动时,您的 FastAPI 应用程序都将自动运行,提供持续的服务。