Instalar Laravel con phpMyAdmin en Ubuntu Server

Prerrequisitos

  • Ubuntu Server 18.04/20.04/22.04 LTS

  • Acceso SSH o consola del servidor

  • Usuario con privilegios sudo


Paso 1: Actualizar el sistema

bash
sudo apt update && sudo apt upgrade -y

Paso 2: Instalar PHP y extensiones necesarias

Para PHP 8.1 (Recomendado para Laravel 9/10):

bash
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

sudo apt install -y php8.1 php8.1-cli php8.1-fpm php8.1-mysql php8.1-curl \
php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip php8.1-bcmath \
php8.1-common php8.1-intl php8.1-soap php8.1-json

Verificar instalación de PHP:

bash
php -v

Paso 3: Instalar MySQL Server

bash
sudo apt install -y mysql-server mysql-client

Configurar seguridad de MySQL:

bash
sudo mysql_secure_installation

Seguir las indicaciones:

  • Configurar plugin de validación de contraseñas

  • Establecer contraseña para root

  • Remover usuarios anónimos

  • Deshabilitar login remoto de root

  • Remover base de datos de test

  • Recargar privilegios


Paso 4: Instalar Apache y configurar

bash
sudo apt install -y apache2

Habilitar módulos necesarios:

bash
sudo a2enmod rewrite
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.1-fpm

Reiniciar Apache:

bash
sudo systemctl restart apache2

Paso 5: Instalar Composer

bash
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Verificar instalación:

bash
composer --version

Paso 6: Instalar Laravel

Crear proyecto Laravel:

bash
cd /var/www
sudo composer create-project laravel/laravel mi-proyecto

Configurar permisos:

bash
sudo chown -R www-data:www-data /var/www/mi-proyecto
sudo chmod -R 775 /var/www/mi-proyecto/storage
sudo chmod -R 775 /var/www/mi-proyecto/bootstrap/cache

Paso 7: Configurar base de datos para Laravel

Acceder a MySQL:

bash
sudo mysql -u root -p

Crear base de datos y usuario:

sql
CREATE DATABASE laravel_db;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'tu_password_seguro';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Configurar variables de entorno:

bash
cd /var/www/mi-proyecto
cp .env.example .env
sudo nano .env

Editar las siguientes líneas en el archivo .env:

env
APP_NAME="Mi Proyecto Laravel"
APP_ENV=production
APP_DEBUG=false
APP_URL=http://tu-dominio.com

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=tu_password_seguro

Generar key de la aplicación:

bash
php artisan key:generate

Ejecutar migraciones:

bash
php artisan migrate

Paso 8: Configurar Virtual Host en Apache

Crear archivo de configuración:

bash
sudo nano /etc/apache2/sites-available/laravel.conf

Agregar siguiente contenido:

apache
<VirtualHost *:80>
    ServerName tu-dominio.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/mi-proyecto/public

    <Directory /var/www/mi-proyecto/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Habilitar el sitio y deshabilitar el default:

bash
sudo a2dissite 000-default.conf
sudo a2ensite laravel.conf
sudo systemctl reload apache2

Paso 9: Instalar phpMyAdmin

bash
sudo apt install -y phpmyadmin

Durante la instalación:

  • Seleccionar "apache2" como servidor web

  • Configurar para dbconfig-common: Sí

  • Establecer contraseña para phpMyAdmin

Si no aparece el asistente, configurar manualmente:

bash
sudo apt install -y phpmyadmin php-mbstring php-gettext

Habilitar extensiones PHP necesarias:

bash
sudo phpenmod mbstring
sudo systemctl restart apache2

Paso 10: Configurar acceso a phpMyAdmin

Crear enlace simbólico (opcional):

bash
sudo ln -s /usr/share/phpmyadmin /var/www/mi-proyecto/public/phpmyadmin

O configurar subdominio (recomendado):

bash
sudo nano /etc/apache2/sites-available/phpmyadmin.conf
apache
<VirtualHost *:80>
    ServerName pma.tu-dominio.com
    DocumentRoot /usr/share/phpmyadmin

    <Directory /usr/share/phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/phpmyadmin_error.log
    CustomLog ${APACHE_LOG_DIR}/phpmyadmin_access.log combined
</VirtualHost>
bash
sudo a2ensite phpmyadmin.conf
sudo systemctl reload apache2

Paso 11: Configurar seguridad

Proteger phpMyAdmin con autenticación adicional:

bash
sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Agregar al final del archivo:

apache
<Directory /usr/share/phpmyadmin>
    AuthType Basic
    AuthName "Restricted Files"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user
</Directory>

Crear usuario y contraseña:

bash
sudo htpasswd -c /etc/phpmyadmin/.htpasswd usuario_admin

Recargar configuración:

bash
sudo systemctl reload apache2

Paso 12: Probar la instalación

Verificar Laravel:

Abrir en navegador: http://tu-dominio.com

Verificar phpMyAdmin:

Abrir en navegador: http://tu-dominio.com/phpmyadmin o http://pma.tu-dominio.com


Comandos útiles para gestión

Reiniciar servicios:

bash
sudo systemctl restart apache2
sudo systemctl restart mysql
sudo systemctl restart php8.1-fpm

Ver estado de servicios:

bash
sudo systemctl status apache2
sudo systemctl status mysql
sudo systemctl status php8.1-fpm

Logs de Laravel:

bash
tail -f /var/www/mi-proyecto/storage/logs/laravel.log

Logs de Apache:

bash
sudo tail -f /var/log/apache2/error.log

Solución de problemas comunes

Error de permisos en Laravel:

bash
sudo chown -R www-data:www-data /var/www/mi-proyecto
sudo chmod -R 775 /var/www/mi-proyecto/storage
sudo chmod -R 775 /var/www/mi-proyecto/bootstrap/cache

Error "Class 'ZipArchive' not found":

bash
sudo apt install -y php8.1-zip
sudo systemctl restart apache2

phpMyAdmin no carga:

bash
sudo phpenmod mbstring
sudo systemctl restart apache2

¡Tu instalación de Laravel con phpMyAdmin en Ubuntu Server está lista!

Comentarios

Entradas más populares de este blog

ejercicios-Crear Carpeta y Archivo de Texto en Ubuntu

Tutorial de Carpetas y Directorios en Ubuntu Linux

Instalar Docker en Ubuntu Server usando docker.io