溫馨提示×

Node.js Linux部署實戰技巧

小樊
40
2025-07-01 11:41:49
欄目: 編程語言

在Linux上部署Node.js應用程序可以通過多種方式進行,以下是一些常見的部署實戰技巧:

安裝Node.js和npm

  • 使用包管理器安裝

    對于基于Debian的系統(如Ubuntu),可以使用以下命令:

    sudo apt update
    sudo apt install nodejs npm -y
    

    對于基于Red Hat的系統(如CentOS),可以使用以下命令:

    sudo yum install nodejs npm -y
    

    或者,如果你希望安裝特定版本的Node.js,可以使用NodeSource庫:

    curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
  • 使用NodeSource官方腳本

    這個方法最簡單,適用于Ubuntu、Debian、CentOS等。

    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    sudo apt install -y nodejs
    
  • 使用NVM(Node Version Manager)

    NVM是一個Node.js的版本管理工具,可以方便地在不同版本的Node.js之間切換。

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    source ~/.bashrc
    nvm install node
    

部署Node.js項目

  • 創建項目目錄

    mkdir myNodeApp
    cd myNodeApp
    
  • 初始化項目

    npm init -y
    
  • 上傳項目到服務器

    可以使用Git或者FTP/SCP將項目文件上傳到服務器。

  • 使用PM2管理Node.js服務

    PM2是一個非常流行的進程管理工具,適合生產環境。

    sudo npm install -g pm2
    pm2 start app.js
    pm2 status
    pm2 startup
    pm2 save
    

性能優化

  • 系統配置優化

    增加文件描述符限制:

    ulimit -n 65535
    

    調整內核參數:

    echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
    echo "net.ipv4.tcp_max_syn_backlog = 65535" >> /etc/sysctl.conf
    echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
    sysctl -p
    
  • Node.js應用程序代碼優化

    使用異步操作,減少內存使用,優化循環和遞歸,使用緩存。

  • 使用性能分析工具

    Node.js內置的性能分析工具:

    node --inspect-brk app.js
    

    第三方性能分析工具:

    • clinic.js
    • pm2
  • 使用集群模式

    利用多核CPU:

    const cluster = require('cluster');
    const http = require('http');
    const numCPUs = require('os').cpus().length;
    if (cluster.isMaster) {
      console.log(`Master ${process.pid} is running`);
      // Fork workers.
      for (let i = 0; i < numCPUs; i++) {
        cluster.fork();
      }
      cluster.on('exit', (worker, code, signal) => {
        console.log(`worker ${worker.process.pid} died`);
      });
    } else {
      // Workers can share any TCP connection
      // In this case it is an HTTP server
      http.createServer((req, res) => {
        res.writeHead(200);
        res.end('hello world
    

'); }).listen(8000); console.log(Worker ${process.pid} started); }


### 故障排查

- **查看錯誤日志**:

Node.js應用的錯誤通常記錄在日志文件中,常見的位置是 `/var/log/node-app.log` 或者應用的自定義日志路徑。
```bash
tail -f /var/log/node-app.log
  • 使用調試工具

    Node.js內置調試工具:

    node inspect app.js
    

    第三方調試工具:如ndb或node-inspector。

  • 代碼審查

    檢查未捕獲的異常,確保所有可能的異常都被捕獲和處理。

    process.on('uncaughtException', (err) => {
      console.error(err.message);
      process.exit(1);
    });
    

通過以上步驟和技巧,你可以在Linux上成功部署Node.js應用程序,并確保其高效穩定運行。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女