目录
引言
在当今的互联网开发中,将本地开发的项目部署到云服务器是一个关键步骤,它使得应用能够被全球用户访问。本次部署过程涵盖了从服务器配置、代码上传、依赖安装、进程管理到安全防护的全流程。通过使用 SSH 远程连接服务器、Node.js 运行后端服务、PM2 管理进程,并配置 UFW 防火墙 和 云平台安全组,我们成功将一个 Node.js 应用部署到了云服务器上,并通过公网 IP 实现了外部访问。
这一过程不仅涉及基础的环境搭建,还包括了生产环境下的优化与安全考量,如 进程守护、开机自启、日志监控 等。通过本次实践,我们能够更深入地理解服务器部署的核心步骤,并为后续的 DevOps 和自动化部署打下基础。
第一步: 重置密码
设置好密码,等下连接服务器,需要输入密码。
第二步:连接到服务器
在Windows上,您可以使用PowerShell或命令提示符:
ssh root@123.60.165.250
连接成功后,您会看到Linux命令行界面
第三步:安装必要软件
这个是云服务器的公网IP地址。
输入以下命令更新系统并安装Node.js:
sudo apt update
sudo apt upgrade -y
如果有冲突可以选择"keep the local version currently installed"(保留当前安装的本地版本)
云服务提供商可能已经为安全和远程访问配置了特定设置。更改SSH配置可能会影响您连接到服务器的能力,对于标准部署来说,默认的SSH配置通常足够了。
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs git
node -v
npm -v
第四步:创建项目目录
第五步:将代码上传到服务器
现在我们需要将项目代码上传到服务器。由于已经连接到了服务器,所以这个终端不关闭,等下还要安装依赖。
1、安装 FileZilla
FileZilla传送🚪
2、打开FileZilla,连接到您的服务器:
3、连接后,导航到您本地的项目目录
我上传完成啦。
4、在服务器上运行:
打开刚刚的控制台,如果像我这样,看绿色的,突然变回86187了,就是没连上服务器。
SSH连接被重置了,这是正常现象,不用担心。需要重新连接到服务器。
ssh root@123.60.165.250
进入目录
cd /opt/zh-telephone
npm install
如果遇到"npm command not found"错误,需要先安装Node.js:
sudo apt update
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
第六步:安装PM2并启动服务
1、安装PM2进程管理器
sudo npm install -g pm2
2、启动服务器
pm2 start server/index.js --name zh-telephone-server
3、设置开机自启
pm2 save
pm2 startup
第七步、配置防火墙
1、开放应用端口
sudo apt install -y ufw
sudo ufw allow ssh
sudo ufw allow 5000 # 假设您的应用运行在5000端口
sudo ufw enable
关于选择端口:
云服务器和本地机器是完全独立的系统,每个系统有自己的端口空间。
云服务器的 5000 端口只在云服务器上监听,不会影响本地机器。
但是,如果用户的前端应用在本地开发时也使用 5000 端口,那么确实可能会有冲突。在这种情况下,用户可以考虑在云服务器上使用不同的端口,或者确保本地开发服务器和云服务器不会同时运行。
第八步、检查服务器是否正常运行:
pm2 status
查看日志
pm2 logs zh-telephone-server
第九步、云服务器安全组配置
您需要在云服务器控制台中配置安全组规则,允许5000端口的入站流量:
1、登录云服务器控制台
2、找到"安全组"或"防火墙"设置
3、添加一条规则,允许TCP 5000端口的入站流量
4、访问http://123.60.165.250:5000/
总结
本次Node.js应用部署实践完整走通了从本地开发到云服务器上线的全流程,包括服务器SSH连接、Node.js环境搭建、代码上传、PM2进程管理、防火墙配置等关键环节。通过系统性的操作,不仅成功实现了应用的公网访问,更深入理解了生产环境部署的核心要点:使用PM2守护进程确保服务稳定性,配置UFW防火墙和云平台安全组构建双重防护,以及通过日志监控实时掌握运行状态。这次实践既巩固了基础的Linux服务器操作技能,也为后续探索Nginx反向代理、Docker容器化等进阶部署方案奠定了坚实基础,完整展现了从开发到上线的标准化部署路径,对构建可靠的Web服务具有重要意义。