logo NodeSeekbeta

nginx-easy-deploy:不装面板,也能轻松部署和迁移原生 Nginx

nginx-easy-deploy:不装面板,也能轻松部署和迁移原生 Nginx

很多人部署反向代理时,第一反应是安装宝塔、1Panel 或其他管理面板。

面板确实方便,但对于只有 1 核、512 MB 或 1 GB 内存的小型服务器来说,为了管理几个 Nginx 站点,长期运行一整套 Web 面板、数据库和后台服务,成本并不低。

原生 Nginx 本身非常轻量,真正拦住新手的往往不是性能,而是配置门槛:

  • 不熟悉 Nginx 配置文件结构
  • 不知道如何配置反向代理和 WebSocket
  • 不会申请、安装或续签 HTTPS 证书
  • 修改配置后担心 Nginx 无法启动
  • 更换服务器时,不清楚配置和证书应该迁移哪些目录

因此做了 nginx-easy-deploy:一个不安装面板、不常驻后台服务的原生 Nginx 部署与迁移脚本。

项目地址:

https://github.com/sanrokamlan-prog/nginx-easy-deploy

它能做什么

脚本提供中文交互菜单,也支持完整的命令行操作:

  • 安装原生 Nginx 和 Certbot
  • 创建反向代理站点
  • 创建静态网站
  • 自动申请和续签 Let's Encrypt 证书
  • 上传并安装自己的证书、私钥和证书链
  • 检查证书有效期、域名及公私钥是否匹配
  • 查看、删除和管理脚本创建的站点
  • 导出 Nginx 配置、证书和 ACME 数据
  • 在新服务器上一键恢复
  • 恢复失败时自动回滚原配置

实际价值

1. 更适合低配置服务器

脚本执行完成后不会常驻运行。

服务器上长期运行的仍然只有 Nginx、Certbot 定时续签等必要组件,不需要额外维护面板进程和数据库。

2. 保留原生 Nginx 的可维护性

脚本生成的是标准 Nginx 配置文件,统一存放在:

/etc/nginx/conf.d/ngx-easy-*.conf

以后即使不再使用脚本,也可以直接编辑这些配置,不会被绑定在某个面板或私有数据库中。

3. 降低配置出错风险

每次写入、修改或删除站点后,脚本都会先执行:

nginx -t

只有配置通过检查才会重新加载 Nginx。失败时会恢复原文件,尽量避免因为一处配置错误导致所有站点离线。

4. 真正解决换服务器的问题

迁移功能不只是简单压缩 /etc/nginx。

脚本会通过 nginx -T 分析当前实际加载的配置,并收集:

  • Nginx 主配置和外部 include 文件
  • 配置引用的证书与私钥
  • /etc/letsencrypt 和 Certbot 续签数据
  • acme.sh 目录
  • systemd override
  • Nginx 版本、编译参数和软件包信息

恢复前还会为新服务器生成回滚包,配置校验或服务启动失败时尝试恢复原状态。

5. 同时照顾新手和熟悉命令行的用户

新手可以直接打开中文菜单:

curl -fL \
  https://raw.githubusercontent.com/sanrokamlan-prog/nginx-easy-deploy/main/nginx-easy-deploy.sh \
  -o nginx-easy-deploy.sh

sudo bash nginx-easy-deploy.sh

熟悉命令行的用户也可以直接创建反向代理:

sudo bash nginx-easy-deploy.sh proxy app.example.com 3000 \
  --email [email protected]

或者部署静态网站:

sudo bash nginx-easy-deploy.sh static example.com /var/www/example.com \
  --email [email protected]

自有证书支持

除了 Let's Encrypt,也可以上传现有证书:

sudo bash nginx-easy-deploy.sh cert example.com \
  /root/certs/fullchain.pem \
  /root/certs/privkey.pem

如果证书链是单独文件:

sudo bash nginx-easy-deploy.sh cert example.com \
  /root/certs/cert.pem \
  /root/certs/privkey.pem \
  --chain /root/certs/chain.pem

脚本会先验证证书与私钥是否匹配,再写入 Nginx 配置。

一键迁移

旧服务器导出:

sudo bash nginx-easy-deploy.sh export --encrypt

将生成的迁移包和脚本上传到新服务器后恢复:

sudo bash nginx-easy-deploy.sh restore nginx-backup.tar.gz.enc

由于迁移包包含 TLS 私钥,建议始终使用 --encrypt。

适用范围

目前主要面向:

  • Debian / Ubuntu
  • CentOS / RHEL
  • Rocky Linux / AlmaLinux
  • 原生安装的 Nginx
  • 小型 VPS、个人服务和轻量反向代理场景

暂不支持 Docker、Nginx Proxy Manager、Kubernetes,以及面板自行编译的定制 Nginx。

项目目前仍是首个版本,建议先在临时服务器验证,再用于重要生产环境。欢迎提交 Issue、测试结果和改进建议。

项目地址:

https://github.com/sanrokamlan-prog/nginx-easy-deploy

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72267位seeker

🎉欢迎新用户🎉