利用systemd啟動部署在服務器上的web應用

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 # 查看運行狀態

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81387.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81387.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81387.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在vue3中使用Cesium的保姆教程

1. 軟件下載與安裝 1. node安裝 Vue.js 的開發依賴于 Node.js 環境,因此我們首先需要安裝 Node.js。Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環境,它允許你在服務器端運行 JavaScript 代碼,同時也為前端開發提供了強大的工具支…

基于LabVIEW的雙音多頻系統設計

目錄 1 系統設計概述 雙音多頻(Dual-Tone Multi-Frequency, DTMF)信號是一種廣泛應用于電話系統中的音頻信號,通過不同的頻率組合表示不同的按鍵。每個按鍵對應兩個頻率,一個低頻和一個高頻,共同組成獨特的信號。在虛擬儀器技術快速發展的背景下,利用LabVIEW等圖形化編程…

【筆記】端口轉發

echo off :loop ssh -N -L 13306:192.168.0.3:23306 -o ServerAliveInterval60 admin192.168.0.2 timeout /t 5 goto loop 代碼功能剖析 1、基礎設置: echo off 此命令的作用是讓批處理腳本在執行過程中不顯示命令行,從而使輸出更為簡潔。 2、定義循環…

Flink Table SQL

Apache Flink 提供了強大的 Table API 和 SQL 接口,用于統一處理批數據和流數據。它們為開發者提供了類 SQL 的編程方式,簡化了復雜的數據處理邏輯,并支持與外部系統集成。 🧩 一、Flink Table & SQL 核心概念 概念描述Table…

【AWS入門】Amazon SageMaker簡介

【AWS入門】Amazon SageMaker簡介 [AWS Essentials] Brief Introduction to Amazon SageMaker By JacksonML 機器學習(Machine Learning,簡稱ML) 是當代流行的計算機科學分支技術。通常,人們在本地部署搭建環境,以滿足機器學習的要求。 AWS…

解決 Go 構建依賴超時問題:使用 GOPROXY 提升 Docker 構建穩定性

目錄 解決 Go 構建依賴超時問題:使用 GOPROXY 提升 Docker 構建穩定性 ? 問題背景 ? 正確做法:多階段中在 Go 階段設置 GOPROXY ? 實際收獲 🧪 小技巧:驗證 GOPROXY 設置是否生效 ? 總結 解決 Go 構建依賴超時問題&#x…

【周輸入】510周閱讀推薦-3

前文 【周輸入】510周閱讀推薦-1-CSDN博客 【周輸入】510周閱讀推薦-2-CSDN博客 本次推薦 目錄 前文 本次推薦 算法技術 模型產品 算法技術 vLLM和DeepSpeed部署模型的優缺點_vllm deepspeed-CSDN博客 優點缺點總結vLLM 適用于推理 優化內存管理 高效并行化 功能單…

Kubernetes控制平面組件:Kubelet詳解(七):容器網絡接口 CNI

云原生學習路線導航頁(持續更新中) kubernetes學習系列快捷鏈接 Kubernetes架構原則和對象設計(一)Kubernetes架構原則和對象設計(二)Kubernetes架構原則和對象設計(三)Kubernetes控…

【推薦】新準則下對照會計報表172個會計科目解釋

序號 科目名稱 對應的會計報表項目 序號 科目名稱 對應的會計報表項目   一、資產類     二、負債類   1 1001 庫存現金 貨幣資金 103 2001 短期借款 短期借款 2 1002 銀行存款 貨幣資金 104 2101 交易性金融負債 易性金融負債 3 1012 其他貨幣資…

MongoDB的安裝及簡單使用

MongoDB 是一個開源的文檔型 NoSQL 數據庫??,由 MongoDB Inc. 開發,專為靈活性和可擴展性設計。 特點: ??1.文檔模型??:數據以 BSON(二進制 JSON)格式存儲,支持嵌套結構。 ??2.動態 S…

Gartner《如何將生成式人工智能(GenAI)集成到應用架構》學習心得

針對軟件架構師、技術專業人士如何更好的把 GenAI 如何融入解決方案,提升用戶體驗、生產力并帶來差異化成果的趨勢,Gartner發布了《Integrating GenAI Into Your Application Architecture》研究報告。 報告首先介紹了 GenAI 的發展背景,指出其已成為主流趨勢,大型語言模型…

IDEA - Windows IDEA 代碼塊展開與折疊(基礎折疊操作、高級折疊操作)

一、基礎折疊操作 折疊當前代碼塊:Ctrl - # 操作方式按下 【Ctrl】 鍵,再按下 【-】 鍵展開當前代碼塊:Ctrl # 操作方式按下 【Ctrl】 鍵,再按下 【】 鍵折疊所有代碼塊:Ctrl Shift - # 操作方式按下 【Ctrl】…

基于STM32F103與Marvell88W8686的WIFI無線監控視頻傳輸系統研發(論文)

基于STM32F103與Marvell88W8686的WIFI無線監控視頻傳輸系統研發 中文摘要 在當今社會信息化進程不斷加速的時代背景下,眾多領域對于監控系統的需求日益增長,像車內安全監控、電梯運行監控等場景都離不開監控系統的支持。過去,不少領域普遍采用…

Java基礎知識總結(超詳細整理)

一:概述 1.1Java類及類的成員 屬性、方法、構造器、代碼塊、內部類 (1)數組 java虛擬機內存劃分 各區域作用 內存解析 基本使用 兩個變量指向一個一維數組 沒有new就不會在堆里新開辟空間 (2)對象數組 (3&a…

StarRocks Community Monthly Newsletter (Apr)

版本動態 3.4.3 版本更新 核心功能升級 Routine Load和Stream Load新增Lambda表達式支持,支持復雜的列數據提取 增強JSON數據處理能力,支持將JSON Array/Object轉為ARRAY/MAP類型 優化information_schema.task_runs視圖查詢,新增LIMIT支持…

探索AI新領域:生成式人工智能認證(GAI認證)助力職場發展

在數字化時代的大潮中,人工智能(AI)技術以其強大的影響力和廣泛的應用前景,正逐步重塑我們的生活與工作方式。隨著生成式AI技術的崛起,掌握這一前沿技能已成為職場競爭中的關鍵優勢。那么,如何通過系統的學…

數據庫觸發器Trigger

在數據庫管理系統中,觸發器(Trigger)是一種特殊的存儲過程,它在特定的事件發生時自動執行。觸發器通常用于維護數據的完整性和一致性。通過事件觸發而被執行,不能直接調用。 觸發器的三要素 觸發事件 before/after&a…

如何利用 Java 爬蟲獲得某書筆記詳情:實戰指南

在知識分享和學習的領域,許多平臺提供了豐富的書籍筆記和學習資源。通過 Java 爬蟲技術,我們可以高效地獲取這些筆記的詳細信息,以便進行進一步的分析和整理。本文將詳細介紹如何利用 Java 爬蟲獲取某書筆記詳情,并提供完整的代碼…

主成分分析的應用之sklearn.decomposition模塊的PCA函數

主成分分析的應用之sklearn.decomposition模塊的PCA函數 一、模型建立整體步驟 二、數據 2297.86 589.62 474.74 164.19 290.91 626.21 295.20 199.03 2262.19 571.69 461.25 185.90 337.83 604.78 354.66 198.96 2303.29 589.99 516.21 236.55 403.92 730.05 438.41 225.80 …

【Redis】List 列表

文章目錄 初識列表常用命令lpushlpushxlrangerpushrpushxlpop & rpoplindexlinsertllen阻塞操作 —— blpop & brpop 內部編碼應用場景 初識列表 列表類型,用于存儲多個字符串。在操作和實現上,類似 C 的雙端隊列,支持隨機訪問(O(N)…