Linux环境下Node.js应用的部署指南
本文提供了在Linux环境下部署Node.js应用的详细指南,确保系统已安装Node.js和npm(Node.js包管理器),可以通过官方源或版本管理工具(如nvm)进行安装,创建项目目录并初始化项目,使用npm init
生成package.json
文件,安装项目依赖包,通过npm install
命令完成,对于生产环境,建议使用PM2等进程管理工具来启动和管理Node.js应用,确保应用在后台稳定运行,配置Nginx作为反向代理服务器,将外部请求转发到Node.js应用,并启用SSL证书以保障数据传输安全,通过防火墙设置开放必要的端口(如80和443),并定期更新依赖包以修复安全漏洞,通过以上步骤,可以在Linux环境下高效、安全地部署Node.js应用。
环境准备
在部署Node.js应用之前,首先需要确保Linux服务器上已安装了必要的软件和工具,以下是基本的准备工作:
-
安装Node.js和npm
Node.js是运行应用的核心,而npm(Node Package Manager)则是管理依赖包的工具,可以通过以下命令安装Node.js和npm:sudo apt update sudo apt install nodejs npm
安装完成后,可以通过以下命令检查版本:
node -v npm -v
如果需要安装特定版本的Node.js,可以使用
nvm
(Node Version Manager)来管理多个Node.js版本。 -
安装Git
Git是版本控制工具,用于从代码仓库中拉取应用代码,安装Git的命令如下:sudo apt install git
-
安装PM2
PM2是一个Node.js应用的进程管理工具,可以帮助我们管理应用的启动、停止、重启以及日志记录等,安装PM2的命令如下:sudo npm install -g pm2
应用代码部署
在环境准备完成后,接下来是将应用代码部署到服务器上,通常有以下几种方式:
-
通过Git拉取代码
如果应用代码托管在Git仓库中,可以通过以下命令将代码拉取到服务器上:git clone https://github.com/your-repo/your-app.git cd your-app
拉取代码后,进入项目目录并安装依赖:
npm install
-
通过FTP上传代码
如果代码没有托管在Git仓库中,可以通过FTP工具将代码上传到服务器上,上传完成后,同样需要进入项目目录并安装依赖。 -
通过CI/CD工具自动部署
对于更复杂的项目,可以使用CI/CD工具(如Jenkins、GitLab CI等)来自动化部署流程,这些工具可以在代码提交后自动拉取代码、运行测试、构建应用并部署到服务器上。
配置环境变量
在部署过程中,通常需要配置一些环境变量,如数据库连接字符串、API密钥等,这些变量不应直接写在代码中,而是通过环境变量来管理,可以通过以下方式配置环境变量:
-
使用
.env
文件
在项目根目录下创建一个.env
文件,并在其中定义环境变量:DB_HOST=localhost DB_USER=root DB_PASS=password
然后在代码中使用
process.env
来读取这些变量。 -
通过命令行设置
在启动应用时,可以通过命令行设置环境变量:DB_HOST=localhost DB_USER=root DB_PASS=password node app.js
-
通过PM2设置
如果使用PM2管理应用,可以通过以下命令设置环境变量:pm2 start app.js --env production
并在
ecosystem.config.js
中定义环境变量:module.exports = { apps: [ { name: 'my-app', script: 'app.js', env: { DB_HOST: 'localhost', DB_USER: 'root', DB_PASS: 'password', }, }, ], };
启动应用
在完成环境变量配置后,可以通过以下命令启动应用:
pm2 start app.js
PM2会自动管理应用的进程,并在应用崩溃时自动重启,可以通过以下命令查看应用状态:
pm2 list
配置反向代理
为了让外部用户能够访问应用,通常需要配置反向代理服务器(如Nginx)来将请求转发到Node.js应用,以下是配置Nginx的基本步骤:
-
安装Nginx
通过以下命令安装Nginx:sudo apt install nginx
-
配置Nginx
编辑Nginx配置文件(通常位于/etc/nginx/sites-available/default
),并添加以下内容: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; } }
your-domain.com
是你的域名,http://localhost:3000
是Node.js应用的地址。 -
重启Nginx
配置完成后,重启Nginx以应用更改:sudo systemctl restart nginx
监控与日志管理
在应用上线后,监控和日志管理是确保应用稳定运行的重要环节,PM2提供了丰富的监控和日志管理功能:
-
查看日志
可以通过以下命令查看应用的实时日志:pm2 logs
-
监控应用状态
可以通过以下命令查看应用的CPU和内存使用情况:pm2 monit
-
设置日志轮转
为了防止日志文件过大,可以设置日志轮转:pm2 install pm2-logrotate pm2 set pm2-logrotate:max_size 10M pm2 set pm2-logrotate:retain 30