百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Next.js +Egg.js+React项目服务器部署详解

liuian 2025-02-20 16:44 45 浏览

原文:zhuxin.club/

原文:zhuxin.club/

1. 项目结构

blog:

博客项目前端工程,所用技术栈为Next.js + React Hooks + Antd + Axios。

service:

博客项目后端服务,所用技术栈为Egg.js。

admin:

博客后台管理系统,所用技术栈为Create-React-App + React Hooks + Antd + Axios。

files:

博客所用静态资源存放目录(如上传的图片等文件)。

2. 部署前准备

2.1 购买云服务器

去阿里云(下面以阿里云为例),腾讯云等云服务平台购买云服务器ECS。具体购买配置根据自己的项目规模大小而定。一般来讲,对于个人项目1核CPU,2G内存,1M带宽的配置基本足够。

购买成功后你会获得一个服务器实例和对应的公网ip(你的服务器ip地址)。现在的网站其实都是在我们输入网址后进行了DNS域名解析后,也就是转到对应的公网ip后才访问到的。

2.2 购买注册域名

依然是去阿里云,腾讯云或其他可购买域名的地方去挑选一个可用的域名并购买。域名购买后须进行实名认证,域名解析(将公网ip绑定到你的域名上),网站域名ICP备案以及公安联网备案等操作,具体参照域名购买平台的使用和备案指导进行操作。

只有完成了网站域名ICP备案才可使域名能访问到对应的公网ip即你的网站可被大众访问到。

网站域名备案审核一般耗时较长(10-30天不等),可等待同时先进行项目部署,而后域名申请下来后再进行部分配置修改即可。

关于域名的补充说明:

?

以www.baidu.com为例,严格来说baidu.com才叫做域名(全球唯一),域名与服务器的公网ip是一对一绑定的。而www只是一个主机名,一个域名可以有多个主机,比如zhidao.baidu.com,tieba.baidu.com。

?

3. 服务器环境搭建

3.1 连接服务器

在windows系统上我们使用Xshell(linux系统命令行操作工具)来连接服务器,通过输入自己的公网ip和服务器实例密码新建连接会话。如下图所示:

成功连接服务器后,来到服务器的命令行操作模式(一般默认是进入到root目录下)。

3.2 环境搭建

3.2.1 Mysql数据库

由于博客项目本地开发时使用的数据库就是egg-mysql插件,所以我们需要配置mysql数据库:

1:安装mysql:

sudo?dnf?install?@mysql

2:设置mysql开机自启动:

sudo?systemctl?enable?--now?mysqld

3:mysql密码及安全一系列设置命令:

sudo?mysql_secure_installation

注意:这里设置是否允许root远程登录时建议选no(输入n)以便于我们可能远程操作mysql。


4:进行本机登录mysql:

mysql?-uroot?-p

然后输入密码即可进入msql操作环境。

5:mysql重启:

sudo?systemctl?restart?mysqld

6:mysql数据库表从sql文件导入:

先通过use 数据库名切换数据库,然后通过以下命令:

source?sql文件绝对地址

即可导入我们本地数据库结构和数据到服务器的mysql中,其中sql文件绝对地址可通过pwd来获取。ps:sql文件我们可以在本地通过使用navicat工具进行导出生成然后传到服务器中。

3.2.2 安装Node环境

由于我们的博客项目都是基于node环境开发和运行的,所以我们需要在linux服务器中安装node。

1:安装nvm:

NVM (Node Version Manager) 是一个 管理node的bash 脚本,它允许你管理多个 Node.js 版本。通过 NVM,你可以安装或者卸载任何你想要使用或者测试的 Node.js 版本。使用以下命令安装nvm。注意不要用sudo,因为这会让 root 用户启用这个脚本。

curl?-o-?https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh?|?bash

2:安装node:

nvm?install?node或nvm?install?node版本号

可多次执行安装多个版本的node,并通过nvm ls来查看已安装node版本,如下图所示:

带箭头的那一行,是当前 shell 会话中使用的 Node.js 版本。default为当你打开新的 shell 会话时默认的 Node.js 版本。

3:切换当前node版本:

nvm use 版本号

如?nvm?use?v14.13.1

4:切换node默认版本:

nvm?alias?default?版本号
如?nvm?alias?default?v14.13.1

安装并设置node版本后,即可像windows环境下一样使用npm和node的功能

3.2.3 安装PM2

PM2 是一个带有负载均衡功能的 Node 应用进程管理器。可后台运行,它主要被用来守护node进程。我们将在后面运行项目时用到它,到时候再详细说明。安装node后使用以下命令安装pm2:

npm?install?pm2?-g

3.2.4 安装Nginx

Nginx 是一个高性能的HTTP和反向代理web服务器,我们常用它来进行项目进程端口监听,接口代理转发和服务器静态资源路径的相关配置。后续项目运行配置时再详细说明。使用以下命令安装Nginx:sudo yum install nginx

4. 项目部署

4.1 代码上传

我们使用Xftp工具来主要进行服务器与本地的文件传输和编辑操作。与Xshell类似,通过输入公网ip和实例密码来新建链接会话,如下图所示:

然后我们可以将自己的项目代码的文件夹从本地传输到服务器目录中任一路径(建议不要放在root目录下,可能会存在一些文件权限问题)。

由于我们之前项目代码都是基于本地开发环境编写的,一些配置的连接ip端口(如数据库,后端服务)基本都是localhost:xxxx这样的。

所以在代码上传服务器前,我们可以在代码里合适位置新建一个专门的ip端口配置的js文件并export出去,然后通过判断当前代码环境(线上或开发)来进行不同的ip端口配置。然后在需要引用到ip端口的地方直接引入即可,不用再像开发环境时写死成localhost了。

4.2 运行项目

在运行项目之前,先确保各个项目的node_modules依赖是否成功安装完成。

4.2.1 运行blog

回到xshell中,进入到blog文件夹(前端工程目录)下,这时使用上面安装的PM2来启动并守护项目进程。为什么要使用PM2来而不是项目中原有配置的script命令来控制项目运行?

因为使用原有script命令启动后,当我们断掉与服务器的连接后,进程都会被销毁。

这样的话,要保持网站一直可被访问岂不是要我们电脑时刻都要开着并且连接着服务器?显然这很不合理!而使用PM2启动来守护进程正是为了解决这种问题的。PM2常用命令如下:

1:创建启动并守护一个node项目进程:

pm2?start?npm?--name?自定义进程名?--?run?start

注意:只要新建一个进程并命名后,它就会永久保存在可用进程的列表中,除非你删掉它。

2:查看所有创建过的进程信息:

pm2?list

3:查看指定进程的详细信息:

pm2?show?进程id

其中进程id为创建新进程时生成的唯一标识,可通过pm2 list查询。

4:启动全部/指定的已创建的进程:

pm2?start?all
pm2?start?进程id

5:重启全部/指定的已创建的,正在运行的进程:

pm2?reload?all
pm2?reload?进程id

6:删除全部/指定的已创建的进程:

pm2?delete?all
pm2?delete?进程id

7:停止全部/指定的已创建的,正在运行的进程:

pm2?stop?all
pm2?stop?进程id

4.2.2 运行service

先切换到service文件夹路径。运行成功blog前端项目后,需要再启动service即后端服务来提供接口数据支持。由于后端服务是由egg.js开发的,值得一提的是,该框架内置的egg-scripts命令不需要pm2进程守护,见下图官方解释。所以我们直接在服务器可通过执行npm start或npm stop来启动和停止后端服务。

补充说明:

由于mysql数据库默认不允许通过公网ip来直接连接。所以在egg里的egg-mysql配置中无论是在线上环境还是开发环境都还是配置成本地ip端口(一般为localhost:3306),然后在线上环境时我们会通过配合nginx配置来实现成功连接,请阅读下面nginx配置部分。

4.2.3 运行admin

先切换到admin文件夹路径。博客的后台管理项目是用create-react-app脚手架搭建的。由于它基于生产环境是打包生成静态资源文件,所以我们需要用到Nginx来配置它的服务器访问路径,后面再详细说明。在此之前,我们可以先执行 npm run build来打包生成生产环境所用的静态资源文件,默认生成在admin的bulid文件夹下。

4.3 Nginx配置

4.3.1 配置前准备

nginx会对各个项目进行端口监听配置,请先确保一些必要的服务器端口(如网站首页默认80端口,mysql数据库端口3306)是否已开放使用。以阿里云为例,它的端口配置是通过服务器实例-安全组规则配置中进行设置的。此外,我们还应该新增开放一些端口(端口号可自定义)来用于nginx配置各项目进程端口代理转发。

4.3.2 配置说明

即使上面各项目运行成功后,我们依然无法不知道如何在浏览器中访问到对应的页面,这时候就需要Nginx大显身手了。

nignx配置文件的一般默认路径为/etc/nginx/nginx.conf

我们打开该文件,进行一个基本配置并对配置项进行一个详细说明。

如下例所示:

?#server对应一种端口监听的配置
?server?{
?????listen???????80;
?????#server_name可选配置,你的域名地址(如www.baidu.com)
??????server_name??www.zhuxin.club;
??????#root项目文件的绝对路径
??????root?/root/dist;
?????location?/api?{
????????#代理转发地址,主要用于项目中用到的跨域接口请求
?????????proxy_pass?http://127.0.0.1:8080;
?????????proxy_set_header?Host?$host;
?????}

配置保存后记得要执行nginx -s reload来重启niginx使配置生效。Nginx配置对于新手来讲还是需要一点时间去调试的,所以这里我们要多多进行尝试和必要的资料查询。配置完成和访问通过后我们的初次服务器部署过程就基本结束了,后续我们主要需要做的就是项目的维护了。

相关推荐

驱动网卡(怎么从新驱动网卡)
驱动网卡(怎么从新驱动网卡)

网卡一般是指为电脑主机提供有线无线网络功能的适配器。而网卡驱动指的就是电脑连接识别这些网卡型号的桥梁。网卡只有打上了网卡驱动才能正常使用。并不是说所有的网卡一插到电脑上面就能进行数据传输了,他都需要里面芯片组的驱动文件才能支持他进行数据传输...

2026-01-30 00:37 liuian

win10更新助手装系统(微软win10更新助手)

1、点击首页“系统升级”的按钮,给出弹框,告诉用户需要上传IMEI码才能使用升级服务。同时给出同意和取消按钮。华为手机助手2、点击同意,则进入到“系统升级”功能华为手机助手华为手机助手3、在检测界面,...

windows11专业版密钥最新(windows11专业版激活码永久)

 Windows11专业版的正版密钥,我们是对windows的激活所必备的工具。该密钥我们可以通过微软商城或者通过计算机的硬件供应商去购买获得。获得了windows11专业版的正版密钥后,我...

手机删过的软件恢复(手机删除过的软件怎么恢复)
手机删过的软件恢复(手机删除过的软件怎么恢复)

操作步骤:1、首先,我们需要先打开手机。然后在许多图标中找到带有[文件管理]文本的图标,然后单击“文件管理”进入页面。2、进入页面后,我们将在顶部看到一行文本:手机,最新信息,文档,视频,图片,音乐,收藏,最后是我们正在寻找的[更多],单击...

2026-01-29 23:55 liuian

一键ghost手动备份系统步骤(一键ghost 备份)

  步骤1、首先把装有一键GHOST装系统的U盘插在电脑上,然后打开电脑马上按F2或DEL键入BIOS界面,然后就选择BOOT打USDHDD模式选择好,然后按F10键保存,电脑就会马上重启。  步骤...

怎么创建局域网(怎么创建局域网打游戏)

  1、购买路由器一台。进入路由器把dhcp功能打开  2、购买一台交换机。从路由器lan端口拉出一条网线查到交换机的任意一个端口上。  3、两台以上电脑。从交换机任意端口拉出网线插到电脑上(电脑设置...

精灵驱动器官方下载(精灵驱动手机版下载)

是的。驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能。1、全新驱动精灵2012引擎,大幅提升硬件和驱动辨识能力...

一键还原系统步骤(一键还原系统有哪些)

1、首先需要下载安装一下Windows一键还原程序,在安装程序窗口中,点击“下一步”,弹出“用户许可协议”窗口,选择“我同意该许可协议的条款”,并点击“下一步”。  2、在弹出的“准备安装”窗口中,可...

电脑加速器哪个好(电脑加速器哪款好)

我认为pp加速器最好用,飞速土豆太懒,急速酷六根本不工作。pp加速器什么网页都加速,太任劳任怨了!以上是个人观点,具体性能请自己试。ps:我家电脑性能很好。迅游加速盒子是可以加速电脑的。因为有过之...

任何u盘都可以做启动盘吗(u盘必须做成启动盘才能装系统吗)

是的,需要注意,U盘的大小要在4G以上,最好是8G以上,因为启动盘里面需要装系统,内存小的话,不能用来安装系统。内存卡或者U盘或者移动硬盘都可以用来做启动盘安装系统。普通的U盘就可以,不过最好U盘...

u盘怎么恢复文件(u盘文件恢复的方法)

开360安全卫士,点击上面的“功能大全”。点击文件恢复然后点击“数据”下的“文件恢复”功能。选择驱动接着选择需要恢复的驱动,选择接入的U盘。点击开始扫描选好就点击中间的“开始扫描”,开始扫描U盘数据。...

系统虚拟内存太低怎么办(系统虚拟内存占用过高什么原因)

1.检查系统虚拟内存使用情况,如果发现有大量的空闲内存,可以尝试释放一些不必要的进程,以释放内存空间。2.如果系统虚拟内存使用率较高,可以尝试增加系统虚拟内存的大小,以便更多的应用程序可以使用更多...

剪贴板权限设置方法(剪贴板访问权限)
剪贴板权限设置方法(剪贴板访问权限)

1、首先打开iphone手机,触碰并按住单词或图像直到显示选择选项。2、其次,然后选取“拷贝”或“剪贴板”。3、勾选需要的“权限”,最后选择开启,即可完成苹果剪贴板权限设置。仅参考1.打开苹果手机设置按钮,点击【通用】。2.点击【键盘】,再...

2026-01-29 21:37 liuian

平板系统重装大师(平板重装win系统)

如果你的平板开不了机,但可以连接上电脑,那就能好办,楼主下载安装个平板刷机王到你的个人电脑上,然后连接你的平板,平板刷机王会自动识别你的平板,平板刷机王上有你平板的我刷机包,楼主点击下载一个,下载完成...

联想官网售后服务网点(联想官网售后服务热线)

联想3c服务中心是联想旗下的官方售后,是基于互联网O2O模式开发的全新服务平台。可以为终端用户提供多品牌手机、电脑以及其他3C类产品的维修、保养和保险服务。根据客户需求层次,联想服务针对个人及家庭客户...