0.背景
系统环境: Ubuntu 22.04
web应用情况: 前后端分类,前端采用react,后端采用fastapi
1.具体配置
1.1 前端配置
开发态运行(启动命令是npm run dev),创建systemd服务文件
bash
sudo nano /etc/systemd/system/frontend.service
内容如下:
bash
[Unit]
Description=React Frontend Dev Server
After=network.target
[Service]
User=youruser
WorkingDirectory=/home/yourusr/yourweb/frontend
ExecStart=/usr/bin/npm run dev
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
如果你使用了nvm来管理Node.js,那么你应该做如下修改
bash
[Unit]
Description=React Frontend Dev Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/yourusr/yourweb/frontend
Environment="NVM_DIR=/root/.nvm"
ExecStart=/bin/bash -c 'source $NVM_DIR/nvm.sh && nvm use 22.15.0 && npm run dev'
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
1.2后端配置
编写fastapi启动脚本,在/home/youruser/backend/start_backend.sh写入:
bash
#!/bin/bash
cd /home/yourweb/backend
source venv/bin/activate
exec uvicorn server:app --host 0.0.0.0 --port 8000 --workers 1
如果使用conda管理环境,脚本文件的内容写入如下:
bash
#!/bin/bash
cd /home/yourweb/backend
# 加载 conda 环境(确保 conda 可用)
source /home/youruser/miniconda3/etc/profile.d/conda.sh
# 激活 conda 虚拟环境
conda activate myenv
# 启动 Uvicorn
exec uvicorn server:app --host 0.0.0.0 --port 8000 --workers 1
Tip: 把 /home/youruser/miniconda3 替换为你实际的 conda 安装路径(可用 which conda 看一下)
然后授予可执行权限
bash
chmod +x /home/yourweb/backend/start_backend.sh
创建systemd服务文件
bash
sudo nano /etc/systemd/system/backend.service
内容如下:
bash
[Unit]
Description=FastAPI Backend Service
After=network.target
[Service]
Type=simple
User=youruser
ExecStart=/home/youruser/yourweb/backend/start_backend.sh
WorkingDirectory=/home/youruser/yourweb/backend
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
2.启停管理
2.1 前端服务启停
命令如下:
bash
sudo systemctl daemon-reload
sudo systemctl start frontend
sudo systemctl enable frontend
sudo systemctl status frontend #查看运行状态
2.2 后端服务启停
命令如下:
bash
sudo systemctl daemon-reload
sudo systemctl start backend
sudo systemctl enable backend
sudo systemctl status backend # 查看运行状态