如何在 Ubuntu VPS 上的生产环境中托管 Next.js 应用程序

  • By v2ray节点

  • 2024-03-30 10:29:36

  • 评论

第1步:安装必要的软件包

更新APT:

apt update

安装 Nginx:

apt install nginx -y

设置 Node.js 21.x 存储库:

curl -fsSL https://deb.nodesource.com/setup_21.x | sudo -E bash -

安装 Node.js:

sudo apt-get install -y nodejs

全局安装 PM2:

npm install -g pm2


第 2 步:设置 Next.js 应用程序

npm install
npm run build
npm run start


步骤 3:配置 NGINX

创建此目录用于存储访问和错误日​​志

mkdir -p /opt/nextjs/logs/


为 Next.js 应用程序创建一个新的 NGINX 配置文件。打开文本编辑器并粘贴以下配置:

# /etc/nginx/sites-available/nextjs-example.willandskill.eu

server {
    server_name getmeachai.com;
    access_log /opt/nextjs/logs/access.log;
    error_log /opt/nextjs/logs/error.log error;

    location /_next/ {
        alias /home/getmeachai/.next/;
        expires 30d;
        access_log on;
    }

    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;
    }
}


步骤4:配置PM2

// ecosystem.config.js

module.exports = {
  apps: [
    {
      name: 'my-nextjs-app',
      script: 'node_modules/.bin/next',
      args: 'start',
      cwd: '/home/getmeachai',
      instances: 1,
      autorestart: true,
      watch: false,
      max_memory_restart: '1G',
      env: {
        NODE_ENV: 'production',
        PORT: 3000,
        GITHUB_ID: "99aae2c73fc53d196807",
        GITHUB_SECRET: "55c88cefb1ec80c6b1697811f6ff1e287d554249",
        NEXT_PUBLIC_URL: "http://getmeachai.com",
        NEXTAUTH_URL: "http://getmeachai.com",
        NEXTAUTH_SECRET: "sdf",
        MONGO_URI: "mongodb://localhost:27017/chai",
      },
      env_production: {
        NODE_ENV: 'production'
      }
    }
  ]
};


第5步:启动PM2

pm2 start ecosystem.config.js


[可选] 使用 Certbot 进行 HTTPS

使用 HTTPS 保护 Next.js 应用程序对于保护敏感数据和确保用户信任至关重要。 Certbot 是一种广泛使用的工具,用于从 Let's Encrypt 证书颁发机构获取和管理 SSL/TLS 证书。请按照以下步骤使用 Certbot 为 Next.js 应用程序设置 HTTPS:

第 1 步:安装 Certbot

sudo apt update
sudo apt install python3-certbot-nginx


第2步:获取SSL证书

sudo certbot --nginx -d getmeachai.com

按照提示提供续订提醒的电子邮件地址并同意服务条款。 Certbot 将处理 NGINX 的证书颁发和配置。


步骤 3:验证 HTTPS 配置

sudo nginx -t

如果测试成功,请重新加载 NGINX 以应用更改:

sudo systemctl reload nginx


第 4 步:自动更新证书

sudo systemctl enable certbot.timer

此命令可确保 Certbot 在证书即将过期时自动更新您的证书。


第 5 步:验证续订

sudo certbot renew --dry-run

如果试运行完成且没有错误,则一切就绪。 Certbot 将在必要时自动处理证书续订。


第 6 步:测试 HTTPS 连接

最后,通过 HTTPS 测试您的 Next.js 应用程序,以确保一切正常工作。您可以通过在 Web 浏览器中导航到您的域并验证连接是否安全来执行此操作。

通过执行以下步骤,您可以使用 Certbot 通过 HTTPS 保护您的 Next.js 应用程序,从而增强用户的安全性和信任度。

v2ray节点购买