|
| 1 | +# Cómo desplegar aplicaciones Laravel en hosting compartido |
| 2 | + |
| 3 | +Guía simple de cómo desplegar aplicaciones Laravel y Lumen en servicios de alojamiento compartidos. |
| 4 | + |
| 5 | +Para una versión rápida de esta guía, lee el post original en Medium: "[The simple guide to deploy Laravel 5 application on shared hosting](https://medium.com/laravel-news/the-simple-guide-to-deploy-laravel-5-application-on-shared-hosting-1a8d0aee923e#.7y3pk6wrm)" (en inglés). |
| 6 | + |
| 7 | +## Requisitos |
| 8 | + |
| 9 | +Antes de intentar publicar tu aplicación en un servicio de alojamiento, necesitas asegurarte de que cumple con los [requisitos de Laravel](https://laravel.com/docs/5.2#server-requirements). Básicamente, Laravel `5.2` necesita: |
| 10 | + |
| 11 | +- PHP >= `5.5.9` |
| 12 | +- Extensiones PHP: |
| 13 | + - OpenSSL |
| 14 | + - PDO |
| 15 | + - Mbstring |
| 16 | + - Tokenizer |
| 17 | + |
| 18 | +> Estos requisitos pueden variar dependiendo de la versión de Laravel que quieres instalar. Verifica los requisitos del servidor para la versión de Laravel apropiada en la [documentación oficial](https://laravel.com/docs/master). |
| 19 | +
|
| 20 | +Además de esto, **necesitas tener permisos de acceso SSH para tu cuenta en tu servicio de alojamiento; de otro modo, nada de lo que sigue funcionará.** |
| 21 | + |
| 22 | +Además de PHP y esas extensiones requeridas, podrías necesitaralgunas utilidades para hacer tu despliegue más fácil: |
| 23 | + |
| 24 | +- [Git](https://git-scm.com/) |
| 25 | +- [Composer](https://getcomposer.org/) |
| 26 | + |
| 27 | +Eso es todo por ahora. Por favor, sírvase leer las siguientes secciones para aprender más acerca del despliegue (deployment). |
| 28 | + |
| 29 | +## Intrucciones |
| 30 | + |
| 31 | +Iniciemos por entender cómo deberíamos organizar la estructura de nuestra aplicación Laravel. |
| 32 | + |
| 33 | +En primer lugar, deberías tener algo similar a estos archivos y carpetas en tu cuenta de tu alojamiento: |
| 34 | + |
| 35 | + |
| 36 | +```bash |
| 37 | +.bash_history |
| 38 | +.bash_logout |
| 39 | +.bash_profile |
| 40 | +.bashrc |
| 41 | +.cache |
| 42 | +.cpanel |
| 43 | +.htpasswds |
| 44 | +logs |
| 45 | +mail |
| 46 | +public_ftp |
| 47 | +public_html |
| 48 | +.ssh |
| 49 | +tmp |
| 50 | +etc |
| 51 | +www -> public_html |
| 52 | +... |
| 53 | +``` |
| 54 | + |
| 55 | +El código para el front-end para la cuenta principal, la cuál está vinculada con tu dominio principal, debería estar en `public_html` o `www`. Debido a que no queremos exponer las *cosas de Laravel* (como `,env`, etc..) al mundo exterior, las ocultaremos. |
| 56 | + |
| 57 | +Crea un nuevo directorio para almacenar todo el código; colócale el nombre `projects` o cualquiera que desees. |
| 58 | + |
| 59 | +```bash |
| 60 | +$ mkdir projects |
| 61 | +$ cd projects |
| 62 | +``` |
| 63 | + |
| 64 | +Bien. Desde aquí, simplemente ejecuta un comando `git` para obtener tu código: |
| 65 | + |
| 66 | +```bash |
| 67 | +$ git clone http://[GIT_SERVER]/awesome-app.git |
| 68 | +$ cd awesome-app |
| 69 | +``` |
| 70 | + |
| 71 | +El próximo paso es hacer que la carpeta `awesome-app/public` se mapee con la carpeta `www` mencionada anteriormente. Los enlaces simbólicos son de gran ayuda para esto, pero primero necesitamos respaldar la carpeta `public` de nuestro proyecto. |
| 72 | + |
| 73 | +```bash |
| 74 | +$ mv public public_bak |
| 75 | +$ ln -s ~/www public |
| 76 | +$ cp -a public_bak/*.* public/ |
| 77 | +$ cp public_bak/.htaccess public/ |
| 78 | +``` |
| 79 | + |
| 80 | +Debido a que creamos el enlace simbólico desde la carpeta `~/www` para hacer que se vuelva la carpeta `public` *virtual* en tu proyecto, debemos actualizar las rutas en el archivo `~/www/index.php`. |
| 81 | + |
| 82 | +```php |
| 83 | +require __DIR__.'/../projects/awesome-app/bootstrap/autoload.php'; |
| 84 | + |
| 85 | +$app = require_once __DIR__.'/../projects/awesome-app/bootstrap/app.php'; |
| 86 | +``` |
| 87 | + |
| 88 | +Ya lo difícil está hecho. El resto es hacer algunas configuraciones básicas de Laravel. |
| 89 | + |
| 90 | +Permitir permisos de escritura al directorio `storage` es importante: |
| 91 | + |
| 92 | +```bash |
| 93 | +$ chmod -R o+w storage |
| 94 | +``` |
| 95 | + |
| 96 | +**Edita tu archivo`.env` con la configuración apropiada. ¡No lo pases por alto!** |
| 97 | + |
| 98 | +Por último, actualiza los paquetes requeridos por tu proyecto Laravel usando **composer** y agrega algunas caché necesarias: |
| 99 | + |
| 100 | +```bash |
| 101 | +$ php composer install |
| 102 | +$ php composer dumpautoload -o |
| 103 | +$ php artisan config:cache |
| 104 | +$ php artisan route:cache |
| 105 | +``` |
| 106 | + |
| 107 | + |
| 108 | +**¡Felicidades! Has configurado exitosamente una aplicación Laravel en un servicio de alojamiento web compartido.** |
| 109 | + |
| 110 | +## Preguntas Frecuentes (FAQ) |
| 111 | + |
| 112 | +> **1. ¿Cómo adquiero permiso de acceso SSH para mi cuenta?** |
| 113 | +
|
| 114 | +Simplemente contacta con el soporte de tu proveedor de hospedaje. Necesitarán confirmar tu identidad y te permitirán acceso SSH inmediatamente. |
| 115 | + |
| 116 | +> **2. ¿En dónde está `git`? No lo piedo encontrar.** |
| 117 | +
|
| 118 | +Por lo general, `git` es colocado en esta ruta para proveedores de alojamiento con CPanel, `/usr/local/cpanel/3rdparty/bin/git`. Así que debes acceder a él escribiendo la ruta completa si quieres ejecutar un comando `git`. O, mejor aún, crear un alias más conveniente: |
| 119 | + |
| 120 | +```bash |
| 121 | +alias git="/usr/local/cpanel/3rdparty/bin/git" |
| 122 | +``` |
| 123 | + |
| 124 | +> **3. ¿Cómo obtener composer?** |
| 125 | +
|
| 126 | +Puedes usar FTP o comandos SCP para subir el archivo `composer.phar` a tu alojamiento remoto después de descargarlo localmente. También puedes usar `wget` o `curl` para descargar el archivo directamente en tu remoto: |
| 127 | + |
| 128 | +```bash |
| 129 | +$ wget https://getcomposer.org/composer.phar |
| 130 | +``` |
| 131 | + |
| 132 | +ó |
| 133 | + |
| 134 | +```bash |
| 135 | +$ curl -sS https://getcomposer.org/installer | php — –filename=composer |
| 136 | +``` |
| 137 | + |
| 138 | +> **4. ¿Estas instrucciones funciona con Lumen?** |
| 139 | +
|
| 140 | +Laravel y Lumen son como gemelos, así que lo mismo aplica para Lumen. |
| 141 | + |
| 142 | +> **5. Intento ejecutar `composer` pero no muestra nada. ¿Cuál es el problema?** |
| 143 | +
|
| 144 | +Tienes que proveer una configuración PHP apropiada para ejecutar `composer`, lo que significa que no puedes usar `composer` directamente en algunos servicios de alojamiento. Así que para ejecutarlo, necesitarás ejecutar este comando: |
| 145 | + |
| 146 | +```bash |
| 147 | +$ php -c php.ini composer [COMMAND] |
| 148 | +``` |
| 149 | + |
| 150 | +> **6. ¿De dónde puedo obtener el `php.ini` para cargar con `composer`?** |
| 151 | +
|
| 152 | +Puedes copiar la configuración predeterminada de PHP, la cual por lo general está en `/usr/local/lib/php.ini` o puedes encontrarlo con este comando: |
| 153 | + |
| 154 | +```bash |
| 155 | +$ php -i | grep "php.ini" |
| 156 | +``` |
| 157 | + |
| 158 | +## Lista de proveedores de servicio comprobados en los que funciona |
| 159 | + |
| 160 | +Los siguientes servicios de alojamiento compartidos han sido probadas estas instrucciones y funcionado perfectamente al 100%. |
| 161 | + |
| 162 | +* [NameCheap](https://www.namecheap.com/) |
| 163 | +* [JustHost](https://www.justhost.com/) |
| 164 | +* [bluehost](https://www.bluehost.com/) |
| 165 | +* [GoDaddy](https://godaddy.com/) |
| 166 | +* [HostGator](http://www.hostgator.com/) |
| 167 | +* [GeekStorage](https://www.geekstorage.com/) |
| 168 | + |
| 169 | +Funciona en el plan compartido de [GeekStorage](https://www.geekstorage.com/), pero hay que habilitar PHP 5.6 a través de .htaccess: `AddHandler application/x-httpd-php56 .php` |
| 170 | + |
| 171 | + |
| 172 | +Si encuentras algún otro proveedor de servicio en que funcione, por favor, notifícalo. Esta lista se actualizará para informar a otros acerca de ello también. |
| 173 | + |
| 174 | +## ¿Aún tienes problemas? |
| 175 | + |
| 176 | +Si sigues fallando al intentar desplegar tu aplicación, puedes crear una nueva [insidencia](https://github.com/petehouston/laravel-deploy-on-shared-hosting/issues) con los detalles para ayudarte. |
| 177 | + |
| 178 | +## Guía de Contribución |
| 179 | + |
| 180 | +Siéntete libre de clonar (folk) el proyecto a tu cuenta y enviar una petición de [pull](https://github.com/petehouston/laravel-deploy-on-shared-hosting/pulls). |
0 commit comments