在 ubuntu和 nginx 环境下部署 nextjs 应用

在 ubuntu和 nginx 环境下部署 nextjs 应用

草帽AI

草帽AI

我是 AIIA社区的创始人

11 天前
nextjs

1. 服务器准备

首先,确保你的 Ubuntu 服务器已经安装了 Node.jsnpm 或 yarnNginx

更新系统并安装必要的工具

sudo apt update && sudo apt upgrade -ysudo apt install curl git -y

安装 Node.js

Next.js 需要 Node.js 运行环境,你可以使用 NodeSource 安装:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt install -y nodejs

检查安装版本:

node -vnpm -v


2. 下载和构建 Next.js 应用

你可以从 GitHub 拉取你的 Next.js 代码,或者上传你的项目文件。

git clone https://github.com/your-repo/your-nextjs-app.gitcd your-nextjs-app

然后安装依赖:

npm install  # 或者 yarn install

构建 Next.js

Next.js 需要进行 编译和导出

npm run build

Next.js 提供两种运行方式:

  1. 默认的 server 模式(推荐): 使用 next start 运行,需要后台进程管理,如 PM2

  2. 静态导出模式: 生成纯静态 HTML,适合静态部署。


3. 使用 PM2 运行 Next.js(推荐)

PM2 是一个进程管理工具,可以让你的 Next.js 应用以守护进程的方式运行。

安装 PM2

npm install -g pm2

启动 Next.js

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

设置开机自启

pm2 startuppm2 save

检查运行状态:

pm2 list

此时 Next.js 运行在默认端口 3000


4. 配置 Nginx 作为反向代理

Next.js 默认在 3000 端口运行,我们使用 Nginx 作为反向代理,映射到 80 或 443 端口

安装 Nginx

sudo apt install nginx -y

配置 Nginx

创建配置文件:

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

添加以下配置:

nginx

server {listen80;server_name your-domain.com;location / {proxy_pass http://127.0.0.1:3000;proxy_http_version1.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/sudo nginx -t  # 检查配置是否正确sudo systemctl restart nginx  # 重启 Nginx


5. 配置 HTTPS(可选但推荐)

如果你有域名,建议使用 Let's Encrypt 免费 SSL 证书。

安装 Certbot

sudo apt install certbot python3-certbot-nginx -y

申请 SSL 证书

sudo certbot --nginx -d your-domain.com -d www.your-domain.com

自动更新证书

Let's Encrypt 证书每 3 个月需要更新,可以设置定时任务:

sudo crontab -e

添加:

0 0 * * * certbot renew --quiet


6. 访问你的 Next.js 应用

  • 访问 http://your-domain.com

  • 如果使用 HTTPS,访问 https://your-domain.com


7. 维护和日志管理

  • 查看 PM2 运行状态:

    pm2 status

  • 查看日志:

    pm2 logs nextjs-app

  • 停止 Next.js:

    pm2 stop nextjs-app

  • 重启:

    pm2 restart nextjs-app


总结

  1. 安装 Node.js、PM2、Nginx

  2. 构建 Next.js 应用

  3. 使用 PM2 运行 Next.js

  4. 配置 Nginx 反向代理

  5. 使用 Certbot 启用 HTTPS

  6. 管理应用

这样,你的 Next.js 应用就能在 Ubuntu 和 Nginx 环境下稳定运行了!

0 评论
加载评论中...