¿Te gustaría Java desde cero?
Tenemos los diplomados que necesitas.¡Haz clic aquí!

 

 

Configurando MySQL para producción

Al crear un droplet, una contraseña para MySQL se genera por defecto y se guarda en /root/.digitalocean_password.

Como vamos a necesitar esta contraseña para hacer la configuración de nuestra base de datos, accedemos a este archivo usando el comando nano, de esta forma:

nano /root/.digitalocean_password

Al acceder encontraremos algo como lo siguiente:

root_mysql_pass="6f7e9dc57de26a6f283585d733315b39a0f31f3dcecb1bc7"

Entonces copiamos lo que está entre las comillas dobles, e iniciamos nuestra configuración con el siguiente comando:

mysql_secure_installation

Aquí se nos pedirá ingresar la contraseña (en versiones más recientes no lo solicita; en caso que sí, debemos pegar lo que copiamos antes).

El comando iniciará la configuración, y te preguntará por varios detalles.

Para responder con un sí debes escribir una «y». Cualquier otro caracter se corresponde con un no. Responde según convenga.

En resumen, las preguntas serán las siguientes (y las respuestas que usaremos en este caso son también las siguientes):

  • ¿Desea instalar un plugin para validar la fortaleza de las contraseñas?: No
  • ¿Desea cambiar la contraseña para el usuario principal de la base de datos?: Sí
  • Nueva contraseña: [Aquí debes ingresar la que consideres adecuada; es importante cambiar la contraseña por motivos de seguridad y tenerla guardada en algún lugar importante]
  • Volver a ingresar la contraseña: [Repetimos la nueva contraseña que usaremos en adelante]
  • ¿Desea eliminar los usuarios anónimos? Sí
  • Deshabilitar conexión remota a la base de datos: Sí
  • ¿Desea eliminar las tablas de prueba y sus accesos? Sí
  • ¿Desea recargar los privilegios de las tablas ahora? Sí

Instalación de phpMyAdmin

Instalar phpMyAdmin es un paso opcional. Vamos a hacerlo como parte de este tutorial ya que la mayoría cuando empieza suele trabajar bastante con esta herramienta.

Según lo necesites, recuerda que también puedes habilitar una conexión remota y usar otro cliente de MySQL (como Workbench, DataGrip, Sequel Pro, etcétera).

Ejecuta el siguiente comando para iniciar con el proceso de instalación:

sudo apt-get install phpmyadmin

El instalador te hará varias preguntas; tenemos que:

  • Seleccionar Apache2
  • Escoger YES cuando nos pregunte Configure database for phpmyadmin with dbconfig-common?
  • Ingresar nuestra nueva contraseña de MySQL (que configuramos hace instantes)
  • Repetir nuevamente la contraseña

Una vez instalado editamos el archivo de configuración de Apache:

sudo nano /etc/apache2/apache2.conf

Y añadimos esta línea al final de todo:

Include /etc/phpmyadmin/apache.conf

Con ello finalizamos la instalación, y debemos reiniciar Apache antes de continuar:

sudo service apache2 restart

La instalación que hemos hecho hasta ahora nos permitirá administrar nuestras base de datos fácilmente accediendo a /phpmyadmin desde la IP de nuestro droplet.

Hasta aquí, la configuración resulta útil para cualquier proyecto de PHP. Ahora pasaremos a configurar puntos más específicos con relación a Laravel.

Configuración específica para Laravel

Lo primero que haremos será instalar composer:

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Y luego GIT, para hacer deploy a través de un repositorio:

sudo apt-get install git

Genial. Ya tenemos todo listo para clonar nuestro proyecto Laravel (a partir de un repositorio remoto que se puede encontrar en Github, Bitbucket, Gitlab u otro).

Para ello nos ubicamos en /var/www de la siguiente manera:

¡Y clonamos nuestro repositorio!

En mi caso usaré:

git clone https://github.com/JCarlosR/gestion-incidencias.git

Como mi proyecto se llama gestion-incidencias voy a verificar que esta carpeta se haya creado correctamente ingresando con cd y luego consultando su contenido con ls como lo muestra la imagen:

Nuestra carpeta se ha creado. Pero recuerda: un proyecto Laravel tiene dependencias sobre otros paquetes. Estas dependencias se especifican en el archivo composer.json.

Entonces para instalar lo necesario ejecutamos el siguiente comando:

composer install

La descarga de las dependencias probablemente tarde un par de minutos, dependiendo del proyecto.

Nota: Si no puedes instalar las dependencias por no contar con las extensiones de php requeridas por Laravel, y usas php7.2, puedes instalarlas usando:

sudo apt-get install php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-intl php7.2-mysql php7.2-xml php7.2-zip

Una vez que haya finalizado esta descarga, debemos dar permisos a la carpeta storage. Para ello ejecutamos:

sudo chown -R www-data: storage
sudo chmod -R 755 storage

Apuntar a la carpeta /public

Así es. Estamos muy cerca del final. Lo que nos falta es que nuestro host reconozca a la carpeta public como la ruta base de nuestro proyecto.

Para ello tenemos que editar un archivo de configuración de Apache con el siguiente comando:

nano /etc/apache2/sites-enabled/000-default.conf

Aquí tenemos que reemplazar estas lineas:

DocumentRoot /var/www/html

<Directory /var/www/html/>

Por estas 2, respectivamente:

DocumentRoot /var/www/gestion-incidencias/public

<Directory /var/www/gestion-incidencias/public/>

Y agregar estas 2 líneas dentro de la etiqueta Directory:

RewriteEngine On
RewriteBase /var/www/gestion-incidencias/public

Guardamos los cambios en el archivo, y reiniciamos Apache una última vez:

sudo service apache2 restart

Creando nuestro archivo de configuración .env


Nuestro servidor ya está configurado, pero recordemos que todo proyecto Laravel se basa en un archivo .env para guardar allí las credenciales que usa nuestro sistema.

Este archivo .env forma parte de nuestro .gitignore por lo que (como se espera) no fue clonado y tenemos que crearlo.

Para crear este archivo escribimos:

nano .env

Y para definir su contenido simplemente vamos a copiar nuestro archivo .env que usamos de forma local (como guía).

Ten en cuenta que podemos tener una configuración distinta para producción y desarrollo. En ese caso nuestros archivos .env serán distintos.

Un ejemplo simple para que se entienda esto es lo siguiente: de forma local no uso contraseña para conectarme a MySQL, pero en producción de hecho que existe una contraseña, que hace poco definimos.

Migraciones, seeders y demás

En mi archivo .env la variable DB_DATABASE tiene como valor incidencias. Eso significa que ese es el nombre de la base de datos que usa mi proyecto.

Lo que haré entonces será crear esta base de datos.

Tú debes hacer lo mismo: Crear la base de datos que tu proyecto requiere (se puede hacer desde phpMyAdmin, o desde la consola misma).

Esta base de datos estará totalmente vacía, pero las migraciones harán magia:

php artisan migrate

Si tus seeders solo contienen datos de prueba que usas de forma local, no será necesario ejecutarlos aquí.

En caso que los datos sean importantes para el funcionamiento en producción, puedes usar:

php artisan db:seed

O en su defecto, usar el siguiente comando (equivalente a los 2 anteriores):

php artisan migrate --seed

Y eso es todo.

¿No puedes iniciar sesión en phpMyAdmin o Laravel no reconoce tus credenciales de MySQL?

Algunos estudiantes del curso comentaron tener inconvenientes con MySQL.

Quienes han resuelto este inconveniente lo hicieron modificando la contraseña del usuario root, ya que las credenciales no eran admitidas.

Así que, si necesitas cambiar la contraseña de tu usuario de MySQL, lo puedes hacer de la siguiente manera.

Desde el droplet, ejecuta el siguiente comando:

mysql -u root

Una vez que te hayas conectado a MySQL, puedes hacer lo siguiente para actualizar la contraseña.

Por ejemplo, si quieres que la nueva contraseña sea «indescifrable»:

mysql> USE mysql; 
Database changed

mysql> UPDATE user SET authentication_string=PASSWORD("indescifrable") WHERE User='root';
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 1

mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

Finalmente, le pedimos a MySQL que vuelva a cargar los permisos.

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Y nos despedimos:

mysql> quit
Bye

 

Te esperamos en la segunda parte del articulo en donde hablaremos mas acerca de estos
temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría Java desde cero?
Tenemos los diplomados que necesitas.¡Haz clic aquí!

About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax