【前端后端部署】將前后端項目部署到云服務器

? ? ? ? 更多筆記在這里? ?全棧之路: ? https://gitee.com/oldbe/notes???【跳轉到】
????????覺得有用請點個 star?,非常感謝!



現在AI太強大,開發個人產品的門檻和成本太低了,只要你有好的想法都可以很快速的開發一款產品

?1. 獲得服務器
?? ?

服務器最重要的就是穩定還有便宜;

這里推薦 ?雨云,便宜且穩定。我們公司生產環境一直用的也是雨云;
【專屬優惠鏈接,新用戶更便宜】https://www.rainyun.com/NjQ0NjI5_

優惠專享鏈接:雨云 - 新一代云服務提供商
輸入優惠碼【NjQ0NjI5】再減15%

2.連接到云服務器

使用連接工具連接即可

3.配置環境

3.1.Java(運行后端所需)

  • 安裝 OpenJDK (以 JDK8 為例)

sudo yum install java-1.8.0-openjdk -y
  • 驗證 Java 安裝

java -version

如果顯示 Java 版本信息,則安裝成功

3.2.MySQL數據庫

  • 安裝?MySQL

sudo yum install mysql-server -y
  • 啟動 MySQL

sudo systemctl start mysqld
  • 配置安全選項

sudo mysql_secure_installation
  • 登錄 MySQL 并創建數據庫

mysql -u root -p

3.3.Nginx(前端訪問后端需要)

  • 安裝 Nginx

sudo yum install nginx -y
  • 啟動并檢查 Nginx 服務

sudo systemctl start nginx  #啟動 Nginx
sudo systemctl enable nginx #設置自啟動
nginx -v  #查看版本

3.4.?Nodejs(構建前端所需)

  • 安裝 Node.js


curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs
  • 驗證安裝

node -v
npm -v

4.打包項目

4.1.打包后端項目

mvn clean package

jar 包在 target 目錄下

4.2.打包前端項目

npm run build:prod

Vite 默認會將打包后的靜態資源生成在 dist 文件夾中

5.上傳項目到服務器

5.1.上傳后端項目

  • 將?.jar?文件上傳到服務器

假設?.jar?文件路徑為?target/employment.jar,服務器目標路徑為?/opt/employment/

scp target/employment.jar user@your-server-ip:/opt/employment/

將?user?替換為你的服務器用戶名,your-server-ip?替換為服務器 IP 地址。

  • 確保?.jar?文件已經成功上傳到目標路徑?/opt/employment/

5.2.上傳前端項目

  • 將前端打包后的?dist?目錄上傳到服務器上:
scp -r dist user@your-server-ip:/var/www/html/

此命令會將前端項目的靜態資源上傳到服務器的?/var/www/html/?目錄,這個目錄是 Nginx 的默認訪問根目錄

6.配置后端服務

6.1.啟動后端應用

  • 在服務器上進入后端?.jar?文件所在目錄:
cd /opt/employment/
  • 啟動后端應用:
java -jar employment.jar

后端服務會啟動并監聽相應的端口,默認情況下是?8080。可以根據需要修改端口

  • 配置后端服務開機自啟動(使用?systemd):

創建一個新的?systemd?服務文件?/etc/systemd/system/employment.service,內容如下:

[Unit]
Description=Employment System Backend
After=network.target[Service]
User=root
ExecStart=/usr/bin/java -jar /opt/employment/employment.jar
SuccessExitStatus=143
TimeoutStopSec=10
Restart=always[Install]
WantedBy=multi-user.target

6.2.配置防火墻

確保服務器的防火墻允許訪問所需端口(如?8080?端口):


sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

7.配置 Nginx 反向代理

7.1.編輯 Nginx 配置

  • 打開 Nginx 配置文件:
sudo vim /etc/nginx/nginx.conf
  • 添加反向代理配置,將請求轉發到后端 Java 應用。假設后端應用運行在?8080?端口,配置如下:
server {listen 80;server_name your-domain.com;  # 替換為你的域名或 IPlocation / {root /var/www/html;   # 指向前端項目所在目錄index index.html;}location /api/ {proxy_pass http://localhost:8080;  # 將 /api 請求轉發到后端服務proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
  • 保存并退出后,檢查 Nginx 配置是否正確:
sudo nginx -t
  • 重新加載 Nginx 配置使更改生效:
sudo systemctl reload nginx

8.訪問應用

  1. 在瀏覽器中訪問你的服務器 IP 或域名,前端頁面應該能夠正常加載
  2. 后端 API 請求(如?/api/)會通過 Nginx 反向代理轉發到后端應用

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

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

相關文章

vue如何監聽localstorage

在Vue中監聽localStorage的變化可以通過幾種方式實現,但需要注意的是,localStorage本身不提供原生的事件監聽機制,如DOM元素的MutationObserver。不過,你可以通過一些間接的方法來監聽localStorage的變化。方法1:使用w…

灰狼算法+四模型對比!GWO-CNN-LSTM-Attention系列四模型多變量時序預測

摘要:聚劃算!大對比!灰狼算法四模型對比!GWO-CNN-LSTM-Attention系列四模型多變量時序預測,該代碼特別適合需要橫向對比不同深度學習模型性能的時序預測場景,研究者可通過參數快速適配不同預測需求&#xf…

冒泡排序實現以及優化

一,冒泡排序說明冒泡排序是從第一個元素開始和后面一個元素進行判斷是否滿足左小右大,如果不滿足就交換位置,再拿第二個和第三個進行上述操作一直到第n-1和第n個。經過上述的一輪操作就可以把第一個最大值放到最右邊,在進行n輪上述…

水下管道巡檢機器人cad【10張】三維圖+設計說明書

摘 要 水下管道是水下油氣管道的生命線,水下管道巡檢機器人可以替代人工完成水下油氣管道狀態的實時監測和數據反饋,有助于工作人員對水下油氣管道的運行情況實時掌握。 本文完成了水下管道巡檢機器人的總體設計,采用三維設計軟件Solidwor…

SQL(結構化查詢語言)的四大核心分類

這張圖展示了 SQL(結構化查詢語言)的四大核心分類,分別對應不同的數據庫操作場景。以下是逐類解析:1. 數據操作語言(DML:Data Manipulation Language)作用:用于操作數據庫中的數據&a…

AI(1)-神經網絡(正向傳播與反向傳播)

🍋🍋AI學習🍋🍋🔥系列專欄: 👑哲學語錄: 用力所能及,改變世界。 💖如果覺得博主的文章還不錯的話,請點贊👍收藏??留言📝支持一下博主…

嵌入式Linux學習 - 數據結構6

五、哈希表1. 哈希算法將數據通過哈希算法映射成一個鍵值,存取都在同一位置實現數據的高效存儲和查找將時間復雜度盡可能降低至O(1)2. 哈希碰撞多個數據通過哈希算法得到的鍵值相同,稱為產生哈希碰撞3. 哈希表構建哈希表存放0-100之間的數據將0 - 100之間…

GitHub 趨勢日報 (2025年08月07日)

📊 由 TrendForge 系統生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日報中的項目描述已自動翻譯為中文 📈 今日獲星趨勢圖 今日獲星趨勢圖1894nautilus_trader354stagehand315openai-cookbook263sim242ollama230prisma154v…

android 使用openimagelib OpenImage 實現點擊放大圖片,瀏覽

在 Android 中使用 OpenImageLib(假設這是一個開源圖片加載庫,類似于 Glide 或 Picasso)實現 點擊放大圖片并瀏覽 的功能,通常需要結合 圖片查看器庫(如 PhotoView)和 圖片加載庫(如 OpenImageLib)。以下是完整的實現方案: 1. 添加依賴 (1) 添加 OpenImageLib 依賴 …

計算機視覺CS231n學習(4)

深度學習軟件 (這一部分去看tensorflow和pytorch的筆記) (見專欄)tensorflow和pytorch區別 tensorflow,我們先構建顯示的圖,然后重復運行它 pytorch,我們每次做前向傳播時,都構建一個…

【具身智能】具身智能的革命——人形機器人如何重塑人類日常生活

還在為高昂的AI開發成本發愁?這本書教你如何在個人電腦上引爆DeepSeek的澎湃算力! 2025年被譽為具身智能的元年,人形機器人技術迅猛發展,將深刻改變人類生活方式。本文從具身智能的核心概念入手,探討人形機器人的硬件架構、感知系統、運動控制和決策算法等技術基礎。結合…

Jira Service Management企業服務管理:IT、HR、法務、財務等部門如何落地現代企業服務管理理念與實踐

Jira Service Management 服務管理方法Jira Service Management 服務管理方法將開發、IT運營和業務團隊整合至一個統一平臺,以實現更高效的協作。任何團隊都能夠快速響應業務變化,為客戶和員工提供卓越體驗。Jira Service Management 提供直觀、經濟高效…

軟件開發 - danger 與 dangerous、warn 與 warning

danger 與 dangerous 1、danger詞性:n.含義:指可能造成傷害或損失的情況或事物# 例詞in 【danger】(處于危險中) out of 【danger】(脫離危險)# 例句After the surgery, the doctor said the patient was o…

為何毫米波需要采用不同的DPD方法?如何量化其值?

摘要 在5G新無線電技術標準中,除了sub-6 GHz頻率外,還利用毫米波(mmWave)頻率來提高吞吐量。毫米波頻率的使用為大幅提高數據吞吐量帶來了獨特的機會,同時也帶來了新的實施挑戰。本文探討sub-6 GHz和毫米波基站無線電之間的架構差異&#xff…

【數據結構入門】棧和隊列的OJ題

目錄 1. 有效的括號 分析: 代碼: 2. 用隊列實現棧 分析: 代碼: 3. 用棧實現隊列 分析: 代碼: 4. 設計循環隊列 思路: 代碼: 定義循環隊列結構體: 初始化結…

#Datawhale AI夏令營#第三期全球AI攻防挑戰賽(AIGC技術-圖像方向)

本次題目來源于Datawhale AI夏令營第三期全球AI攻防挑戰賽圖像生成賽道。首先看一下賽題背景和要求。1.賽題相關大賽背景隨著大模型(Deepseek、GPT、LLaMA等)的爆發式應用,AI技術已深度融入金融、醫療、智能終端語音交互場等核心領域&#xf…

Compose筆記(四十二)--RangeSlider

這一節主要了解一下Compose中的RangeSlider,在Jetpack Compose中,RangeSlider是Material3庫提供的雙滑塊范圍選擇控件,用于在一個連續區間內選擇最小值和最大值。它能直觀地設置一個區間范圍,廣泛應用于篩選、過濾等場景,簡單總結…

window10本地運行datax與datax-web

搭建 dataX 前置條件 JDK(1.8以上,推薦1.8)Python(2或3都可以)Apache Maven 3.x (Compile DataX) 下載 datax 編譯好的包 https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz 進入目錄,使用 powershell 打開 執行解壓命令…

PDF注釋的加載和保存的實現

PDF注釋功能文檔 概述 本文檔詳細說明了PDF注釋功能的實現,包括注釋的加載和保存功能。該功能基于Android PDFBox庫實現,支持Ink類型注釋的讀取和寫入。 功能模塊 1. 注釋加載功能 (getAnnotation()) 功能描述 從PDF文件中加載已存在的注釋,并…

Linux環境下實現簡單TCP通信(c)

具體代碼實現 server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>#define PORT 8080 #define BUFFER_SIZE 1024void handle_client(int client_s…