Skip to content

Commit

Permalink
feat: 添加使用PM2部署Next服务
Browse files Browse the repository at this point in the history
  • Loading branch information
AnsonZnl committed Dec 15, 2023
1 parent 46a8857 commit b59215d
Show file tree
Hide file tree
Showing 5 changed files with 164 additions and 18 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

## 最新文章

- 2023 年 12 月 15 日 - [使用 PM2 部署 Next 服务](/docs/articles/Next/使用PM2部署Next服务)
- 2023 年 10 月 27 日 - [我的颈椎病腰突康复历程](/docs/life-essay/我的颈椎病腰突康复历程)
- 2023 年 10 月 18 日 - [为了方便写文章,我开发了一个目录树 🌲 生成器](/docs/articles/Next/为了方便写文章,我开发了一个目录树🌲生成器)
- 2023 年 09 月 17 日 - [如何将 Next.js 部署到 Github Pages](/docs/articles/Next/如何将Next.js部署到GithubPages)
Expand Down
4 changes: 4 additions & 0 deletions docs/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,10 @@ module.exports = {
text: "Node",
link: "/articles/Node/",
children: [
{
text: "使用PM2部署Next服务",
link: "/articles/Next/使用PM2部署Next服务.md",
},
{
text: "为了方便写文章,我开发了一个目录树🌲生成器",
link: "/articles/Next/为了方便写文章,我开发了一个目录树🌲生成器.md",
Expand Down
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ footer: MIT Licensed | Copyright © 2018-2023 AnsonZnl

## 最新文章

- 2023 年 12 月 15 日 - [使用 PM2 部署 Next 服务](/articles/Next/使用PM2部署Next服务)
- 2023 年 10 月 27 日 - [我的颈椎病腰突康复历程](/life-essay/我的颈椎病腰突康复历程.md)
- 2023 年 10 月 18 日 - [为了方便写文章,我开发了一个目录树 🌲 生成器](/articles/Next/为了方便写文章,我开发了一个目录树🌲生成器.md)
- 2023 年 09 月 17 日 - [如何将 Next.js 部署到 Github Pages](/articles/Next/如何将Next.js部署到GithubPages.md)
Expand Down
139 changes: 139 additions & 0 deletions docs/articles/Next/使用PM2部署Next服务.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
## 使用 PM2 部署 Next 服务

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

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

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

## 准备

首先,你需要准备一台服务器,我这里使用的是阿里云服务器,如果你需要购买的话,我还是推荐[阿里云 99 一年,可续 4 年](https://www.aliyun.com/minisite/goods?userCode=wd4lg1fn)

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

## 安装 Node、PM2

首先登陆到服务器:

```
ssh username@ip
```

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

```
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,上传成功后,使用命令进入项目目录:

```
cd /home/www/next-blog
```

运行打包命令:

```
npm install
npm run build
```

启动 Next 服务

```
pm2 start --name yourappname npm -- start
```

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

```
pm2 status
```

如果看到类似下面的信息,说明启动成功:
![image.png](https://s2.loli.net/2023/12/15/n68FDr3gkLPUzvl.png)

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

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

## 常用命令

### 登陆

```
ssh username@ip
```

### 查询端口并关闭:

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

```
sudo lsof -i :端口号
```

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

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

```
sudo kill -9 进程ID
```

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

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

```
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,并恢复进程。
37 changes: 19 additions & 18 deletions docs/articles/Node/README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@

# Node

> 记录一些 Node 学习和开发的笔记
- [NodeJS安装和使用](/articles/Node/NodeJS安装和使用.html)
- [NodeJs文件系统(fs)与流(stream)](/articles/Node/NodeJs文件系统(fs)与流(stream).html)
- [使用Node.js写一个简单的api接口](/articles/Node/使用Node.js写一个简单的api接口.html)
- [使用Express搭建一个简单的服务器](/articles/Node/使用Express搭建一个简单的服务器.html)
- [使用Node.js搭建静态服务器](/articles/Node/使用Node.js搭建静态服务器.html)
- [CommonJS模块化开发](/articles/Node/CommonJS模块化开发.html)
- [MongoDB学习之Mongoose的使用](/articles/Node/MongoDB学习之Mongoose的使用.html)
- [MongoDB中常用语句](/articles/Node/MongoDB中常用语句.html)
- [AOP面向切面编程](/articles/Node/AOP面向切面编程.html)
- [koa系列(1)-中间件开发和使用](/articles/Node/koa系列(1)-中间件开发和使用.html)
- [koa系列(2)-koa2路由实现](/articles/Node/koa系列(2)-koa2路由实现.html)
- [koa系统(3)-原生koa实现静态资源服务器](/articles/Node/koa系统(3)-原生koa实现静态资源服务器.html)
- [koa系列(4)-koa实现cookie和session](/articles/Node/koa系列(4)-koa实现cookie和session.html)
- [koa系列(5)-上传文件](/articles/Node/koa系列(5)-上传文件.html)
- [Node.js原生http模块](/articles/Node/Node.js原生http模块.html)
- [使用 PM2 部署 Next 服务](/docs/articles/Next/使用PM2部署Next服务)
- [NodeJS 安装和使用](/articles/Node/NodeJS安装和使用.html)
- [NodeJs 文件系统(fs)与流(stream)](/articles/Node/NodeJs文件系统(fs)与流(stream).html)
- [使用 Node.js 写一个简单的 api 接口](/articles/Node/使用Node.js写一个简单的api接口.html)
- [使用 Express 搭建一个简单的服务器](/articles/Node/使用Express搭建一个简单的服务器.html)
- [使用 Node.js 搭建静态服务器](/articles/Node/使用Node.js搭建静态服务器.html)
- [CommonJS 模块化开发](/articles/Node/CommonJS模块化开发.html)
- [MongoDB 学习之 Mongoose 的使用](/articles/Node/MongoDB学习之Mongoose的使用.html)
- [MongoDB 中常用语句](/articles/Node/MongoDB中常用语句.html)
- [AOP 面向切面编程](/articles/Node/AOP面向切面编程.html)
- [koa 系列(1)-中间件开发和使用](/articles/Node/koa系列(1)-中间件开发和使用.html)
- [koa 系列(2)-koa2 路由实现](/articles/Node/koa系列(2)-koa2路由实现.html)
- [koa 系统(3)-原生 koa 实现静态资源服务器](/articles/Node/koa系统(3)-原生koa实现静态资源服务器.html)
- [koa 系列(4)-koa 实现 cookie 和 session](/articles/Node/koa系列(4)-koa实现cookie和session.html)
- [koa 系列(5)-上传文件](/articles/Node/koa系列(5)-上传文件.html)
- [Node.js 原生 http 模块](/articles/Node/Node.js原生http模块.html)
- [中间件引擎实现](/articles/Node/中间件引擎实现.html)
- [最简Koa实现](/articles/Node/最简Koa实现.html)

- [最简 Koa 实现](/articles/Node/最简Koa实现.html)

1 comment on commit b59215d

@vercel
Copy link

@vercel vercel bot commented on b59215d Dec 15, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

v-blog – ./

zhangningle.vercel.app
v-blog-git-master-znl-github.vercel.app
v-blog-znl-github.vercel.app

Please sign in to comment.