Crear y ejecutar un proyecto Laravel en ServBay
Descripción general
ServBay es un potente entorno de desarrollo web local diseñado especialmente para macOS, que integra numerosos paquetes populares, incluyendo PHP, Node.js, Python, Go, Java, varias bases de datos (MySQL, PostgreSQL, MongoDB), servicios de caché (Redis, Memcached) y servidores web (Caddy, Nginx, Apache).
Este documento te guiará en el proceso de creación, configuración y ejecución de un proyecto Laravel en el entorno de ServBay. Aprovecharemos el entorno PHP integrado de ServBay, el gestor de paquetes Composer y la potente función de administración de sitios web (anteriormente llamada "Hosts") para simplificar todo el proceso.
¿Qué es Laravel?
Laravel es un conocido framework de desarrollo web en PHP de código abierto, creado por Taylor Otwell. Sigue el patrón de arquitectura MVC (Modelo-Vista-Controlador) y ofrece muchas funcionalidades listas para usar, destinadas a simplificar tareas comunes en el desarrollo web como autenticación de usuarios, enrutamiento, gestión de sesiones, caché y operaciones con bases de datos. Laravel es reconocido por su sintaxis elegante, su riqueza de funciones y una fuerte comunidad de soporte, siendo una opción ideal para desarrollar aplicaciones web modernas y mantenibles.
Principales características y ventajas de Laravel
- Sintaxis elegante: Código limpio, expresivo y fácil de leer, mejorando la productividad y la comprensión.
- Eloquent ORM: Proporciona una poderosa implementación de ActiveRecord que convierte la interacción con bases de datos en una tarea sencilla e intuitiva.
- Consola Artisan: Incluye numerosas herramientas CLI para realizar migraciones, generación de código, ejecución de tests y más.
- Motor de plantillas Blade: Permite construir vistas dinámicas fácilmente con una sintaxis de plantilla clara y eficiente.
- Ecosistema amplio: Dispone de una gran cantidad de paquetes oficiales y de terceros, fácil de integrar vía Composer.
- Comunidad robusta: Una comunidad activa que ofrece abundantes recursos, tutoriales y soluciones.
Ventajas de desarrollar proyectos Laravel con ServBay
ServBay aporta grandes facilidades a los desarrolladores Laravel:
- Entorno integrado: ServBay viene con múltiples versiones de PHP, Composer y servicios habituales de base de datos y caché ya instalados, sin necesidad de instalaciones o configuraciones manuales adicionales.
- Gestión sencilla: Mediante la interfaz gráfica de ServBay, puedes alternar versiones de PHP, gestionar la configuración de sitios (webs) y controlar el inicio/parada de servicios fácilmente.
- Servidor web preconfigurado: ServBay utiliza por defecto Caddy, con una configuración optimizada para los principales frameworks PHP (incluido Laravel), simplificando la puesta en marcha del servidor web.
- Soporte HTTPS: ServBay configura automáticamente certificados SSL emitidos por ServBay User CA para dominios
.local
, habilitando HTTPS por defecto y ofreciendo una experiencia de desarrollo segura y parecida a la de producción.
Crear un proyecto Laravel
Se recomienda almacenar tus proyectos web en el directorio /Applications/ServBay/www
para mantener una estructura organizada y fácil de administrar.
Verificar que Composer está instalado
ServBay incluye Composer por defecto, por lo que no necesitas instalarlo por separado. Puedes verificarlo desde la terminal ejecutando:
bashcomposer --version
1Si el comando responde mostrando la versión, Composer está listo para usarse.
Crear un nuevo proyecto Laravel
Abre la terminal, navega al directorio recomendado y usa Composer para crear el proyecto Laravel. Llamaremos
servbay-laravel-app
a la carpeta del proyecto:bashcd /Applications/ServBay/www # Crear el directorio del proyecto mkdir servbay-laravel-app # Entrar en el directorio cd servbay-laravel-app # Crear el proyecto Laravel en el directorio actual composer create-project --prefer-dist laravel/laravel .
1
2
3
4
5
6
7Composer descargará e instalará Laravel y todas sus dependencias.
Acceder al directorio del proyecto
Asegúrate de estar en la raíz del proyecto Laravel recién creado:
bashcd /Applications/ServBay/www/servbay-laravel-app
1
Configuración inicial
Generar la clave de la aplicación
Laravel utiliza una clave de aplicación para proteger sesiones y datos cifrados. En la raíz del proyecto (
/Applications/ServBay/www/servbay-laravel-app
), ejecuta el siguiente comando Artisan:bashphp artisan key:generate
1Este comando generará y establecerá el valor de
APP_KEY
en el archivo.env
.Configurar variables de entorno (
.env
)Laravel utiliza el archivo
.env
para administrar variables de entorno como la conexión a la base de datos y el URL de la app. Edita este archivo en la raíz del proyecto y asegúrate de configurar los siguientes valores básicos:dotenvAPP_NAME=ServBay Laravel Demo APP_ENV=local APP_KEY=base64:... # Este valor ya ha sido generado por php artisan key:generate APP_DEBUG=true APP_URL=https://servbay-laravel-test.local LOG_CHANNEL=stack # Ejemplo de configuración de base de datos (MySQL) DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=servbay_laravel_app # Nombre de la base de datos que vas a utilizar DB_USERNAME=root # Usuario por defecto de ServBay DB_PASSWORD=password # Contraseña por defecto de ServBay # Ejemplo de configuración de caché/cola (Redis) CACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # Redis en ServBay por defecto no tiene contraseña REDIS_PORT=6379 # Ejemplo de configuración de caché/cola (Memcached) # CACHE_STORE=memcached # MEMCACHED_HOST=127.0.0.1 # MEMCACHED_PORT=11211
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26Nota: Deberás ajustar
DB_*
,REDIS_*
oMEMCACHED_*
según el tipo de base de datos o servicio que utilices realmente. Puedes consultar usuario y contraseña por defecto de las bases de datos en el panel de control de ServBay.
Configurar el servidor web (Agregar un sitio web en ServBay)
Utiliza la función de administración de sitios de ServBay para configurar el servidor web y apuntar tu dominio al directorio public
del proyecto Laravel.
Abre el panel de control de ServBay
Inicia la aplicación ServBay y abre su panel de control.
Agrega un nuevo sitio web
Navega a la sección "Sitios" en el panel de control de ServBay. Haz clic en el botón para agregar un nuevo sitio (usualmente un
+
o un icono similar).Completa la información del sitio
Configura los siguientes campos de ejemplo:
- Nombre:
My First Laravel Dev Site
(puedes elegir el nombre que prefieras) - Dominio:
servbay-laravel-test.local
(el dominio para el navegador) - Tipo de sitio:
PHP
- Versión de PHP: Elige la versión adecuada para tu proyecto, por ejemplo
8.3
. - Raíz del sitio:
/Applications/ServBay/www/servbay-laravel-app/public
(Importante: Debe apuntar al subdirectoriopublic
de la raíz del proyecto Laravel)
Para más detalles, consulta la documentación oficial sobre cómo agregar tu primer sitio (busca el enlace en inglés).
- Nombre:
Guardar y aplicar los cambios
Guarda la configuración. ServBay actualizará automáticamente la configuración de sus servidores web (por defecto, Caddy). Si se solicita reiniciar el servidor web, sigue las instrucciones.
Verificar acceso básico
Ahora deberías poder acceder a tu proyecto Laravel mediante el dominio configurado.
Abre tu navegador
Escribe el dominio configurado, por ejemplo
https://servbay-laravel-test.local
.Visualiza el resultado
Si todo está bien configurado, verás la página de bienvenida de Laravel.
Añadir un ejemplo de código sencillo
Para verificar visualmente, vamos a añadir una ruta básica en el archivo routes/web.php
que muestre "Hello ServBay!".
Busca en el directorio del proyecto el archivo routes/web.php
y añade o modifica lo siguiente:
php
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Aquí puedes registrar rutas web para tu aplicación. Estas rutas
| estarán disponibles a través del proveedor de rutas dentro de un grupo
| que contiene el middleware "web". ¡Crea algo increíble!
|
*/
Route::get('/', function () {
return 'Hello ServBay!'; // Modifica o añade esta línea
});
// ... otras rutas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Después de guardar, visita https://servbay-laravel-test.local
. Ahora deberías ver Hello ServBay!
en tu navegador.
Ejemplo de integración de bases de datos
Laravel proporciona una potente capa de abstracción y su ORM (Eloquent), permitiendo interactuar fácilmente con varias bases de datos. ServBay viene con MySQL, PostgreSQL, MongoDB, Redis y Memcached preinstalados, facilitando el desarrollo y pruebas locales.
Ejemplo con bases de datos NoSQL
ServBay integra Redis y Memcached por defecto y ya tiene las extensiones PHP necesarias.
Ejemplo con Memcached
Configura el
.env
Ajusta la conexión a Memcached (si aún no lo hiciste) en el archivo
.env
:dotenvCACHE_STORE=memcached MEMCACHED_HOST=127.0.0.1 MEMCACHED_PORT=11211 # Puerto predeterminado de Memcached en ServBay
1
2
3Utilizar Memcached
En tus rutas o controladores, utiliza el facade de caché de Laravel para interactuar con Memcached.
Añade la siguiente ruta de ejemplo en
routes/web.php
:phpuse Illuminate\Support\Facades\Cache; Route::get('/memcached-test', function () { // Almacenar datos en la caché por 10 minutos (600 segundos) Cache::put('servbay_memcached_key', '¡Hola desde Memcached en ServBay!', 600); // Obtener datos desde la caché $value = Cache::get('servbay_memcached_key'); if ($value) { return "Datos Memcached: " . $value; } else { return "No existen datos en Memcached o han expirado."; } });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Visita
https://servbay-laravel-test.local/memcached-test
para probarlo.
Ejemplo con Redis
Configura el
.env
Ajusta la conexión a Redis (si aún no lo hiciste) en el archivo
.env
:dotenvCACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # Redis en ServBay no tiene contraseña por defecto REDIS_PORT=6379 # Puerto predeterminado de Redis en ServBay
1
2
3
4Nota: Si configuras tanto Memcached como Redis, asegúrate de activar sólo el deseado (comentando el otro con
#
).Utilizar Redis
En tus rutas o controladores, utiliza los facades Redis o Cache para interactuar con Redis.
Añade esta ruta de ejemplo en
routes/web.php
:phpuse Illuminate\Support\Facades\Redis; // O usa el facade Cache, siempre que CACHE_STORE=redis // use Illuminate\Support\Facades\Cache; Route::get('/redis-test', function () { // Usando Redis facade Redis::set('servbay_redis_key', '¡Hola desde Redis en ServBay!'); $value_redis = Redis::get('servbay_redis_key'); // O usando Cache facade (si CACHE_STORE=redis) // Cache::put('servbay_redis_key', '¡Hola desde Redis en ServBay!', 600); // $value_cache = Cache::get('servbay_redis_key'); return "Datos Redis: " . $value_redis; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Visita
https://servbay-laravel-test.local/redis-test
para probarlo.
Ejemplo con bases de datos relacionales (MySQL & PostgreSQL)
ServBay incluye MySQL y PostgreSQL listos para usar. Eloquent ORM de Laravel permite la conexión sencilla.
Primero, crea la base de datos para el proyecto. Puedes usar herramientas como phpMyAdmin, Adminer, pgAdmin, o el propio cliente de línea de comandos disponibles mediante el panel de ServBay para crear la base servbay_laravel_app
.
Luego, vamos a crear la estructura de tablas con migraciones de Laravel.
Crear un archivo de migración
Ejecuta el siguiente comando Artisan en la raíz del proyecto para crear una migración:
bashphp artisan make:migration create_accounts_table --create=accounts
1Se generará un archivo nuevo en
database/migrations
.Editar el archivo de migración
Abre el archivo creado (nombre similar a
YYYY_MM_DD_HHMMSS_create_accounts_table.php
) y define la estructura en el métodoup
:php<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Ejecutar las migraciones. */ public function up(): void { Schema::create('accounts', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); // Añade las columnas created_at y updated_at }); } /** * Revertir las migraciones. */ public function down(): void { Schema::dropIfExists('accounts'); } };
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29Guarda el archivo.
Ejecutar la migración
Ejecuta la migración para crear la tabla
accounts
:bashphp artisan migrate
1Si la configuración es correcta y la base de datos
servbay_laravel_app
existe, se crearán las tablasaccounts
y las predeterminadas de Laravel comousers
,password_reset_tokens
,failed_jobs
,cache
,cache_locks
,jobs
,job_batches
, etc.
Ejemplo MySQL
Configura
.env
para MySQLAjusta la configuración en el archivo
.env
:dotenvDB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 # Puerto MySQL predeterminado en ServBay DB_DATABASE=servbay_laravel_app DB_USERNAME=root DB_PASSWORD=password # Contraseña predeterminada de MySQL en ServBay
1
2
3
4
5
6Insertar datos de prueba
Añade una ruta en
routes/web.php
para insertar un registro enaccounts
:phpuse Illuminate\Support\Facades\DB; Route::get('/mysql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay Demo User', 'email' => '[email protected]', 'created_at' => now(), 'updated_at' => now(), ]); return '¡Cuenta añadida en MySQL!'; });
1
2
3
4
5
6
7
8
9
10
11Visita
https://servbay-laravel-test.local/mysql-add-account
para agregar los datos.Leer datos de ejemplo
Añade una ruta para leer registros en
accounts
:phpuse App\Models\Account; // Si has creado el modelo Account // O usa directamente DB facade Route::get('/mysql-accounts', function () { // Usando DB facade $accounts = DB::table('accounts')->get(); // O usando Eloquent ORM (si existe el modelo) // $accounts = Account::all(); return $accounts; });
1
2
3
4
5
6
7
8
9
10
11
12Visita
https://servbay-laravel-test.local/mysql-accounts
para ver los datos.
Ejemplo PostgreSQL
Configura
.env
para PostgreSQLSi prefieres PostgreSQL, ajusta el archivo
.env
:dotenvDB_CONNECTION=pgsql DB_HOST=127.0.0.1 DB_PORT=5432 # Puerto predeterminado de PostgreSQL en ServBay DB_DATABASE=servbay_laravel_app DB_USERNAME=root # Usuario por defecto de PostgreSQL en ServBay DB_PASSWORD=password # Contraseña por defecto de PostgreSQL en ServBay
1
2
3
4
5
6Nota: Tras cambiar de base de datos, puedes requerir ejecutar
php artisan migrate:refresh
ophp artisan migrate
para que se creen las tablas en PostgreSQL.Insertar datos de ejemplo (PostgreSQL)
Añade esta ruta en
routes/web.php
para agregar un registro:phpuse Illuminate\Support\Facades\DB; Route::get('/pgsql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay PG Demo User', 'email' => '[email protected]', 'created_at' => now(), 'updated_at' => now(), ]); return '¡Cuenta añadida en PostgreSQL!'; });
1
2
3
4
5
6
7
8
9
10
11Visita
https://servbay-laravel-test.local/pgsql-add-account
para agregar datos.Leer datos de ejemplo (PostgreSQL)
Añade una ruta para visualizar registros:
phpuse Illuminate\Support\Facades\DB; Route::get('/pgsql-accounts', function () { $accounts = DB::table('accounts')->get(); return $accounts; });
1
2
3
4
5
6Visita
https://servbay-laravel-test.local/pgsql-accounts
para consultar los registros.
Resumen
Con ServBay, puedes montar en macOS un entorno de desarrollo local para crear y ejecutar proyectos Laravel fácilmente. ServBay integra PHP, Composer, el servidor web Caddy y múltiples bases de datos y sistemas de caché, facilitando la configuración del entorno. Con apenas unos pasos, serás capaz de crear un nuevo proyecto Laravel, configurar el servidor web e iniciar el desarrollo, integrando y probando fácilmente funcionalidades de base de datos y caché. ServBay está diseñado para ofrecer a los desarrolladores una experiencia de desarrollo local eficiente y cómoda.
Si tienes alguna duda durante el uso, puedes consultar la documentación oficial de ServBay o pedir ayuda a la comunidad.