在Ubuntu上構建JavaScript項目(涵蓋Node.js后端、React/Vue前端或NestJS等框架),需完成環境準備→項目初始化→依賴管理→構建配置→進程管理→部署優化六大步驟,以下是詳細指南:
JavaScript項目依賴Node.js運行時和npm包管理器。Ubuntu官方倉庫的版本較舊,推薦通過**NVM(Node Version Manager)**安裝最新穩定版,便于版本切換:
# 安裝NVM(需聯網)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
# 加載NVM環境(重啟終端或運行)
source ~/.bashrc
# 安裝最新LTS版本Node.js(如v18)
nvm install --lts
# 驗證安裝(應輸出版本號)
node -v # 示例:v18.17.1
npm -v # 示例:9.6.7
注:若需安裝特定版本(如v16),可替換為
nvm install 16
。
通過package.json
管理項目元數據和依賴,是JS項目的核心配置文件:
# 創建項目目錄并進入
mkdir my-js-project && cd my-js-project
# 初始化項目(-y自動接受默認配置)
npm init -y
此時會生成package.json
,包含項目名稱、版本、入口文件(main
)、依賴列表等字段。
根據項目類型安裝依賴,分為生產依賴(--save
,默認)和開發依賴(--save-dev
,僅開發時需要):
# 安裝Express框架(生產依賴,用于構建后端API)
npm install express --save
# 安裝ESLint(開發依賴,用于代碼質量檢查)
npm install eslint --save-dev
提示:若項目使用TypeScript,需安裝
typescript
、@types/node
等依賴;若為前端項目,需安裝react
、vue
等框架依賴。
在package.json
中定義腳本命令,簡化構建、啟動等任務;根據需要配置構建工具(如Webpack、Babel):
{
"scripts": {
"start": "node index.js", // 啟動生產環境
"dev": "nodemon index.js", // 開發環境(自動重啟)
"build": "tsc", // TypeScript編譯(若有)
"lint": "eslint src/" // 代碼檢查
},
"devDependencies": {
"nodemon": "^3.0.0", // 開發時自動重啟工具
"eslint": "^8.0.0" // 代碼檢查工具
}
}
注:若項目為前端項目(如React),需配置Webpack的
webpack.config.js
,并通過npm run build
編譯為生產代碼;若為NestJS項目,需運行npm run build
編譯TypeScript為JavaScript。
PM2是Node.js進程管理器,可實現自動重啟(崩潰后自動恢復)、日志管理、集群模式(多核CPU優化)等功能:
# 全局安裝PM2
sudo npm install -g pm2
# 啟動應用(假設入口文件為index.js,服務名稱為my-app)
pm2 start index.js --name "my-js-app"
# 查看進程狀態(確認應用運行中)
pm2 status
# 生成開機自啟配置(避免服務器重啟后進程終止)
pm2 startup
# 保存當前進程列表(需運行pm2 startup后執行)
pm2 save
提示:常用命令還包括
pm2 logs
(查看實時日志)、pm2 restart my-js-app
(重啟應用)、pm2 stop my-js-app
(停止應用)。
為提升安全性與可訪問性,需通過Nginx反向代理將請求轉發到Node.js應用,并配置防火墻開放端口:
# 安裝Nginx
sudo apt update && sudo apt install nginx
# 開放HTTP(80)和HTTPS(443)端口
sudo ufw allow 'Nginx Full'
# 配置Nginx反向代理(編輯默認站點配置)
sudo nano /etc/nginx/sites-available/default
在server
塊中添加以下內容(替換your-domain.com
為服務器IP或域名):
location / {
proxy_pass http://localhost:3000; # 轉發到Node.js應用端口
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:
sudo systemctl restart nginx
注:若需啟用HTTPS,可通過Let’s Encrypt免費獲取SSL證書,配置Nginx支持HTTPS。
通過以上步驟,即可在Ubuntu上完成JS項目的構建、運行與部署。根據項目類型(如Next.js、NestJS),需調整部分配置(如Next.js的next build
命令),但核心流程一致。