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