-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
164 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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,并恢复进程。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
b59215d
There was a problem hiding this comment.
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