前言
近两年来宝塔面板一直毁誉参半,虽然他对于小白来说操作友好,但是糟糕的代码质量和层出不穷的 Bug 也让其备受质疑,而最近的两个月其更是爆出了隐私问题。
由此我下定决心将其换掉。由于我用宝塔无非就是为了 LNMP 环境(其实主要是 Nginx),而我的所有应用都是 Docker
化的,所以我决定用 Nginx Proxy Manager
(以下简称NPM
)来作为替代,同时也可以用PHP
和MariaDB
的 Docker
镜像来满足其他网站的环境需求。
搭建步骤
安装 Docker
和Docker Compose
参考 文档。
编写 docker-compose.yaml
为了方便起见,我的容器都用的是 host
网络,如果对安全需求高建议单独创建一个 Docker
网络并仅将必要的端口映射出来。
如上述配置所示,我这里创建了两个 PHP
镜像分别是 7.3
和7.4
版本,分别监听本地的 9073
端口和 9074
端口,而数据库还是监听本地 3306
端口。
如果需要其他的 PHP
版本就按上述例子添加即可。为了方便非容器化的网站使用,我们需要创建以下文件:
例如我们将所有这些网站放在 ./data/static_websites/
目录下。
如果还有其他版本的 PHP
就按照上面的例子创建 enable-xx.conf
就可以了,注意修改 fastcgi_pass
的端口号就好。
上述的事情做完就可以一键启动了:
NPM
在线配置
首先访问 http://ip:81
登陆,默认账号和密码分别是 [email protected]
和changeme
,登陆后修改默认密码。
NPM
的界面还是比较简单的,如果是反代的话先添加 SSL 证书(支持自定义和 Let’s Encrypt,可 DNS 验证)。
然后直接在页面上添加 Proxy Hosts 即可。
这样 Save 并做好域名解析之后就可以通过域名访问了。
下面主要讲一下非容器化的静态和动态网页。
静态网页
首先将网页所有内容都放在 ./data/static_websites/your_site
目录下,然后在线创建一个 Proxy Hosts。
Forward Hostname / IP
和 Forward Port
可以是任意合法值,而 Cache Assets
一定不要勾选!
SSL 配置与上述一样,而 Advanced 中的 Custom Nginx Configuration
需要填入:
动态网页
将网页所有内容都放在 ./data/static_websites/your_dym_site
目录下,然后在线创建一个 Proxy Hosts。假设运行目录是 public
目录。
其他配置与静态网页一样,有需求可以勾选 Websockets Support
。而 Advanced 中的Custom Nginx Configuration
需要填入:
数据库使用
数据库需要有一定 SQL
基础,也可以多加一个 phpmyadmin
容器来进行图形化操作。
先进入 Docker
内然后在进行处理:
然后连接数据库:
密码是 docker-compose.yaml
中的 MARIADB_ROOT_PASSWORD
,剩下的去看 菜鸟教程 吧。
比较常用的如下
以及导入数据
服务器备份
可以用 秋水逸冰 大佬的 备份脚本,配合 rclone 可以实现加密备份到任意的云存储(例如 OneDrive),配合 cron 定时执行即可。
如果不需要本地备份文件,可以用我 修改过的脚本,只改了两行,其他一模一样。
本文建议与 如何优雅地使用 NPM 进阶篇 一起食用!
后记
宝塔面板有些小插件还是挺好用的,例如 Webhook
,Supervisor
。但是谁都不想自己的服务器时时刻刻接入网警吧。。。建议还是尽早替换成本文的全Docker
方案,迁移成本并不高,而且服务器干净,不会有任何风险。