The Devilbox The Devilbox is a modern and highly customizable dockerized PHP stack supporting full LAMP and MEAN and running on all major platforms. El objetivo principal es fácilmente cambiar y combinar cualquier versión requerida para el desarrollo local. Soporta un número de proyectos ilimitado para vhosts, certificados SSL y registros DNS que se crean automáticamente. Se admiten proxies inversos por proyecto para garantizar que también se pueda acceder a un servidor de escucha como NodeJS. Las herramientas de desarrollo populares y de correo electrónico también estarán a su servicio. No será necesaria su configuración, ya que todo está preconfigurado.
Además, Devilbox proporciona un entorno de desarrollo idéntico y reproducible para diferentes sistemas operativos anfitriones.
Este ejemplo usará phalcon
para instalar Phalcon desde el contenedor PHP Devilbox. Una vez completados los pasos listados a continuación, tendrá una configuración funcional de Phalcon lista para ser servida a través de http y https.
Se puede usar la siguiente configuración:
Project name | my-phalcon |
VirtualHost directory | /shared/httpd/my-phalcon |
Database | n.a. | TLD_SUFFIX |
loc | Project URL | http://my-phalcon.loc , https://my-phalcon.loc |
- Dentro del contenedor PHP Devilbox, los proyectos siempre están en
/shared/httpd/
.- En su sistema operativo anfitrión, por defecto los proyectos están en
./data/www/
dentro del directorio git de Devilbox. Esta ruta puede ser cambiada medianteHOST_PATH_HTTPD_DATADIR
.
Su entorno estará listo en seis sencillos pasos:
http://my-phalcon.loc
en su navegadorTodo el trabajo se realizará dentro del contenedor PHP ya que ofrece todas las herramientas necesarias. Vaya al directorio git de Devilbox y ejecute ./shell.sh
(o shell.bat
en Windows) para entrar al contenedor PHP en ejecución.
host> ./shell.sh
El directorio vhost define el nombre bajo el cual estará disponible su proyecto. (<vhost dir>.TLD_SUFFIX
será la URL final).
[email protected] in /shared/httpd $ mkdir my-phalcon
Vaya a su recién creado directorio vhost e instale Phalcon con el cliente phalcon
.
[email protected] in /shared/httpd $ cd my-phalcon
[email protected] in /shared/httpd/my-phalcon $ phalcon project phalconphp
La estructura del directorio se ve así después de la instalación:
[email protected] in /shared/httpd/my-phalcon $ tree -L 1
.
└── phalconphp
1 directory, 0 files
Es importante enlazar simbólicamente el actual directorio webroot a htdocs
. El servidor web espera que cada document root de un proyecto esté en <vhost dir>/htdocs/
. Esta es la ruta donde servirá los ficheros. Esta también es la ruta donde debe existir el punto de entrada de su aplicación (normalmente index.php
).
Sin embargo algunos frameworks, almacenan ficheros y contenido en directorios anidados de niveles desconocidos. Por lo tanto, es imposible establecer esto como preconfiguración en el entorno. Por eso tendrá que establecer manualmente un enlace simbólico a la ruta esperada que requiera su framework.
[email protected] in /shared/httpd/my-phalcon $ ln -s phalconphp/public/ htdocs
La estructura del directorio se ve así después de la instalación:
[email protected] in /shared/httpd/my-phalcon $ tree -L 1
.
├── phalconphp
└── htdocs -> phalconphp/public
2 directories, 0 files
Como puede ver en el listado anterior, la carpeta htdocs
requerida por el servidor web está apuntando ahora al punto de entrada de su framework.
NOTE: When using Docker Toolbox, you need to explicitly allow the usage of symlinks.
If you have Auto DNS configured already, you can skip this section, because DNS entries will be available automatically by the bundled DNS server.
If you do not have Auto DNS configured, you will need to add the following line to your host operating system /etc/hosts
file (or C:\Windows\System32\drivers\etc
on Windows):
127.0.0.1 my-phalcon.loc
Abra su navegador y vaya a http://my-phalcon.loc
o https://my-phalcon.loc
Por defecto las rutas no funcionarán si usa Nginx. Para solucionarlo, necesitará crear una configuración personalizada vhost.
En su carpeta de proyecto, necesitará crear una carpeta llamada .devilbox
, a no ser que cambie HTTPD_TEMPLATE_DIR
en .env
Copie la configuración por defecto de ./cfg/vhost-gen/nginx.yml-example-vhost
a ./data/www/my-project/.devilbox/nginx.yml
Edite con cuidado el fichero nginx.yml y cambie:
try_files $uri $uri/ /index.php$is_args$args;
a
try_files $uri $uri/ /index.php?_url=$uri&$args;
and
location ~ \.php?$ {
a
location ~ [^/]\.php(/|$) {
Guarde el fichero como nginx.yml
y asegúrese de no usar ningún tabulador en el fichero o devilbox no usará la configuración personalizada. Puede usar yamllint nginx.yml
desde dentro del shell de Devilbox para comprobar el fichero antes de reiniciar devilbox.