Ubuntu系統上部署Node.js項目的完整流程

以下是在Ubuntu系統上部署Node.js項目的完整流程,分為系統初始化、環境配置、項目部署三個部分:


一、系統初始化 & 環境準備

 

bash

# 1. 更新系統軟件包
sudo apt update && sudo apt upgrade -y# 2. 安裝基礎工具
sudo apt install -y build-essential git curl# 3. 安裝Node.js(推薦使用LTS版本)
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs# 驗證安裝
node -v && npm -v# 4. 全局安裝PM2進程管理工具
sudo npm install -g pm2# 設置PM2開機自啟
pm2 startup systemd
# 根據提示執行生成的命令(例如)
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu

二、上傳Node.js項目

方式1:通過SCP上傳(本地→服務器)
 

bash

# 本地終端執行(非服務器)
scp -r /本地/項目路徑 ubuntu@服務器IP:/目標路徑
方式2:通過Git克隆
 

bash

# 服務器操作
git clone https://github.com/你的倉庫地址.git
cd 項目目錄

三、項目部署流程

 

bash

# 1. 進入項目目錄
cd /path/to/your/project# 2. 安裝項目依賴
npm install# 3. 配置環境變量(按需)
# 方式1:直接寫入
echo "PORT=3000" > .env
# 方式2:手動創建.env文件并填寫配置# 4. 啟動項目(任選其一)
pm2 start app.js              # 直接啟動js文件
pm2 start "npm start" --name "my-app"  # 啟動npm腳本
pm2 start ecosystem.config.js # 使用配置文件# 5. 保存PM2進程列表
pm2 save# 6. 查看運行狀態
pm2 list
pm2 logs

四、網絡配置(可選)

1. 開放防火墻端口
 

bash

sudo ufw allow 22    # SSH端口(已默認開放)
sudo ufw allow 3000  # 應用端口
sudo ufw enable
2. 配置Nginx反向代理(推薦)
 

bash

# 安裝Nginx
sudo apt install -y nginx# 創建配置文件
sudo nano /etc/nginx/sites-available/your-domain.conf

配置文件內容示例:

 

nginx

server {listen 80;server_name your-domain.com;location / {proxy_pass http://localhost:3000;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}
}

啟用配置并重啟Nginx:

 

bash

sudo ln -s /etc/nginx/sites-available/your-domain.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
3. 配置SSL證書(Let's Encrypt)
 

bash

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com

五、常用維護命令

 

bash

# 查看實時日志
pm2 logs# 重啟應用
pm2 restart app-name# 停止應用
pm2 stop app-name# 刪除應用
pm2 delete app-name# 更新項目代碼后的操作
git pull
npm install
pm2 restart all

注意事項:?

  1. 確保項目中的監聽地址為?0.0.0.0?而非?127.0.0.1
  2. 生產環境建議使用NODE_ENV=production
  3. 敏感信息(如API密鑰)務必通過.env文件管理
  4. 建議使用npm ci代替npm install保持依賴一致性

按照以上步驟操作,即可完成從零開始到生產環境部署的完整流程。

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

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

相關文章

Android內存優化指南:從數據結構到5R法則的全面策略

目錄 一、APP 內存限制 二、內存的三大問題 2.1、內存抖動(Memory Churn) 2.1.1 頻繁創建短生命周期對象 2.1.2 系統API或第三方庫的不合理使用 2.1.3 Handler使用不當 2.2、內存泄漏(Memory Leak) 2.2.1 靜態變量持有Activity或Context引用 2.2.2 未取消的回調或…

ffmpeg源碼編譯支持cuda

1.安裝cuda CUDA Toolkit 11.3 Downloads | NVIDIA Developer 在選擇組件的時候,將CUDA中的Nsight VSE和Visual Studio Integration取消勾選 不然會安裝失敗 2.編譯ffmpeg 把cuda編譯宏定義開啟,再編譯avcodec 3.編譯livavutil報錯struct "Cuda…

Git強制覆蓋分支:將任意分支完全恢復為main分支內容

Git強制覆蓋分支:將任意分支完全恢復為main分支內容 場景背景完整操作步驟一、前置準備二、操作流程步驟 1:更新本地 main 分支步驟 2:強制重置目標分支步驟 3:強制推送至遠程倉庫 三、操作示意圖 關鍵風險提示(必讀&a…

【Java反序列化測試】

Java反序列化測試 1. 識別反序列化入口點2. 構造探測Payload3. 發送Payload并觀察結果4. 繞過可能的防護5. 自動化工具注意事項總結 Java反序列化測試: 1. 識別反序列化入口點 常見入口: HTTP請求參數(如POST數據、Cookie、Headers&#xff…

golang的io

https://www.bilibili.com/list/BV1gx4y1r7xb 1. 原生io包 io包是Go語言標準庫中底層的I/O接口層,定義了通用的讀寫規則和錯誤處理邏輯。每次讀寫都是直接調用底層系統 I/O,每次讀取1字節,系統調用次數多。適用于小數據量、實時性要求高。io…

【北京迅為】iTOP-RK3568OpenHarmony系統南向驅動開發-第4章 UART基礎知識

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工藝,搭載一顆四核Cortex-A55處理器和Mali G52 2EE 圖形處理器。RK3568 支持4K 解碼和 1080P 編碼,支持SATA/PCIE/USB3.0 外圍接口。RK3568內置獨立NPU,可用于輕量級人工…

【計算機網絡入門】初學計算機網絡(十)(重要)

目錄 1. 網絡層的作用 2. IPV4 2.1 IP 數據報格式 2.2 IP地址分類方案 2.3 數據的轉發 2.4 特殊用途的IP地址 3. 子網劃分和子網掩碼 3.1 子網劃分 3.2 子網掩碼 1. 網絡層的作用 按照教學五層模型,應用層、傳輸層、網絡層、數據鏈路層、物理層&#xff…

機器學習(五)

一,多類(Multiclass) 多類是指輸出不止有兩個輸出標簽,想要對多個種類進行分類。 Softmax回歸算法: Softmax回歸算法是Logistic回歸在多類問題上的推廣,和線性回歸一樣,將輸入的特征與權重進行…

基于 Vue 和 SSM 的前后端分離項目實戰:登錄與注冊功能實現

文章目錄 前言項目概述前端部分(Vue)1. 項目初始化2. 頁面布局Login.vueRegister.vue 3. 路由配置4. 主組件 后端部分(SSM)1. 項目結構2. 數據庫設計3. MyBatis 配置4. DAO 層5. Service 層6. Controller 層7. 配置文件8. Spring …

Windows安裝nvm【超詳細圖解】

目錄 前言 一、NVM下載 方式一:官網下載 方式二:GitHub 下載 二、NVM安裝 鏡像源配置 三、Node安裝 四、環境變量配置 前言 NVM(Node Version Manager)是一個命令行工具,用于在一臺計算機上輕松管理和切換多…

KVM虛擬機磁盤創建探究-2

使用 virt-install 命令自動創建磁盤鏡像和使用 qemu-img 手動創建磁盤鏡像,在磁盤鏡像本身格式和基本功能上是一致的,但在一些特性如初始占用磁盤空間、創建時的可配置性等方面存在區別,下面以 QCOW2 格式磁盤鏡像為例進行詳細說明。 初始占…

京準電鐘:NTP校時服務器于安防監控系統應用方案

京準電鐘:NTP校時服務器于安防監控系統應用方案 京準電鐘:NTP校時服務器于安防監控系統應用方案 NTP校時服務器在安防監控系統中的應用方案主要通過高精度時間同步技術,解決設備間時間差異問題,確保日志、錄像等數據的時間一致性…

遞歸遍歷目錄 和 普通文件的復制 [Java EE]

遞歸遍歷目錄 首先 先列出當前目錄所包含的內容 File[] files currentDir.listFiles();if (files null || files.length 0) {// 若是空目錄或非法目錄, 則直接返回return;} 然后 遍歷列出的文件, 分情況兩種討論 for (File f: files) {// 加個日志, 方便查看程序執行情…

NO.19十六屆藍橋杯模擬賽第三期上

1 如果一個數 p 是個質數&#xff0c;同時又是整數 a 的約數&#xff0c;則 p 稱為 a 的一個質因數。 請問&#xff0c; 2024 的最大的質因數是多少&#xff1f; 答&#xff1a;23 #include <bits/stdc.h> using namespace std;int main() {ios::sync_with_stdio(false)…

Linux網絡_應用層自定義協議與序列化_守護進程

一.協議 協議是一種 "約定". socket api 的接口, 在讀寫數據時, 都是按 "字符串" 的方式來發送接 收的. 如果我們要傳輸一些 "結構化的數據" 怎么辦呢? 其實&#xff0c;協議就是雙方約定好的結構化的數據 像下面&#xff0c;兩端都知道數據結構…

SQL命令詳解之多表查詢(連接查詢)

目錄 1 簡介 2 內連接查詢 2.1 內連接語法 2.2 內連接練習 3 外連接查詢 3.1 外連接語法 3.2 外連接練習 4 總結 1 簡介 連接的本質就是把各個表中的記錄都取出來依次匹配的組合加入結果集并返回給用戶。我們把 t1 和 t2 兩個表連接起來的過程如下圖所示&#xff1a; …

001-碼云操作

碼云操作 一、配置公鑰1.官網地址1.進入 git bash2.查看生成的公鑰3.設置到 Gitee4.測試 二、初始化一個項目1.新建倉庫 一、配置公鑰 方便后續提交代碼不用填寫密碼 1.官網地址 官網地址&#xff1a;https://gitee.com/Git碼云教程&#xff1a;https://gitee.com/help/arti…

30.[前端開發-JavaScript基礎]Day07-數組Array-高階函數-日期Date-DOM

JavaScript的DOM操作 &#xff08;一&#xff09; 1 什么是DOM&#xff1f; 認識DOM和BOM 深入理解DOM 2 認識DOM Tree DOM Tree的理解 3 DOM的整體結構 DOM的學習順序 DOM的繼承關系圖 document對象 4 節點、元素導航 節點&#xff08;Node&#xff09;之間的導航&…

【自學筆記】Spring基礎知識點總覽-持續更新

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 Spring 基礎知識點總覽1. Spring 框架簡介2. IoC&#xff08;控制反轉&#xff09;與 DI&#xff08;依賴注入&#xff09;2.1 IoC 容器2.2 依賴注入方式示例代碼&a…

WordPress多語言插件GTranslate

GTranslate是一個免費的WordPress多語言插件&#xff0c;它允許您將網站內容翻譯成多種語言。這個插件提供了一個簡單易用的界面&#xff0c;讓您可以在WordPress后臺直接進行翻譯操作。以下是GTranslate插件的一些主要特點&#xff1a; 免費使用&#xff1a;GTranslate插件完…