温馨提示×

CentOS下Node.js项目怎么部署

小樊
97
2025-03-31 16:01:34
栏目: 编程语言

在CentOS下部署Node.js项目可以通过以下步骤实现:

1. 安装Node.js和npm

  • 使用EPEL安装

    1. 更新系统包:
      sudo yum update
      
    2. 安装EPEL(Extra Packages for Enterprise Linux)仓库:
      sudo yum install epel-release
      
    3. 安装Node.js和npm:
      sudo yum install nodejs npm
      
    4. 验证安装:
      node -v
      npm -v
      
  • 使用NVM安装(推荐):

    1. 下载并安装NVM:
      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
      
    2. 加载NVM脚本:
      source ~/.bashrc
      
    3. 列出可用的Node.js版本:
      nvm ls-remote
      
    4. 安装指定版本的Node.js:
      nvm install 16.20.0
      
    5. 设置默认版本:
      nvm alias default 16.20.0
      
    6. 验证安装:
      node -v
      

2. 配置环境变量

  • 编辑/etc/profile文件,添加以下内容:
    export NODE_HOME=/usr/local/node-v16.20.0-linux-x64
    export PATH=$PATH:$NODE_HOME/bin
    
  • 使环境变量生效:
    source /etc/profile
    
  • 验证环境变量设置是否成功:
    echo $NODE_HOME
    echo $PATH
    

3. 安装Node.js项目依赖

  • 进入Node.js项目的根目录,运行:
    npm install
    

4. 使用PM2管理Node.js进程

  • 全局安装PM2:
    npm install -g pm2
    
  • 使用PM2启动Node.js应用:
    pm2 start app.js
    
  • 设置PM2开机自启动:
    pm2 startup
    
  • 查看应用状态:
    pm2 status
    

5. 配置Nginx反向代理(可选)

  • 安装Nginx:
    sudo yum install nginx
    
  • 启动并启用Nginx:
    sudo systemctl start nginx
    sudo systemctl enable nginx
    
  • 配置Nginx反向代理:
    • 编辑Nginx配置文件,通常位于/etc/nginx/conf.d/目录下,创建一个新文件(如myapp.conf),并添加以下内容:
      server {
        listen 80;
        server_name example.com www.example.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 http_host;
          proxy_cache_bypass http_upgrade;
        }
      }
      
    • 重启Nginx以应用更改:
      sudo systemctl restart nginx
      

6. 配置域名和SSL证书(可选)

  • 在DNS提供商处配置DNS记录,将域名指向你的服务器IP地址。
  • 申请域名证书并配置Nginx以使用HTTPS。

通过以上步骤,你可以在CentOS上成功部署Node.js项目。如果有任何问题,请参考相关文档或寻求社区帮助。

0