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、测试结果和改进建议。
项目地址:
一直都不习惯用面板,跟服务器配置无关
支持开源!
支持支持
支持!
wnmp.org 更好用
感谢分享,收藏了
@lowphp #5 不能迁移吧 我做这个主要目的是迁移