0.背景
系統環境: Ubuntu 22.04
web應用情況: 前后端分類,前端采用react,后端采用fastapi
1.具體配置
1.1 前端配置
開發態運行(啟動命令是npm run dev),創建systemd服務文件
sudo nano /etc/systemd/system/frontend.service
內容如下:
[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,那么你應該做如下修改
[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寫入:
#!/bin/bash
cd /home/yourweb/backend
source venv/bin/activate
exec uvicorn server:app --host 0.0.0.0 --port 8000 --workers 1
如果使用conda管理環境,腳本文件的內容寫入如下:
#!/bin/bashcd /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 看一下)
然后授予可執行權限
chmod +x /home/yourweb/backend/start_backend.sh
創建systemd服務文件
sudo nano /etc/systemd/system/backend.service
內容如下:
[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 前端服務啟停
命令如下:
sudo systemctl daemon-reload
sudo systemctl start frontend
sudo systemctl enable frontend
sudo systemctl status frontend #查看運行狀態
2.2 后端服務啟停
命令如下:
sudo systemctl daemon-reload
sudo systemctl start backend
sudo systemctl enable backend
sudo systemctl status backend # 查看運行狀態