484

XAMPP era el entorno de desarrollo para PHP favorito de muchos, ya que incluía en empaquetados Base de datos, PHP, Perl, phpMyAdmin para la gestión de base de datos.
Sin embargo, XAMPP se quedó hasta la versión 8.2.12, aparentemente está descontinuado, por lo que es necesario buscar nuevas formas de probar y desarrollar PHP
Aquí entra en juego Docker, la idea es sencilla, instalar docker en fedora, crear un contenedor con PHP y MariaDB. De lado del host en éste caso Fedora, crear una carpeta donde estarán todos los proyectos, enviarlos a docker y desde el host abrir los proyectos en un navegador.
La instalación de docker se explica en éste otro post: Instalación de docker en Fedora
Crear una carpeta llamada www en la carpeta personal:
mkdir ~/www
Crear dentro del directorio ~/www los directorios de devs y docker
cd ~/www mkdir devs mkdir docker
Dentro del director docker crear los siguientes archivos:
gnome-text-editor docker-compose.yml
Y añadir el siguiente texto:
services:
web:
build:
context: .
dockerfile: Dockerfile
container_name: php-web
ports:
- "81:80"
volumes:
- ../devs:/var/www/html/devs
networks:
- backend
mariadb:
image: mariadb:11
container_name: mariadb
restart: always
ports:
- "3308:3306"
environment:
MYSQL_ROOT_PASSWORD: d7yMyRVFGybbPDcF
MYSQL_DATABASE: defaultdb
volumes:
- mariadb_data:/var/lib/mysql
- ./initdb:/docker-entrypoint-initdb.d
networks:
- backend
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
restart: always
ports:
- "8081:80"
environment:
PMA_HOST: mariadb
PMA_PORT: 3306
PMA_USER: root
PMA_PASSWORD: d7yMyRVFGybbPDcF
networks:
- backend
volumes:
mariadb_data:
networks:
backend:
gnome-text-editor Dockerfile
FROM php:8.4-apache RUN apt-get update && apt-get install -y \ libpng-dev libjpeg-dev libfreetype6-dev \ libonig-dev libxml2-dev zip unzip git curl \ libicu-dev mariadb-client \ && docker-php-ext-install intl pdo pdo_mysql RUN a2enmod rewrite RUN echo '\n\ DocumentRoot /var/www/html\n\ ' > /etc/apache2/sites-available/000-default.conf\n\ Options Indexes FollowSymLinks\n\ AllowOverride All\n\ Require all granted\n\ \n\
Crear una carpeta llamada initdb crear el siguiente archivo y pegar el contenido:
gnome-text-editor root-remote
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY 'd7yMyRVFGybbPDcF'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
Para ejecutar el contenedor en segundo plano usar:
docker compose up --build -d
Para ejecutar el contenedor no en segundo plano:
docker compose up --build
Cada proyecto que ese cree dentro del directorio ~/www/devs/ deberá contener el sigueinte htaccess. Para ésto, entrar al proyecto creado, por ejemplo, para un proyecto de laravel, añadir lo siguiente:
gnome-text-editor .htaccess
Options All -Indexes
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>
ServerSignature Off
<Files .env>
order allow,deny
Deny from all
</Files>
Si es un proyecto de laravel o codeigniter modificar el archivo .env para el acceso de la base de datos:
DB_CONNECTION=mysql #para acceder a los datos desde la aplicacion usar esta linea, y para migraciones, comentar esta linea DB_HOST=mariadb DB_PORT=3306 #para migraciones se descomenta la linea de abajo #DB_HOST=127.0.0.1 DB_DATABASE=dashtool DB_USERNAME=root DB_PASSWORD=d7yMyRV
Y listo, eso sería todo. Ahora los proyecto se lanzarán directo.