Desplegar Aplicación Laravel Clouding
Desplegar Aplicación Laravel Clouding

Cómo Desplegar una Aplicación de Laravel, MySQL y Vue.js en Clouding

En este artículo, desplegaremos una Aplicación de Laravel en un Servidor Privado Virtual (VPS) usando el Software de Servidor Web Apache, MySQL como sistema gestor de base de datos y Vue.js para el diseño de las vistas e interfaces.

A todo esto, ¿Qué es un VPS y por qué utilizar uno?

VPS, que significa Servidor Privado Virtual, es una máquina virtual vendida como servicio por varias compañías de hosting. Se puede pensar que es similar al hardware de la CPU de un ordenador portátil, pero en su forma bruta, es decir, sin la pantalla, el teclado, etc.

Varias empresas como Google, Amazon ofrecen servicios de servidores en la nube (GCP, AWS, etc.). Como parte del servicio, se pueden prestar varios servidores situados en diferentes partes del mundo. Te cobran en base a diferentes estándares como las horas utilizadas, la utilización de la CPU, etc.

Utilizar un servidor en la nube no solo te permite un mejor rendimiento, sino además el control total de tu propio servidor. Hice un par de búsquedas y debido a la adaptabilidad decidí alojarme con Clouding VPS Cloud. Pasemos a todo el proceso, desde la configuración de mi servidor hasta la ejecución real de una aplicación web.

Iniciar con el VPS

Dirígete a Clouding.io (ofrece un servicio de Cloud VPS con 5€ de saldo GRATIS al registrarte) o tu proveedor de VPS favorito y compra los recursos que necesites. Puedes elegir la opción más barata si solo lo estás probando, pero te recomiendo obtener algo con al menos 1 GB de RAM si deseas ejecutar varias aplicaciones desde tu VPS.

Nota sobre Clouding

Clouding.io es una plataforma de servidores en la nube de excelente rendimiento, Datacenter en España, Linux o Windows, que se facturan por hora.

El registro en Clouding es simple y, solo debes verificar tus datos (email y teléfono) para recibir 5€ de regalo. Una vez recibido los créditos, podemos empezar con la configuración del servidor.

Configuración del Servidor

Al iniciar sesión en el sitio web, te redirigirá a la sección de Servidores, aquí hacemos clic en “Haz clic aquí para crear tu primer servidor“. A continuación, elegimos un nombre, sistema operativo y detalles de configuración del servidor.

Configuración del Servidor
Configuración del Servidor

Esta es la configuración de ejemplo: (3,90€ Por mes aproximadamente)

  • Nombre servidor: esgeeks
  • Sistema operativo: CentOS 7
  • 0.5 vCores
  • 2 GB de RAM por cada vCore. (1 GB de RAM en total)
  • 10 GB de disco SSD
  • Backups: 02 veces cada 7 días

No te preocupes por los volúmenes, podrás agregarlos más tarde sobre la marcha sin problemas (en caso necesites más recursos). Esperamos unos segundos a que el servidor se encuentre en estado Activo.

Una vez activado, anota la dirección IP pública. De ahora en adelante, esto es lo que más vas a usar. A partir de ahora, este tutorial será compatible con cualquier servidor VPS que ejecute CentOS u otras distribuciones de Linux.

2. Acceso SSH

El siguiente paso es acceder a nuestro servidor a través de SSH (Secure Shell). Los datos de acceso lo encontramos en los detalles del servidor, por ejemplo:

Detalles del servidor
Detalles del servidor

La manera principal de conectarte a un VPS Linux es con el uso de un cliente SSH. Para conectarte a tu VPS con SSH (línea de comando), necesitarás uno de los siguientes programas:

  • Putty, disponible para todas las versiones de Windows
  • WinSCP, disponible para todas las versiones de Windows
  • Terminal.app, empaquetado con todas las versiones de Mac OS X.
  • Tu aplicación shell / terminal favorita para Linux.

Después de iniciar Putty, WinSCP o abrir tu terminal shell, el programa requerirá las credenciales de inicio de sesión de VPS:

  • Dirección IP/Host
  • Nombre de usuario: root
  • Contraseña
  • Puerto SH : 22

En OS X y Linux, esta información se ingresa en la línea de comando usando el comando ssh en el siguiente formato, donde “xxxx” es la dirección IP del servidor y “22” es el número de puerto SSH:

ssh root@x.x.x.x -p 22

En este ejemplo, utilizaré un emulador de terminal como Cmder. Una vez conectado confirmaré la versión actual del servidor.

Acceso a SSH CentOS
Acceso a SSH CentOS

El comando de salida que representa es la versión actual de CentOS que se muestra con el número 7.9.2009. Introduce los siguientes comandos (en caso utilices CentOS) para limpiar y actualizar el sistema operativo.

yum clean all
yum -y update

Después de completar los pasos anteriores, completa el siguiente comando para reiniciar el sistema operativo.

reboot

3. Instalando LAMP

En primer lugar, debes agregar repositorios rpm REMI y EPEL en el sistema; estos repositorios tienen paquetes actualizados. Utilizaré el siguiente comando para CentOS 7.

Para instalar el repositorio EPEL:

yum -y install epel-release

Entonces, instalamos los repositorios EPEL adicionales desde dl.fedoraproject.org:

yum install wget
cd /tmp
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
ls *.rpm

Para instalar MySQL:

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
md5sum mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum install mysql-server
service mysqld start

Después de instalar MySQL, debes protegerlo. Por defecto, la cuenta de MySQL para ‘root‘ no tiene una contraseña asociada, y el servidor también incluye una base de datos de demostración y todos los permisos asociados a ella. Si este servidor va a ser público o se va a utilizar para algo remotamente serio, necesitamos reforzar un poco la seguridad.

/usr/bin/mysql_secure_installation

Para instalar PHP usa el siguiente comando:

yum --enablerepo=remi,epel install php php-zip php-mysql php-mcrypt php-xml php-mbstring

Si ejecutas el comando php -v, puedes ver que la versión predeterminada de PHP es 5.4, y entonces la actualizaremos.

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils
yum-config-manager --enable remi-php74
yum update
Instalar PHP 7
Instalar PHP 7

Luego reinicia Apache:

service httpd restart

4. Instalando Composer y Laravel

Se requiere Composer para instalar Laravel. Puedes instalar Composer usando los siguientes comandos:

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/bin/composer
chmod +x /usr/bin/composer
Instalar Composer
Instalar Composer

Entonces, para Laravel utilizamos los siguientes comandos:

cd /var/www
git clone https://github.com/laravel/laravel.git
cd /var/www/laravel
composer install

La instalación de requisitos previos es un poco larga, pero espera hasta que esté completamente instalada e ingresa los siguientes comandos:

chown -R apache.apache /var/www/laravel
chmod -R 755 /var/www/laravel
chmod -R 755 /var/www/laravel/storage

Usa este comando para escribir en el directorio de almacenamiento:

chcon -R -t httpd_sys_rw_content_t /var/www/laravel/storage

ADEMÁS

En caso necesites instalar Vue.js independientemente, primero debes instalar Node y NPM. En CentOS 7, deberás ejecutar lo siguiente:

curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
yum install nodejs

Entonces necesitas instalar vue-cli. Esto facilita la creación de aplicaciones Vue. Instálalo ejecutando:

npm install -g @vue/cli

Laravel por Defecto

Laravel usa el archivo .env para configurar el entorno. Utilizamos el archivo .env para configurar todas las variables de entorno para el programa, como base de datos, SMTP, clave de seguridad, etc.

cp .env.example .env

Ahora configura la clave de cifrado aleatoria de 32 bits que te proporcionó el Servicio de cifrado Illuminati (es broma, pero genéralo):

php artisan key:generate

Ahora agrega un host virtual en el archivo de configuración de Apache para acceder al Framework Laravel desde el navegador web. Para hacerlo, edita el archivo de configuración de Apache /etc/httpd/conf/httpd.conf y agrega el siguiente código al final del archivo.

vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
       ServerName mi.sitioweb.com
       ServerAlias 46.183.116.100


       DocumentRoot /var/www/laravel/public


       <Directory /var/www/laravel>
              AllowOverride All
       </Directory>
</VirtualHost>
Crear Apache Virtual Host
Crear Apache Virtual Host

Reinicia el servicio Apache y accede al framework Laravel usando tu navegador web favorito y comienza a desarrollar una gran aplicación web.

service httpd restart

Ahora accede al sitio web de Laravel en un navegador web.

Laravel 8 en servidor VPS
Laravel 8 en servidor VPS

5. Implementando nuestra Aplicación

Veamos un ejemplo de Laravel 8 + Vue 2 + AdminLTE 3

La siguiente es una plantilla CRUD de inicio basada en Laravel 8 + Vue 2 + AdminLTE 3 muy simple para una aplicación SPA. Entonces, empecemos a desplegarla en el servidor.

Los comandos son los siguientes:

git clone https://github.com/AnowarCST/laravel-vue-crud-starter.git
cd laravel-vue-crud-starter/
composer install
Clonar app desde Git
Clonar app desde Git

Ahora creamos una base de datos usando MySQL desde la línea de comandos:

  • Inicia sesión en MySQL como usuario root
mysql -u <usuario> -p
  • Cree un nuevo usuario de base de datos: (modifica db_usuario y P@s$w0rd123!)
GRANT ALL PRIVILEGES ON *.* TO 'db_usuario'@'localhost' IDENTIFIED BY 'P@s$w0rd123!';
  • Cierra la sesión de MySQL escribiendo:
\q
  • Inicia sesión como el nuevo usuario de la base de datos que acabas de crear:
mysql -u db_usuario -p
  • Crea una nueva base de datos: (Modifica db_nombre con el nombre real que te gustaría darle a la base de datos.)
CREATE DATABASE db_nombre;
Crear base datos desde CLI
Crear base datos desde CLI

Entonces, creamos el archivo de entorno de laravel:

cp .env.example .env

Y completamos las credenciales de la base de datos.

Configurar archivo env
Configurar archivo env

Por último, ejecuta los siguientes comandos:

php artisan key:generate
php artisan migrate
php artisan db:seed
php artisan passport:install
npm install
npm run dev

Nuevamente, agregamos un host virtual en el archivo de configuración de Apache.

vim /etc/httpd/conf/httpd.conf

Lo que resultaría en algo similar a lo siguiente:

<VirtualHost *:80>
       ServerName mi.sitioweb.com
       ServerAlias 46.183.116.100

       DocumentRoot /var/www/laravel-vue-crud-starter/public


       <Directory /var/www/laravel-vue-crud-starter>
              AllowOverride All
       </Directory>
</VirtualHost>

No olvidemos reiniciar el servidor apache:

service httpd restart

Ahora puedes continuar http://46.183.116.100 y ver la nueva página que acabamos de crear. ¿Y sabes lo que es genial? ¡Cualquier cambio en se implementará instantáneamente en el servidor!

Extra: Servidores DNS

Todo está correcto, pero ¿siempre se mostrará la dirección IP para acceder a mi aplicación? Por supuesto que no; todo lo que debemos hacer es apuntar un dominio a un servidor privado virtual (VPS). Dependiendo el servidor que estés utilizando, puedes encontrar una sección DNS para configurar los servidores DNS en tu dominio. Por suerte, Clouding.io incluye gratis el servicio de Hosting DNS.

Configurar Servidores DNS
Configurar Servidores DNS

Es importante recordar que los cambios en el DNS pueden tardar al menos hasta 24 horas en propagarse en todo el mundo. Una vez que el dominio comience a funcionar con tu VPS, tu aplicación estará pública a través del nombre de tu dominio.

6. Conclusión

Eso es todo, espero poder ayudarte con esta demostración de cómo EsGeeks implemento algunas de sus aplicaciones en servidores VPS Cloud y los hago funcionar 24/7 sin gastar mucho dinero; sobre todo utilizando Clouding. Si tuve un error tipográfico, un error de configuración o algo no funciona, no dudes en anotarlo en los comentarios a continuación.

Clouding Logo
EXPERIENCIA CON CLOUDING
Servidor Cloud + Servidor VPS
Si estás buscando iniciar con un servidor rápido, nuestra recomendación es Clouding. Incluso si eres nuevo y quieres comenzar a desplegar tus proyectos o aplicaciones. Nada mejor que controlar los gastos de tu servidor horas y sin mínimos mensuales.
Flexibilidad
Rendimiento
Precio
Lo positivo
Facturación por horas
Alta disponibilidad
Servicio de Cloud Pros
Lo negativo
No ofrece Plesk, Cpanel o similares
Solo IP de España
5

Estrellas

Visitar CLOUDING

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda