cjmellor/saber

此包已被废弃且不再维护。没有建议的替代包。

构建基于Docker容器的自定义LEMP堆栈

1.1.3 2019-12-03 23:55 UTC

README

StyleCI

你好 👋

Saber是一个工具,允许您使用Docker 🐳设置一个完全运行的LEMP堆栈

只需一个命令即可运行并启动!

saber new <app-domain>

LEMP堆栈的每个部分都构建在单独的容器中。

  • NGINX
  • PHP
  • MySQL / MariaDB

设置应用程序后,您可以通过在浏览器中访问 http://your-site.test 来访问您的新应用程序

可以为堆栈分配自签名证书,并使用最新的TLS安全功能。

目录

先决条件

配置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而不是像 ValetHomestead 这样的东西?

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.67.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