Quieres aprender php, pero las configuraciones te han abrumado y el deseo de aprender van mermando. No, no detengas tu aprendizaje, siempre existe una solución a los problemas. Instalar php, configurar un servidor web en Windows es muy sencillo, en Linux y macOS es otra situación. Debes conocer sobre la terminal, un editor de código, vim, nano, ser avanzado... y mucho más.
La herramienta que vamos a utilizar y que permite trabajar con php, un servidor web y la terminal es Docker
.
Docker: Es una plataforma de software que permite crear, probar e implementar aplicaciones rápidamente.
Docker-compose: Es una herramienta para definir y ejecutar aplicaciones; es multicontenedor que permite simplificar el uso de Docker a partir de archivos YAML, de esta forma es más sencillo generar contendores que se relacionen entre sí, conectarlos, habilitar puertos, volúmenes, etc.
Servidor web: software que permite a los usuarios ver una página web en su navegador. Servidores más utilizados Apache
y Nginx
.
Crear el archivo docker-compose.yml
con la siguiente configuración:
# Los archivos docker-compose.yml son versionados, lo que significa que es muy importante indicar la versión de las instrucciones que queremos darle.
version: "3.3"
# Servidor nginx
services:
web:
# versión
image: nginx:latest
# Puerto 8080
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./default.conf:/etc/nginx/conf.d/default.conf
links:
- php-fpm
# Configuración de php-fpm
php-fpm:
image: php:8-fpm
volumes:
- ./src:/var/www/html
Creamos un nuevo archivo con el nombre default.conf
con la siguiente configuración, al nivel que docker-compose.yml
.
# No te preocupes, por las configuraciones.
server {
index index.php index.html;
server_name phpfpm.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Crea e Iniciar el contenedor:
# Crea e inicia el contenedor
# -d inicia los contenedores en segundo plano y los deja en ejecución.
➜ docker-compose up -d
# Crea e inicia el contenedor en primer plano
➜ docker-compose up
Para que la interacción sea efectiva y el aprendizaje una experiencia positiva, los archivos .php
se crean dentro del directorio src
.
# directorio principal
├── docker-php
│ ├── default.conf
│ ├── docker-compose.yml
│ ├── README.md
│ └── src # Directorio
│ ├── holi.php
└── └── index.php
# Dentro de la carpte src, crear el archivo index.php
Crear el archivo index.php
en el directorio src
,
# contenido de index.php
<?php
echo phpinfo();
Ir al navegador favorito, visitar el siguiente enlace http://localhost:8080
. Surge algún un error con la conexión al servidor local, agregar en la dirección php-fpm.
a localhost:8080
. La dirección queda de la siguiente forma:
http://php-fpm.localhost:8080/
Listo, tienes corriendo tu primer servidor nginx
, junto a php
utilizando docker-compose
.
Ingresar a bash
de docker-compose
➜ docker-compose exec php-fpm bash
Crea el archivo variables.php
# crear archivo
touch variables.php
variables.php
<?php
// Definir variables
$numero_1 = 8;
$numero_2 = 7;
// Definir constantes
define("NUMERO_PI", 3.14);
// define("NUMERO_PI", 14);
echo NUMERO_PI;
echo "\n";
echo $numero_1 + $numero_2;
echo "\n";%
Ejecutamos el archivo php
en terminal:
php variables.php
Con el comando exit
, cerramos bash.
Detener el contenedor que se ejecuta en segundo plano
# Segundo plano
docker-compose down
Detener contenedor en primer plano
# Primer plano
ctl + c
Utilizar Docker para aprender un lenguaje de programación, es una oportunidad de no para de aprender.
Nunca pares de aprender