使用PM2部署Next服务

使用 PM2 部署 Next 服务

最近阿里云 99 服务器比较火,我也买了一个玩玩,感觉不错,自用足矣,平常写点东西,部署一些服务,用着也挺舒服。

最近学习的 Next 框架,感觉挺好用,就打算部署一个人博客,但是部署到服务器上。

部署的的时候发现,对比 Vercel,服务器的部署方式有点麻烦,需要安装 Node、然后还要安装 PM2 管理进程,于是就打算写一篇文章记录一下。

准备

首先,你需要准备一台服务器,我这里使用的是阿里云服务器,如果你需要购买的话,我还是推荐阿里云 99 一年,可续 4 年。

服务器是安装的 CentOS, 购买后直接设置密码,然后使用 Xshell 连接服务器。

安装 Node、PM2

首先登陆到服务器:

css 复制代码
ssh username@ip

回车输入密码即可,然后安装 Node

sql 复制代码
sudo apt-get update
sudo apt-get install nodejs

安装成功后,使用命令查看版本:

复制代码
node -v
npm -v

版本号显示出来,说明安装成功。

PM2 是一个轻量级的、开源的管理工具,可用于快速、安全地启动和管理 Node.js 应用程序。安装 PM2 很简单,你可以使用以下命令来安装:

复制代码
sudo npm install pm2 -g

然后使用命令查看版本:

复制代码
pm2 -version

版本号显示出来,说明安装成功。

部署 Next 服务

首先使用 FTP 工具,将项目上传到服务器,我这里使用的是 FileZilla,上传成功后,使用命令进入项目目录:

bash 复制代码
cd /home/www/next-blog

运行打包命令:

arduino 复制代码
npm install
npm run build

启动 Next 服务

sql 复制代码
pm2 start --name yourappname npm -- start

启动成功后,使用命令查看服务状态:

lua 复制代码
pm2 status

如果看到类似下面的信息,说明启动成功:

然后就可以通过 ip:port 访问了,比如我的 ip 是 123.123.123.123,端口是 3000,那么访问地址就是: http://123.123.123.123:3000 然后打开浏览器,然后就可以看到页面了。

如果看不到,那可能是安全组没看,需要到服务设置里查询一下安全组,放开之后就可以正常访问了。

常用命令

登陆

css 复制代码
ssh username@ip

查询端口并关闭:

查找占用目标端口的进程可以使用

css 复制代码
sudo lsof -i :端口号

命令来查找占用目标端口的进程,其中端口号是你想要关闭的端口的实际数字。该命令会列出占用该端口的进程的详细信息,包括进程 ID(PID)和进程名称。

关闭占用端口的进程可以使用

bash 复制代码
sudo kill -9 进程ID

命令来关闭占用端口的进程,其中进程 ID 是上一步中找到的占用端口的进程的 ID。该命令会强制终止该进程,释放端口。

确认端口已关闭 为了确认端口已经成功关闭,可以再次使用

css 复制代码
sudo lsof -i :端口号

命令来查找该端口的占用情况。如果没有输出结果,说明该端口已经成功关闭。

PM2 常用命令

PM2 是一个流行的进程管理器,它可以帮助你管理和维护在服务器上运行的应用程序。 以下是一些常用的 PM2 命令:

  • pm2 start <app_name>:启动一个应用程序。
  • pm2 restart <app_name>:重启一个应用程序。
  • pm2 stop <app_name>:停止一个应用程序。
  • pm2 delete <app_name>:删除一个应用程序。
  • pm2 show <app_name>:展示一个应用程序的详情。
  • pm2 list:列出所有正在运行的应用程序。
  • pm2 monit:监视所有应用程序的 CPU 和内存使用情况。
  • pm2 logs:显示所有应用程序的日志。
  • pm2 flush:清空所有应用程序的日志。
  • pm2 save:保存当前应用程序列表。
  • pm2 resurrect:重新加载保存的应用程序列表。
  • pm2 update:保存当前进程,杀死 PM2,并恢复进程。
相关推荐
雨季mo浅忆13 小时前
记录Node.js安全漏洞及其内置Brotli解码器问题
node.js·安全性测试
tommyjiatong13 小时前
资安底座连环雷:从 PHP2Shell 到 Node2Shell
node.js·php
SEO_juper16 小时前
Bash 交叉验证 robots.txt 和 sitemap:两个文件自相矛盾,页面永远收录不了
开发语言·python·node.js·json·bash
SEO_juper17 小时前
Go 站点地图生成器:从首页爬全站,一键生成 sitemap.xml
xml·开发语言·人工智能·golang·node.js·seo·外贸独立站
Moshow郑锴1 天前
Ansible 批量部署 Node.js 服务:ZIP 直解与共享目录分发两种方案对比
node.js·ansible
少年的范儿2 天前
Windows 安装 Node.js 教程:nvm 版本管理 + pnpm 安装配置
windows·npm·node.js
peach2 天前
同样是装依赖,为什么 npm 长成 node_modules,Maven 长成 .m2
npm·node.js·maven
FungLeo2 天前
成为全栈·Go 后端篇·重写之前先锁基线:契约、Node 版本与行为清单
golang·node.js·go·openapi·契约测试·成为全栈
FungLeo2 天前
成为全栈·Go 后端篇·契约一致性与差分测试:两套实现如何互相校验
golang·node.js·go·合约测试·差分测试·成为全栈·api兼容
月夏3 天前
前端第一次接自己的后端:mock 切真接口踩了 2 个坑,组件只改了一行 import
前端·后端·node.js