Implementación rápida en la web para Laravel con GitHub, Linode y RunCloud.io

Si usted es un programador PHP que trabaja con Laravel Framework, estoy seguro de que implementa su aplicación web en servidores en la nube en proveedores como Linode, Digital Ocean, Vultr y el resto. Esto se debe a que con un marco como Laravel, que funciona estrechamente con herramientas como Git y Composer, es cada vez menos probable que su aplicación se pueda servir desde un entorno de alojamiento compartido..

Este artículo le mostrará cómo configurar su servidor web para su aplicación Laravel en el alojamiento en la nube de Linode usando la herramienta de administración de servidores RunCloud.io.

Puede registrarse para obtener una cuenta gratuita de RunCloud ahora. 

Usaremos Git junto con la función Webhook de GitHub. Cuando haya terminado, simplemente podemos hacer un compromiso y un empuje a GitHub, y su servidor se actualizará con el último código fuente. RunCloud facilita la configuración de su servidor para poder implementar su aplicación de esta manera, y le mostraré cómo hacerlo hoy.

Por supuesto, puede seleccionar la rama que desee que recoja el servidor en vivo. Puede ser el maestro o cualquier otra rama que establezca, lo que significa que este método de implementación es ideal para incorporarlo en un flujo de trabajo junto con un entorno de producción y almacenamiento intermedio.. 

Además, debo mencionar que esto no está limitado a los repositorios de GitHub. Funcionará con GitLab, Bitbucket y, probablemente, con cualquier otro servicio de hospedaje de Git, siempre y cuando tengan las características clave de Webhook y Deployment..

También vale la pena mencionar que RunCloud funciona con cualquiera de los proveedores de alojamiento en la nube. Linode fue elegido puramente como ejemplo de un proveedor de alojamiento en la nube adecuado.

Antes de comenzar, quiero que sepa que instalará el servidor web Nginx, que funciona mejor con Laravel. Sin embargo, RunCloud también tiene la opción de instalar el servidor web Apache, en cuyo caso puede aprovechar las configuraciones .htaccess.

Voy a omitir la parte sobre el registro, ya que estoy seguro de que puede hacerlo de forma bastante rápida y sencilla..

Si estás listo, empecemos.

Implementar un servidor Ubuntu 16.04 LTS en Linode

Cuando inicia sesión en su panel de control en Linode.com, solo tiene que implementar un nuevo linode (ellos llaman a su instancia de servicio un "linode"). En la parte inferior derecha del panel, debería ver un enlace que dice Añadir un Linode.

A continuación, seleccione la instancia de linode que desee y el centro de datos donde desea que se implemente su linode, y haga clic en Añadir este Linode botón.

Por ahora, debería tener un linodo que muestre el estado de Siendo creado.

Una vez que esto se haya completado, tendrá un servidor vacío. Aún necesita implementar una imagen para el sistema operativo de este servidor. Y para que funcione con RunCloud más adelante, debe implementar un nuevo sistema operativo Ubuntu 16.04 LTS.

Haga clic en el nombre de linodo. En el ejemplo anterior, el nombre es linode4362539. Esto te llevará a la siguiente captura de pantalla. Simplemente haga clic en el enlace que dice Implementar una imagen.

Aquí, asegúrese de seleccionar Ubuntu 16.04 LTS como la imagen. En cuanto al resto, puede elegir la configuración que considere apropiada. Para este espacio de 20 GB y 1 GB de linode RAM, presiono mi disco de intercambio a la configuración máxima, que es de 512 MB.

Ingrese su contraseña de root y manténgala a salvo. Lo necesitarás de nuevo más tarde. Cuando esté listo, haga clic en el Desplegar botón.

Ahora, haga clic en el Bota botón para encender el servidor.

Debería poder ver que su servidor linode no está etiquetado con Corriendo en el cuadro de widget de la derecha. Intentemos conectarnos a tu servidor y ver si funciona. Haga clic en el Acceso remoto lengüeta.

En el Acceso remoto pestaña, debería poder ver más información sobre su servidor, incluidas las direcciones IP. Copia esta información y mantenla segura. Lo necesitaremos de nuevo pronto..

Para conectarse a su servidor, puede usar cualquier cliente SSH con el que esté familiarizado. O si eres como yo y no quieres alejarte del navegador, también puedes usar un cliente SSH integrado en la web dentro de Linode. Desplácese hacia abajo y busque un enlace que diga Lanzar la consola de Lish.

Al hacer clic en este enlace se ejecutará Lish, el cliente SSH basado en la web. Solo entra raíz como su nombre de usuario y la contraseña que creó al implementar la imagen.

¡Bien! Su servidor está listo para ser configurado con PHP, Nginx y MariaDB (y otras herramientas). Aquí es donde usarás RunCloud.

Si aún no ha registrado una cuenta de RunCloud, deberá hacerlo ahora. No hay ningún riesgo en probar RunCloud solo para este tutorial, ya que le brindará una prueba gratuita de cinco días que le brinda acceso completo a todas las funciones del plan Pro para que pueda probarlas. Una vez que haya transcurrido el período de cinco días, si no realizó la actualización, no se preocupe, solo tendrá una actualización a su nivel de usuario gratuito. Pero con solo $ 10 por mes para la cuenta del plan Pro, que permite servidores ilimitados, RunCloud es una herramienta muy buena para tener en su arsenal de desarrolladores.

Entonces, desde RunCloud, queremos conectar nuestro Linode y convertirlo en un servidor web que funcione en Internet..

Desde su Panel de Control en RunCloud, haga clic en el botón que dice Conectar un servidor arriba a la derecha.

Conecte su servidor Linode a RunCloud y comience a configurar su servidor web

Ingrese la información requerida sobre su servidor en Linode. Puedes volver a tu panel de control de Linode para revisarlos. Pero la parte más importante es su dirección IP. Asegúrate de que tienes ese derecho. De lo contrario, el proceso de conexión y la instalación fallarán..

Una vez que esté listo, haga clic en Conecta este servidor.

Ahora RunCloud le presentará algunos códigos que necesita para ejecutar en su servidor Linode. Simplemente copie todo eso ya que lo estaremos ejecutando en la consola de Lish nuevamente después de esto.

Si aún tiene la ventana de Lish activa, puede pegar el script de instalación que copió desde el tablero de RunCloud previamente.

Pega el código del script de instalación y pulsa el Entrar llave. Después de un corto tiempo, cuando eche un vistazo al tablero de RunCloud, verá que RunCloud muestra una barra de progreso y notificaciones que muestran el progreso de la instalación, ya que RunCloud se sincroniza con el servidor. Esto significa que se ha hecho una conexión.

Cuando se complete la instalación, se le presentará la contraseña de root para su base de datos MariaDB. Asegúrate de mantener esto a salvo. También hay un usuario MariaDB que fue creado con el nombre de usuario runcloud.

Una vez que todo está completo, puede volver a su Panel de control de RunCloud y revisar su lista de servidores. Deberías tener una caja con tu nuevo servidor como este..

Es posible que su servidor web no haya comenzado. Haga clic en ese servidor para comenzar a administrarlo. Esta captura de pantalla a continuación es la vista principal para administrar un servidor..

Navega por el menú de la izquierda y busca Servicios.

Aquí, puede activar tanto Apache como Nginx. Más adelante, cuando cree su proyecto de aplicación web, puede elegir implementar la versión de PHP junto con el tipo de servidor web que desea ejecutar: Apache-Nginx híbrido o Nginx nativo.

Por ahora, simplemente activemos los servicios requeridos..

En este punto, deberíamos poder iniciar un navegador e ingresar la dirección IP para este servidor. Debería obtener la página web vacía predeterminada de RunCloud.

Creación de una aplicación web (host virtual) en su servidor con RunCloud

Ahora que su servidor está configurado y conectado a RunCloud, puede usar RunCloud para administrarlo. Cuando se administra un servidor mediante SSH, crear un host virtual siempre es una molestia. Las cosas son mucho más fáciles con RunCloud.

Antes de poder implementar su proyecto Laravel, necesita un lugar donde viva la aplicación. Así que ahora necesita crear un host virtual en su servidor web. En la nomenclatura de RunCloud, esto se llama 'Aplicación web'.

Desde su Panel de Control de RunCloud, después de seleccionar su servidor, encuentre el Aplicación web menú de la barra lateral izquierda.

Ahora haga clic en el Crear Aplicación botón.

En la siguiente pantalla, configurará las configuraciones para su aplicación web.

Estas son las configuraciones que elegí para ello. Por supuesto, usted es libre de establecer sus propios valores como mejor le parezca.

Nombre de la aplicación web: my-laravel-app Nombre de dominio: fotofaze.me (solo un dominio que tengo disponible) Usuario: runcloud Público Ruta: / pública Versión de PHP: 7.1 Pila de aplicación web: NGINX nativo

Déjame explicarte sobre los valores que se están estableciendo..

Puede establecer cualquier nombre para su aplicación web como referencia para su proyecto. En cuanto al nombre de dominio, configure un nombre de dominio que usará para el proyecto. Más adelante, podrá establecer nombres de dominio adicionales para el proyecto. Normalmente, desearía que su sitio web funcione con y sin el subdominio "www". Podemos añadir eso más tarde..

Usuario se refiere al usuario de Linux en su servidor. Puede crear más usuarios si desea asignar este proyecto a un usuario específico. Y este usuario en particular tendrá acceso al servidor a través de SSH. Pero solo estoy usando el usuario de runcloud predeterminado que se creó durante la instalación del servidor.

Camino publico Es donde está tu carpeta web pública. De forma predeterminada, una aplicación Laravel utilizará el "/público”Carpeta para la carpeta web de acceso público. Todas las demás carpetas se encuentran fuera de esta carpeta. Así que es por eso que ponemos "/público" para esto.

Estoy eligiendo la última versión de PHP 7.1. Y finalmente, para Pila de aplicaciones web, Estoy seleccionando el NGINX nativo. Otra opción es el híbrido NGINX + Apache2, que le da acceso al archivo de configuración .htaccess. Pero voy con NGINX todo el camino para esta opción.

En este punto, su sitio web aún no funcionará con su dominio todavía. Todavía tenemos que configurarlo con el DNS correcto. Hagamos eso en la siguiente sección..

Configuración del nombre de dominio, DNS y SSL

En la sección anterior, configuré fotofaze.me como el nombre de dominio. Pero también quiero que www.fotofaze.me trabaje con esta aplicación web. Entonces, antes de configurar el DNS, hagamos un paso más en RunCloud para este servidor.

Después de crear su aplicación web, debería ver el panel de su aplicación web. Desde aquí, haga clic en el Nombre de dominio lengüeta.

Podemos ver que ya tenemos fotofaze.me listado. Todavía necesito agregar www.fotofaze.me a la lista. Solo ingresa el nombre de dominio y presiona "Adjuntar nombre de dominioBotón ".

Yo uso Namecheap para mis nombres de dominio. Y la gran parte es que viene con un servidor DNS incorporado. De lo contrario, es posible que deba usar CloudFlare o el propio servicio DNS de Linode. Lo que debemos hacer es establecer dos registros DNS en la administración de DNS. Uno es un registro A, y el otro es un CNAME.

Desde mi lista de nombres de dominio de Namecheap, simplemente hago clic en el Gestionar botón.

Desde aquí, hago clic en el DNS avanzado lengüeta.

Aquí, independientemente del servicio DNS que esté utilizando, debemos configurar los siguientes registros DNS:

Tipo: A Host: @ Valor: 139.162.5.220 (dirección IP de su servidor) Tipo: CNAME Host: www Valor: fotofaze.me (su nombre de dominio)

Así es como se ve mi configuración en Namecheap Advanced DNS.

Permita que los cambios de DNS se resuelvan antes de probar su sitio web en el navegador. Una vez que los cambios estén activos, debería recibir el error NGINX 403 cuando visite su sitio. Esto es porque tu /público La carpeta está actualmente vacía, pero le permite saber que todo está funcionando..

Una última parte cuando se trata del nombre de dominio es habilitar SSL. Esto permite acceder a nuestro sitio web utilizando el protocolo https: // en el puerto 443 en lugar de http: // en el puerto 80. Hay muchas ventajas para esto. Aparte de los propósitos de seguridad, también es bueno para SEO.

Volvamos al panel de la aplicación web My-Laravel-App y ahora haga clic en SSL / TLS lengüeta. Los certificados SSL solían costar cientos de dólares. Pero gracias a Let's Encrypt, ahora podemos implementar certificados SSL para nuestros nombres de dominio de forma gratuita. Podría ser muy técnico si añadiera el certificado SSL de Let's Encrypt manualmente, pero con RunCloud, es un proceso de un solo clic..

Una vez aquí, puede seleccionar Vamos a cifrar como tu Método SSL. Y luego haga clic en el Enviar botón.

Su sitio web debería funcionar con el https: // protocolo ahora.

Creación de su base de datos de aplicaciones

Debido a que estaremos implementando una aplicación Laravel, necesitaremos una base de datos. Vamos a hacer eso ahora. Navegue por el menú de la barra lateral izquierda y haga clic en Base de datos menú.

Ahora haga clic en el Crear base de datos botón.

Simplemente ingrese un nombre para su base de datos y haga clic en Añadir nueva base de datos botón.

Ahora necesitamos agregar un usuario de base de datos y asignarlo a nuestra base de datos. Haga clic en el Agregar usuario botón.

Ahora solo ingresa un nombre de usuario y una contraseña. Y luego haga clic en el Añadir botón.

A continuación, asignamos al usuario recién creado a la base de datos creada anteriormente. Haga clic en el pequeño Adjuntar usuario icono en su lista de base de datos.

Ya que solo tiene un usuario en este momento, solo asegúrese de que esté seleccionado y luego haga clic en Adjuntar botón.

Una vez hecho esto, esto es lo que verás. los laraveluser ahora se adjunta a la laravelapp base de datos.

Ahora estamos casi listos para hacer algo de programación PHP con Laravel. Pero antes de eso, vamos a crear un repositorio de proyectos GitHub en el que más tarde podamos enviar nuestro código fuente..

Configuración de su proyecto GitHub

Un desarrollador web solo normalmente mantendría tres lugares donde vive su código fuente:

  1. Computadora local para el desarrollo.
  2. Servicio de alojamiento Git (es decir, GitHub) para colaboración, control de versiones, copia de seguridad, etc..
  3. El servidor en vivo

En esta parte del tutorial, crearemos nuestro repositorio de proyectos en GitHub. Más adelante, usaremos este repositorio para impulsar el trabajo de nuestro entorno de desarrollo en nuestra computadora local a este repositorio de proyectos específico de GitHub.

En GitHub, si has iniciado sesión, puedes hacer clic en el pequeño plus (+) icono en el lado derecho de la barra superior. Y deberías ver un menú para Nuevo repositorio. Haga clic en ese.

Simplemente ingrese los detalles de su proyecto con algo como abajo. Haga clic en el botón verde que dice Crear repositorio.

Debes tener una vista como la siguiente ahora.

El área resaltada con el cuadro rojo es la dirección del repositorio de su proyecto en GitHub. Lo necesitaremos más adelante cuando estemos configurando la representación remota del proyecto desde nuestra computadora de desarrollo local.

Ahora estamos listos para iniciar el desarrollo en nuestra computadora local y enviar el código a GitHub.

Configuración de su proyecto Laravel en su computadora local

En esta parte del tutorial, configuraremos nuestra computadora local con nuestra versión de desarrollo de nuestro proyecto Laravel. Más adelante, lo subiremos a un servicio de alojamiento Git (usaremos GitHub). Después de eso, haremos que nuestro servidor Linode obtenga un código de GitHub para que nuestro servidor de producción siempre implemente el código fuente más reciente.

Solo como una nota al margen, este tutorial omite la parte sobre la configuración de su cuenta de GitHub con su clave SSH pública para una comunicación segura. Usaremos la pantalla del terminal bastante para SSH. Normalmente uso masilla en Windows.

Si es nuevo en GitHub, puede consultar el tutorial sobre cómo generar y configurar su máquina local con una clave SSH para usar con GitHub.

La administración de la implementación de Git en su servidor en vivo se puede configurar fácilmente con RunCloud. Una vez que tengamos todo lo configurado, con un simple empuje Git desde su computadora local, siempre puede estar seguro de que su servidor buscará esas actualizaciones automáticamente. Sin FTP, no hay más instrucciones de línea de comandos.

La forma más fácil de comenzar un proyecto Laravel es usar Composer. Si no está familiarizado con Composer, asegúrese de leerlo e instalarlo en su computadora local. El compositor no es solo para Laravel. Composer hará que la gestión de bibliotecas y dependencias para cualquier proyecto de PHP sea más fluida, y su uso se considera integral para el desarrollo de aplicaciones PHP modernas.

Abra su herramienta de terminal preferida y ejecute el siguiente comando para crear un proyecto Laravel.

$ compositor create-project --prefer-dist laravel / laravel my-laravel

Esto puede demorar un tiempo ya que Composer descarga e instala Laravel en su computadora. Compositor creará una carpeta llamada mi-laravel y almacenar todo allí. Primero, entremos en esta carpeta.

$ cd my-laravel

Sobre el archivo .env

Para asegurarse de que su aplicación Laravel funciona correctamente, debe configurar los ajustes de conexión de su base de datos. Puedes hacerlo editando el .env expediente. Use cualquier editor de texto con el que esté familiarizado y edite este archivo. Esto es lo típico .env archivo contendría. Puedes actualizarlo según tus propias necesidades..

APP_NAME = Laravel APP_ENV = local APP_KEY = APP_DEBUG = verdadero APP_LOG_LEVEL = depuración APP_URL = http: // localhost DB_CONNECTION = mysql DB_HOST = 127.0.0.1 DB_PORT = 3306 DB_DATABASE = homestead DB_USERNAME = estación de servicio / estación / estación 

De vuelta a la herramienta de línea de comandos, primero vamos a crear una clave para esta aplicación de laravel. Ingrese el siguiente comando en el terminal. El siguiente comando actualizará el archivo .env con un hash clave.

$ php clave artesanal: generar

Ahora vamos a inicializarlo para el seguimiento de Git..

$ git init $ git add --all $ git commit -m "first commit"

Sobre el Predeterminado .gitignore por Laravel

Tal vez también debería explicar un poco sobre el .gitignore archivo que viene con Laravel. Puede echar un vistazo a este archivo y ver qué archivos no están siendo rastreados. Por ejemplo, .env que almacena los datos de conexión de su base de datos no se están siguiendo. Esto significa, se supone que va a utilizar diferentes .env Archivos para su computadora local y para su servidor en vivo.

En la sección anterior, hablé sobre su dirección de repositorio de Git remota en GitHub. Ejecuta el siguiente comando con tu propia dirección.

$ git remoto agregar origen [email protected]: kidino / my-laravel.git

A continuación, le diremos a nuestro proyecto local de Git dónde se encuentra nuestra ubicación de proyecto en GitHub. Para eso, necesitamos agregar una representación de repositorio remoto..

$ git push -u master de origen

Si lo haces bien, tu proyecto en GitHub debería haberse actualizado con algo como esto. Si tiene problemas, tal vez Git no esté configurado correctamente en su computadora o no haya generado su clave SSH local.

Consulta el sitio web de GitHub para ayudarte con eso..

Ahora podemos comenzar a configurar la implementación automática utilizando enganches y activadores web. Una vez que tengamos eso, su código se enviará automáticamente a su servidor a través de RunCloud cada vez que envíe su trabajo a GitHub.

Configurando Git Web Hook en RunCloud

Para hacer esto, primero necesitamos generar una clave de implementación a través del panel de RunCloud. Desde el panel de su servidor, en el menú de la izquierda, debería poder encontrar un menú etiquetado Clave de despliegue.

Ya deberías tener uno para el usuario. runcloud. Si recuerda, cuando creamos la aplicación web, mencionamos que el usuario es runcloud.

Haga clic en el icono del ojo pequeño para mostrar la clave SSH para este usuario. Si está obteniendo algo como esto, eso significa que en el pasado nunca se creó una clave SSH para este usuario. Simplemente haga click DE ACUERDO para que se cree una nueva clave SSH.

Una vez que está bien, se le presentará un diseño como este. Esta es la clave SSH que debe ingresar en GitHub. Con esto, GitHub puede reconocer las solicitudes de extracción cuando el servidor quiere introducir nuevas actualizaciones. Copia todo.

Ahora vamos a GitHub.

Entra en tu proyecto y haz clic en la pestaña que dice Ajustes. Luego haga clic en el Implementar claves menú en la barra lateral izquierda.

Como es posible que aún no tenga una clave, simplemente haga clic en Añadir clave de despliegue botón.

Solo dale un nombre y luego puedes ingresar tu SSH Deploy Key que obtuvimos de RunCloud. Haga clic en el Añadir clave botón.

A continuación, vamos a configurar un disparador Web Hook. Un gancho web de GitHub funciona así: cada vez que enviamos nuevas actualizaciones a GitHub, podemos hacer que GitHub notifique a otros servicios o servidores sobre ese nuevo impulso. En este caso, le diremos a GitHub que notifique a nuestro servidor en vivo. Y esto se puede hacer fácilmente a través de RunCloud.

En RunCloud, abra su aplicación web que creó anteriormente. Y haga clic en la pestaña etiquetada. Git.

Desplácese hacia abajo e ingrese los detalles sobre su repositorio en GitHub. Así es como se ve el proyecto que hemos estado haciendo en este tutorial. Puede configurar su propia rama para la implementación en vivo si no quiere que sea maestra. Pero para este ejemplo, nos quedaremos con el maestro.

Lo que esto significa es que cuando empuja su rama maestra a GitHub, el servidor en vivo lo tomará como una señal para actualizar el código fuente en el servidor. Luego hará una extracción de la rama maestra y se actualizará..

Si está listo, haga clic en el botón etiquetado Adjuntar el repositorio Git.

Esta es la vista que obtiene cuando ha actualizado su aplicación web con una implementación de Git.

Ahora puede ver que tiene una URL de Git WebHook. Esta es la URL que copiaremos y pondremos en GitHub.

Antes de hacerlo, personalicemos nuestro script de implementación en nuestro servidor.

La secuencia de comandos de implementación es la secuencia de comandos bash que puede utilizar para indicar a su servidor que haga ciertas cosas antes o después de que ocurra la extracción de GIT. Si está utilizando Laravel, sabrá que Laravel depende en gran medida del comando y el compositor artesanos para facilitar su desarrollo y despliegue..

Para cambiar la secuencia de comandos de implementación, desplácese hacia abajo hasta la secuencia de comandos de implementación GIT en la pestaña GIT para la aplicación web. Aquí, puede agregar su propio script para ejecutar. Asegúrese de incluir el git pull en algún lugar dentro de su script de implementación. Puede escribir el script con Replacer para usarlo con manos cortas.

A continuación se muestra el script que uso.

$ git merge $ composer dump-autoload -o $ composer install $ php artesano migrate --force $ php artisan compilado de forma clara $ php artisan view: clear $ php artisan config: clear $ php artisan optimiza $ composer dump-autoload -o $ cola de php artesano: reiniciar

Puedes usar este mismo script. Marque la casilla de verificación y haga clic en Salvar botón.

Ahora vuelve a subir. Todavía tenemos que poner nuestra URL de Git Webhook en GitHub.

Copie esta URL, y luego procederemos a GitHub. En GitHub, proceda al repositorio de su proyecto. Luego haga clic en el Ajustes lengüeta. Entonces en el Webhooks Menú desde la barra lateral. Y luego en el Añadir Webhook botón.

Simplemente pegue la URL de Git WebHook que obtuvimos de RunCloud en el campo de texto de la URL de carga útil. Asegúrate de seleccionar aplicación / json para Tipo de contenido. Eso debería ser suficientemente bueno. Luego haga clic en el Añadir Webhook botón.

En este momento, deberíamos poder hacer un Git push desde nuestra máquina local, y el servidor en vivo se actualizará automáticamente. Pero todavía hay una cosa que tenemos que hacer.

Si recuerdas, escribí sobre .gitignore y el archivo .env. Debido a que incluimos el archivo .env en nuestro archivo .gitignore, a nuestra aplicación Laravel en el servidor le falta el archivo .env requerido. Necesitamos crear eso para remediar la situación..

Podemos usar SSH y el terminal. Alternativamente, también podemos usar el Administrador de archivos dentro de RunCloud. Supongamos que utiliza el SSH como Putty o cualquier otra herramienta de terminal. Si recuerda, anteriormente esta aplicación web se creó con el usuario runcloud. Asegúrate de conectarte a través de SSH usando ese usuario también.

Necesita navegar a la carpeta de su aplicación web. Y luego ejecute el siguiente comando.

$ cd / home / runcloud / webapps / my-laravel-app $ cp .example.env .env $ php artesanal clave: generar

No olvides actualizar tu archivo .env.

Ahora debes tener el archivo .env, con la clave hash generada. Aún necesita actualizar este archivo y actualizarlo con la configuración de conexión de su b