cjmellor / saber
构建基于Docker容器的自定义LEMP堆栈
Requires
- php: ^7.1.3
- illuminate/container: ~5.1 | ^6.0
- mnapoli/silly: ^1.7
- symfony/console: ~3.0 | ~4.0
- symfony/filesystem: ~3.0 | ~4.0
- symfony/finder: ~3.0 | ~4.0
- symfony/process: ~3.0 | ~4.0
This package is auto-updated.
Last update: 2023-09-12 23:52:12 UTC
README
你好 👋
Saber是一个工具,允许您使用Docker 🐳设置一个完全运行的LEMP堆栈
只需一个命令即可运行并启动!
saber new <app-domain>
LEMP堆栈的每个部分都构建在单独的容器中。
- NGINX
- PHP
- MySQL / MariaDB
设置应用程序后,您可以通过在浏览器中访问 http://your-site.test
来访问您的新应用程序
可以为堆栈分配自签名证书,并使用最新的TLS安全功能。
目录
先决条件
- MacOS
- Docker / Docker Compose
- Homebrew
- DNSMasq
配置DNSMasq
已经完成这个步骤? 跳过
DNSMasq是Saber正确工作的必需品。以下是快速设置指南。对于更详细的说明,我建议阅读这篇文章。
安装DNSMasq - 此指南使用 Brew
brew install dnsmasq
打开 /usr/local/etc/dnsmasq.conf
并在文件中的任何位置添加此行
address=/test/127.0.0.1
重新启动DNSMasq
brew services restart dnsmasq
然后通过运行一个 dig
命令来测试它
dig my.awesome-website.test @127.0.0.1
如果你得到如下响应,说明它已正常工作!
;; ANSWER SECTION:
my.awesome-website.test. 0 IN A 127.0.0.1
现在您需要配置DNSMasq,以便它可以控制DNS查询的执行方式。
sudo mkdir -p /etc/resolver sudo tee /etc/resolver/test > /dev/null << EOF nameserver 127.0.0.1 EOF
现在任何以 .test
TLD 结尾的站点都将解析到您的本地主机
$ ping -c 5 saber.is.cool.test PING saber.is.cool.test (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.039 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.084 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.209 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.200 ms 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.142 ms --- saber.is.cool.test ping statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss
为什么选择Saber?
为什么你应该使用Saber而不是像 Valet 或 Homestead 这样的东西?
Saber受到了Valet的极大启发。虽然不是完全的分支,但在代码的风格和格式方面有很多参考。
Saber是一个纯娱乐项目,旨在能够快速设置一个可以根据需要定制的开发环境。
在创建新的开发环境时,Saber将定制放在速度之前。虽然可能需要更长的时间来拉取Docker镜像并构建它们,但这意味着您可以设置一个完全符合您要求的服务器。
安装
composer global require cjmellor/saber
如果您想按项目运行,请运行
cd /to/your/path
composer require cjmellor/saber
现在运行 install
命令以将Saber安装到您的系统上。您可以在安装时选择PHP和数据库版本,或者省略这些选项
saber install
或者使用选项
saber install --php=7.4 --db=mysql:8.0
可用的安装选项
选项 | 默认值 | 描述 |
---|---|---|
php | 7.3 | 仅版本号(例如 5.6,7.4) |
db | mariadb:latest | db:version(例如 mysql:5.7)。也允许使用 latest |
创建应用
saber new <app-domain>
创建应用将启动 Dockerized LEMP 栈。
您的应用可以在同名域名下查看(例如,名为 saber-test
的应用将在 http://saber-test.test
可视化)。默认情况下,顶级域名(TLD)总是 .test
。
目前,使用 Saber 无法更改 TLD。这将在未来的版本中更改 - 欢迎PR!
数据库管理
默认凭证是
用户 | root |
密码 | password |
数据库 | default |
您可以通过命令行或图形用户界面(GUI)像平时一样登录到数据库。
mysql -h 127.0.0.1 -P 3306 -u root -p
HTTPS
如果没有指定其他内容,应用将是不安全的(http
)。如果您想更安全地运行应用,在创建应用时指定 --tls
标签
saber new <app-domain> --tls
这将创建一个自签名证书。使用最新的安全协议,应用可以在最新的 TLS(1.3)版本上运行。
您可以使用 Saber 中可用的原生命令来加密或解密应用。
配置
使用 Saber 创建的每个应用都是可配置的。您可以启用或禁用对您和环境设置重要的功能。
当创建新应用时,所有 NGINX 和 PHP 配置都存储在根目录下的 lemp
文件夹中
每个应用的 NGINX 配置可以在以下位置找到
lemp/nginx/config/conf.d/
每个应用的 PHP 配置可以在以下位置找到
lemp/php/config
如果您更改了这些文件,别忘了重新启动容器
H5BP
Saber 利用出色的 H5BP 项目,该项目使应用保持安全并随着最新修复而更新。
删除应用
saber remove <app-domain>
如果您不再需要应用,可以删除它。
这将删除证书、PHP 和 NGINX 配置以及代码文件夹。
切换 PHP 版本
saber use 7.3
使用 use
命令可以轻松切换 PHP 版本!
默认情况下,Saber 鼓励您使用 PHP 的稳定版本。您可以通过提供 --force
选项来覆盖此设置,这将允许您使用其他 PHP 版本。
示例
saber use --force 5.6.40 saber use -f 7.4.0RC6-fpm
加密应用
saber secure <app-domain>
默认情况下,应用不是加密的 - 它在 HTTP
上运行。如果您想通过 HTTPS
运行应用,可以运行 secure
命令,这将为您应用分配一个 SSL 证书。
SSL 证书是自签名的。
如果您在创建应用时添加了SSL,或者您犯了错误并想从头开始,您可以执行此操作的逆操作,并删除SSL证书
saber unsecure <app-domain>
升级
用于构建您环境的图片通常由图片维护者更新,导致出现新版本和安全修复。通常,为了升级PHP或MySQL的版本,手动升级可能需要花费数小时,或者与托管提供商进行大量的繁琐的工单或电话。
Saber将拉取您想要升级的最新版本的图片,并重新构建容器。
saber upgrade
运行升级命令,您将看到存储在您机器上的图片列表
Select images to upgrade. Select multiple by seperating with a commar, example: 1,3
[0] composer:latest
[1] php:7.2-fpm-alpine
[2] php:7.3-fpm-alpine
[3] nginx:alpine
[4] mariadb:latest
>
通过输入相应的编号选择您想要更新的图片,该图片将被拉取,容器将被重新构建。
如果您想要更新多个图片,请用逗号分隔的值选择图片编号,例如
> 2,3,4
这些图片将被更新。
图片不能同时更新,它们将被逐个拉取并在重建之前更新
卸载
这不是您的菜吗?没关系,您可以从您的机器上卸载Saber - 但您将失去一切!
saber uninstall
贡献
🚨 我鼓励您帮助我使这个工具更加有用!我将在一段时间内添加更多功能。
🐛 肯定有些bug隐藏在其中尚未被发现 - 通过创建一个问题来帮助我摆脱它们。
⬇️ 请,提交一个Pull Request,帮助我使这个工具变得更好。我期待与其他开发者一起合作。
联系
请随时与我联系!您可以在Twitter上联系我 @cmellor