当前位置: 首页 > article >正文

如何在 DigitalOcean Droplet 云服务器上部署 Next.js 应用

Next.js 是一个流行的 React 框架,可轻松构建服务器渲染的 React 应用程序。在本教程中,我们将介绍如何使用 Nginx 作为反向代理,在 DigitalOcean 的 droplet 云主机上部署 Next.js 应用程序。以下是逐步指南,假设你已经准备好部署 Next.js 应用程序并且拥有一个 DigitalOcean 帐户。

以下是一些你可能需要的关键资源概述:

  1. Next.jsNext.js 框架的官方网站。
  2. ReactReact JavaScript 库的官方网站。
  3. DigitalOcean如果你还没有 DigitalOcean 帐户,请创建一个。DigitalOcean 的云服务器,最低只需 4 美元每月,支持信用卡、Paypal 支付,如果遇到信用卡验证问题可参考这篇教程。

准备工作

  • Next.js 应用程序
  • DigitalOcean 帐户
  • 注册域名(可选,但推荐有一个)
  • 本地安装 Node.js 和 npm 或 yarn

步骤 1:创建 DigitalOcean Droplet

我们将在我们自己配置的 DigitalOcean Droplet 上托管我们的 Next.js 应用程序。现在让我们创建 Droplet。

  • 登录你的 DigitalOcean 帐户并导航到 Droplets 部分。
  • 单击“创建 Droplet”。
  • 选择 Ubuntu 映像(最好是最新的 LTS 版本)。
  • 根据你的需求和预算选择所需的 Droplet 大小。
  • 选择最靠近目标受众的数据中心区域以获得更好的性能。
  • 添加您的 SSH 密钥以安全访问您的 Droplet。
  • 为您的 Droplet 选择主机名,可以是你的域名或任何首选名称。
  • 单击“创建 Droplet”。
  • 创建 Droplet

一旦创建了 Droplet,请记下分配给它的 IP 地址。

第 2 步:设置 Droplet

现在我们已经创建了 Droplet,我们需要对其进行准备,以便它可以接受传入的连接并将这些连接路由到我们的 Next.js 应用程序。

使用你在创建 Droplet 期间提供的 IP 地址和 SSH 密钥通过 SSH 进入你的 Droplet:

ssh root@<DROPLET_IP>

更新并升级droplet上的软件包:

sudo apt update && sudo apt upgrade -y

安装所需的软件包:


sudo apt install -y nodejs npm nginx

步骤 3:配置 Nginx

Nginx 是处理到我们的 Next.js 应用程序的所有路由的工具。为你的 Next.js 应用程序创建一个新的 Nginx 配置文件:


sudo nano /etc/nginx/sites-available/nextjs

粘贴以下配置,将 server_name 替换为你的域名或 droplet IP 地址:


server {
  listen 80;
  server_name YOUR_IP_ADDRESS;
  location / {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade 
$http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $
host;
    proxy_cache_bypass $http_upgrade;
  }
}

保存并关闭文件。创建符号链接以启用配置:


sudo ln -s /etc/nginx/sites-available/nextjs /etc/nginx/sites-enabled/

测试 Nginx 配置是否存在语法错误:

sudo nginx -t

如果配置测试成功,重启Nginx:


sudo service nginx restart

步骤 4:部署 Next.js 应用程序

接下来,我们将把一个 Next.js 应用程序部署到 Droplet 上。有很多方法可以实现这一点:

  • 在服务器上创建一个 SSH 密钥,将其连接到你的 GitHub 帐户,然后克隆你的存储库。
  • 在 Droplet 上创建一个 Next.js 应用程序。

在本教程中,我们将会在 Droplet 中创建一个全新的 Next.js 应用程序。

通过 SSH 返回你的 Droplet:

ssh root@<DROPLET_IP>

创建一个新的 Next.js 应用程序并按照提示进行操作:

cd /var/www
npx create-next-app nextjs

导航到 Next.js 应用程序目录:

cd nextjs

安装应用程序依赖项:

npm install

构建 Next.js 应用程序:

npm run build

最后,启动 Next.js 应用程序:

npm start

你的 Next.js 应用程序现在已经成功部署,可以通过你的域名或 Droplet 的 IP 地址访问。为了确保你的应用程序能够在后台运行,并在崩溃或服务器重启时自动重启,建议使用 PM2 等进程管理器。

步骤 5:设置 PM2 进程管理器

我们在 Droplet 中运行了 npm start。有时,此命令可能会因服务器重新启动或需要安装更新等原因而停止运行。我们将使用名为 PM2 的工具来确保我们的 Next.js 应用程序始终运行。如果 Next.js 应用程序出现故障,PM2 甚至会重新启动它。

要在 Droplet 上全局安装 PM2:

sudo npm install -g pm2

导航到 Next.js 应用程序目录(如果尚未存在):

cd /var/www/nextjs

使用 PM2 启动 Next.js 应用程序:

pm2 start npm --name "nextjs" -- start

此命令将使用 npm start 命令启动名为“nextjs”的 Next.js 应用程序。如果应用程序崩溃或服务器重新启动,PM2 将自动重新启动该应用程序。

要确保 PM2 在启动时启动,请运行:

pm2 startup

此命令将生成一个脚本,你可以将其复制并粘贴到终端中,以使 PM2 在启动时启动。

保存当前的 PM2 进程:

pm2 save

结论

现在,你已经成功地使用 Nginx 作为反向代理,并使用 PM2 作为进程管理器,在 DigitalOcean 的 Droplet 上部署了 Next.js 应用程序。你的应用程序应该可以通过域名或 Droplet 的 IP 地址访问。

如果你使用域名,请记得配置 DNS 设置。将域名的 A 记录指向 Droplet 的 IP 地址,以便通过域名访问应用程序。

为了提高安全性和 SEO,建议使用 Let’s Encrypt 设置 SSL 证书并强制执行 HTTPS 连接。此外,你还可以探索使用缓存和其他性能优化措施来提升你的 Next.js 应用程序的效率。

就是这样!你已成功在 DigitalOcean Droplet 上部署了 Next.js 应用程序。

如果你需要了解 DigitalOcean 云服务的更多产品,可访问英文官网。如果你需要中文 支持,可联系 DigitalOcean 中国区独家战略合作伙伴卓普云。


http://www.kler.cn/news/304459.html

相关文章:

  • 技术周刊 | Vue3.5、Replit Agent、Cursor 使用技巧、React 19 中的新功能、8 月 Web 平台的新功能
  • 9.11 QT ( Day 4)
  • oracle数据库安装和配置详细讲解
  • 个人学习笔记6-2:动手学深度学习pytorch版-李沐
  • Qt使用UDP进行单波通信
  • 实习项目|苍穹外卖|day9
  • mmseqs2进行pdb蛋白质序列聚类分析
  • 在云服务器上安装 RabbitMQ:从零到一的最佳实践
  • 机械学习—零基础学习日志(Python做数据分析03)
  • JS函数 匿名函数(ES6箭头函数)弄得懂吗?
  • linux 定时将固态硬盘数据备份至机械硬盘
  • 测试质量体系的风险评估和应对措施有哪些
  • UART 16550的使用
  • Git常用命令备忘
  • 【数据结构和算法实践-树-LeetCode110-平衡二叉树】
  • 【STM32 HAL库】IIC通信与CubeMX配置
  • InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE)
  • S32G EB tresos AutoCore下载和激活方法
  • GSEP 7级T2真题 [202312]纸牌游戏
  • [pytorch] 训练节省显存的技巧
  • Kizuna AI——AI驱动虚拟偶像,AI分析观众的反应和互动,应用娱乐、直播和广告行业
  • Linux(RedHat或CentOS)下如何开启telnet服务
  • 【时时三省】(C语言基础)指针进阶 例题7
  • SQLITE3数据库实现信息的增删改查
  • ensp—路由过滤、路由引入、路由策略
  • 【基础知识复习 - 随机练习题】
  • 1935. 公交换乘(transfer)
  • 常用环境部署(二十)——docker部署OpenProject
  • 基于华为云服务器的网页部署
  • 【Android】使用和风天气API获取天气数据吧!(天气预报系列之一)