环境¶
概览¶
Devilbox是一个现代化且高度可定制的 Docker 化 PHP 堆栈,支持完整的 LAMP 和 MEAN,并在所有主要平台上运行。其主要目标是轻松切换并组合本地开发所需的任何版本。它支持无限数量的项目,为这些项目自动创建虚拟主机、SSL 证书和 DNS 记录。每个项目都支持反向代理,以确保诸如 NodeJS 等监听服务器也能被访问。电子邮件捕获和流行开发工具也将为你服务。无需配置,因为一切都已预先设置。
此外,Devilbox 提供了针对不同主机操作系统的相同且可重现的开发环境。
此示例将使用phalcon
从 Devilbox PHP 容器内安装 Phalcon。完成以下步骤后,你将拥有一个通过 HTTP 和 HTTPS 提供服务的 Phalcon 设置。
配置¶
将使用以下配置:
设置 | 值 |
---|---|
项目名称 | my-phalcon |
虚拟主机目录 | /shared/httpd/my-phalcon |
数据库 | n.a. |
TLD_SUFFIX | loc |
项目 URL | http://my-phalcon.loc , https://my-phalcon.loc |
注意
- 在 Devilbox PHP 容器内,项目始终位于
/shared/httpd/
. - 在你的主机操作系统上,默认情况下项目位于
./data/www/
Devilbox git 目录内。此路径可以通过HOST_PATH_HTTPD_DATADIR
.
激活¶
你的环境将在六个简单步骤中准备就绪:
- 进入 PHP 容器
- 创建一个新的虚拟主机目录
- 安装 Phalcon
- 创建符号链接到 webroot 目录
- 设置 DNS 记录
- 访问
http://my-phalcon.loc
在你的浏览器中 - (Nginx)创建自定义虚拟主机配置文件
进入 PHP 容器¶
由于 PHP 容器提供了所有必要的工具,因此所有的操作都将在 PHP 容器内进行。导航到 Devilbox git 目录并执行./shell.sh
(或shell.bat
在 Windows 上)以进入正在运行的 PHP 容器。
创建新的虚拟主机目录¶
虚拟主机目录定义了你的项目将以何种名称可用。(<vhost dir>.TLD_SUFFIX
将是最终的 URL)。
安装 Phalcon¶
导航到新创建的虚拟主机目录,并使用phalcon
cli 安装 Phalcon。
devilbox@php-8.0 in /shared/httpd $ cd my-phalcon
devilbox@php-8.0 in /shared/httpd/my-phalcon $ phalcon project phalconphp
安装后的目录结构如下所示:
创建符号链接到 Webroot¶
将实际的 webroot 目录符号链接到htdocs
是很重要的。Web 服务器期望每个项目的文档根目录都在<vhost dir>/htdocs/
。这就是它将提供文件的路径。这也是你的应用程序入口点(通常是index.php
)需要存在的路径。
然而,某些框架在未知级别的嵌套目录中存储文件和内容。因此,不可能将其作为环境的预设。因此,你必须手动设置一个符号链接回到你的框架所需的预期路径。
安装后的目录结构如下所示:
devilbox@php-8.0 in /shared/httpd/my-phalcon $ tree -L 1
.
├── phalconphp
└── htdocs -> phalconphp/public
2 directories, 0 files
如上列表所示,web 服务器所需要的htdocs
文件夹现在指向你的框架的入口点。
注意
当使用Docker Toolbox时,你需要明确允许使用符号链接.
DNS 记录¶
如果你已经配置了自动 DNS,你可以跳过这一部分,因为由捆绑的 DNS 服务器提供的 DNS 条目将自动可用。
如果你没有配置自动 DNS,则需要将以下行添加到你的主机操作系统/etc/hosts
文件中(或在 Windows 上的C:\Windows\System32\drivers\etc
):
打开你的浏览器¶
打开你的浏览器并导航到http://my-phalcon.loc
或https://my-phalcon.loc
创建自定义虚拟主机配置文件(仅限 Nginx)¶
默认情况下,如果使用 Nginx,路由将无法正常工作。要修复此问题,你需要创建一个自定义虚拟主机配置。
在你的项目文件夹中,你需要创建一个名为.devilbox
的文件夹,除非你在HTTPD_TEMPLATE_DIR
中更改了.env
从默认的 nginx 配置文件./cfg/vhost-gen/nginx.yml-example-vhost
到./data/www/my-project/.devilbox/nginx.yml
小心编辑 nginx.yml 文件并更改:
try_files $uri $uri/ /index.php$is_args$args;
到
try_files $uri $uri/ /index.php?_url=$uri&$args;
和
location ~ \.php?$ {
到
location ~ [^/]\.php(/|$) {
保存文件为nginx.yml
并确保文件中不使用任何制表符,否则 Devilbox 不会使用自定义配置。你可以在 Devilbox shell 内使用yamllint nginx.yml
检查文件后再重启 Devilbox。