{"id":27645,"date":"2024-05-27T13:56:54","date_gmt":"2024-05-27T11:56:54","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=27645"},"modified":"2024-05-28T17:28:10","modified_gmt":"2024-05-28T15:28:10","slug":"desplegando-laravel-en-un-hosting-compartido","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/","title":{"rendered":"Desplegando Laravel en un hosting compartido"},"content":{"rendered":"\n<p>Cuando has terminado tu primera aplicaci\u00f3n Laravel, comienza una nueva tarea, la de desplegarla en un servidor web. Ya sea porque es un encargo de un cliente o porque es un proyecto personal que quieres publicar, es necesario que funcione en alg\u00fan servidor. Porque eso de ense\u00f1arla solamente en tu entorno de desarrollo es poco \u00fatil.<\/p>\n\n\n\n<p>Como siempre que llegamos a estos puntos de desplegar aplicaciones, tenemos m\u00faltiples posibles destinos, ya sea un servidor <em>on premise<\/em> al que podemos tener incluso acceso f\u00edsico hasta una m\u00e1quina virtual. Desplegar Laravel en servidores a los que tenemos un nivel de acceso alto es una tarea relativamente sencilla siguiendo los pasos que el propio producto nos indica en su <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/laravel.com\/docs\/11.x\/deployment\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">documentaci\u00f3n oficial<\/a>.<\/p>\n\n\n\n<p>No siempre es posible disponer de un acceso alto al servidor, ya que los clientes de tama\u00f1o medio o peque\u00f1o suelen tener limitados los costes. En este caso nos debemos desplegar nuestra aplicaci\u00f3n en un servidor compartido. Tienen unos costes m\u00e1s ajustados, pero tambi\u00e9n m\u00e1s limitados los accesos.<\/p>\n\n\n\n<p>Uno de los primeros l\u00edmites que tienen los servidores compartidos est\u00e1 en el acceso a la consola o terminal. Esta limitaci\u00f3n provocar\u00e1 que no podamos ejecuta de forma directa ninguno de los comandos de Artisan. Y aqu\u00ed empiezan las complicaciones, porque debemos buscar una forma alternativa para realizar esos mismos pasos.<\/p>\n\n\n\n<p>Laravel es un framework de desarrollo que tiene muchas ventajas y ofrece asistencias para un desarrollo m\u00e1s \u00e1gil, pero su despliegue en hosting compartidos no es tan sencillo, puesto que gran parte de las herramientas que nos ofrece se utilizan desde el terminal de comandos.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/porque-es-un-buen-momento-para-aprender-laravel\/\" target=\"_blank\" aria-label=\"Art\u00edculo recomendado: Por qu\u00e9 es un buen momento para aprender Laravel (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Art\u00edculo recomendado: Por qu\u00e9 es un buen momento para aprender Laravel<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-pasos-previos\">Pasos previos<\/h2>\n\n\n\n<p>Un entorno de desarrollo es ligeramente diferente a un entorno de producci\u00f3n. Especialmente en lo relativo a seguridad. Por este motivo, debemos verificar que hacemos las adaptaciones necesarias en cuanto a configuraci\u00f3n.<\/p>\n\n\n\n<p>Por despiste o desconocimiento, son muchas las aplicaciones web que tienen el modo de depuraci\u00f3n activo.<\/p>\n\n\n\n<p>La depuraci\u00f3n es muy \u00fatil en desarrollo para detectar el origen de los errores y corregirlo, pero es un gran agujero de seguridad si esta informaci\u00f3n la exponemos en internet.<\/p>\n\n\n\n<p>En estos volcados a pantalla se muestran rutas e incluso valores que pueden dar pistas a los usuarios maliciosos para atacar nuestra aplicaci\u00f3n y acceder a nuestros datos.<\/p>\n\n\n\n<p>Vamos al fichero config\/app.php y verificamos los valores de las claves env, debug y url se obtiene del fichero de configuraci\u00f3n de entorno. Esto lo vemos claramente porque utilizan la funci\u00f3n env para obtener el valor de las claves asociadas<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">    <span class=\"hljs-string\">'env'<\/span> =&gt; env(<span class=\"hljs-string\">'APP_ENV'<\/span>, <span class=\"hljs-string\">'production'<\/span>),\n\u00a0 \u00a0 <span class=\"hljs-string\">'debug'<\/span> =&gt; (bool) env(<span class=\"hljs-string\">'APP_DEBUG'<\/span>, <span class=\"hljs-keyword\">false<\/span>),\n\u00a0 \u00a0 <span class=\"hljs-string\">'url'<\/span> =&gt; env(<span class=\"hljs-string\">'APP_URL'<\/span>, <span class=\"hljs-string\">'http:\/\/localhost'<\/span>),<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>El segundo par\u00e1metro es un valor por defecto, por si no se encontrase la clase en el fichero, as\u00ed que tampoco le prestaremos demasiada atenci\u00f3n.<\/p>\n\n\n\n<p>A continuaci\u00f3n revisaremos el fichero .env. Si has mantenido el orden inicial, algo altamente recomendable, deber\u00edas tener las siguientes l\u00edneas al inicio:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">APP_NAME=Laravel\nAPP_ENV=local\nAPP_KEY=base64:X0hgHxJ8c88yUwq2LxHRRrUQOaDeIqKsvjmZAP9dsIo=\nAPP_DEBUG=<span class=\"hljs-literal\">true<\/span>\nAPP_TIMEZONE=UTC\nAPP_URL=http:<span class=\"hljs-comment\">\/\/localhost<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Nos centraremos en APP_ENV y en APP_DEBUG. La primera nos indica el entorno, que inicialmente tendr\u00e1 el valor local, pero que a la hora de pasar a producci\u00f3n cambiaremos por <em>production<\/em>. M\u00e1s importante es APP_DEBUG, que en desarrollo nos conviene que tenga valor <em>true<\/em>, pero al pasar a producci\u00f3n debe tener valor <em>false<\/em>. De lo contrario, si alguna vez se produce un error no controlado en nuestra aplicaci\u00f3n, me mostrar\u00e1 todo nuestro c\u00f3digo fuente por pantalla.<\/p>\n\n\n\n<p>Por \u00faltimo, y muy importante, antes de desplegar en producci\u00f3n, hay que cambiar la clave de cifrado de datos. Laravel utiliza la funci\u00f3n de cifrado AES (Advanced Encription Standard) y para encriptar datos cifrados de base datos o cookies va a utilizar el valor de la clave APP_KEY. Adem\u00e1s, se utiliza para generaci\u00f3n te token o firmas, por lo que antes de desplegar la aplicaci\u00f3n, regeneramos esta clave ejecutando desde un terminal la siguiente instrucci\u00f3n<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">php<\/span> <span class=\"hljs-selector-tag\">artisan<\/span> <span class=\"hljs-selector-tag\">key<\/span><span class=\"hljs-selector-pseudo\">:generate<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Adem\u00e1s, debemos revisar los distintos par\u00e1metros de configuraci\u00f3n por si hay cambios respecto a nuestro entorno local. Dentro de estos par\u00e1metros a modificar, estar\u00e1n los bloques correspondientes al env\u00edo de correo, base de datos, Redis o AWS<\/p>\n\n\n\n<p>Ahora s\u00ed, podemos pasar a copiar nuestros ficheros desde FTP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-copiando-los-ficheros\">Copiando los ficheros<\/h2>\n\n\n\n<p>Es posiblemente la parte m\u00e1s sencilla del despliegue de una aplicaci\u00f3n Laravel, puesto que no hay que hacer pr\u00e1cticamente nada distinto a cuando subimos im\u00e1genes para una web est\u00e1tica.<\/p>\n\n\n\n<p>Accedemos al servidor remoto por FTP con nuestro cliente favorito y copiamos los ficheros de nuestro proyecto Laravel.<\/p>\n\n\n\n<p>Podemos copiar todos con tranquilidad porque estar\u00e1n protegidos por la seguridad de Laravel, pero algunos no nos ser\u00e1n necesarios.<\/p>\n\n\n\n<p>Como veremos un poco m\u00e1s adelante, la carpeta <em>database<\/em>, no es necesaria, puesto que la base de datos no la crearemos mediante migraciones y <em>seeders<\/em>.<\/p>\n\n\n\n<p>Tampoco necesitaremos la carpeta <em>test<\/em>, puesto que no es habitual que ejecutemos pruebas en producci\u00f3n despu\u00e9s del despliegue. Si dentro de tu aplicaci\u00f3n has creado tests automatizados, debes copiar la carpeta y ejecutar los test antes de eliminar la carpeta.<\/p>\n\n\n\n<p>Por \u00faltimo, revisa la carpeta <em>storage <\/em>y borra todo el contenido de logs y revisa los ficheros que haya subido tu aplicaci\u00f3n, porque la mayor\u00eda (por no decir todos) corresponder\u00e1n a pruebas en desarrollo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-la-base-de-datos\">La base de datos<\/h2>\n\n\n\n<p>Las migraciones en este caso nos van a servir de poco, porque al no poder utilizar Artisan, no podremos ejecutarlas y tampoco cargar los Seeder de apoyo para esos datos iniciales<\/p>\n\n\n\n<p>En una aplicaci\u00f3n con un modelo de datos grande y con varias tablas auxiliares, podemos tener varias tablas que alimentamos con Seeder. Tanto esta carga de datos, como la propia creaci\u00f3n de la base de datos, es algo que no podremos hacer sin ejecutar comandos.<\/p>\n\n\n\n<p>En este caso, lo vamos a hacer exportando la base de datos. Pero antes, debemos asegurar que no contiene datos procedentes de pruebas. Desde un terminal ejecutamos<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">php<\/span> <span class=\"hljs-selector-tag\">artisan<\/span> <span class=\"hljs-selector-tag\">migrate<\/span><span class=\"hljs-selector-pseudo\">:refresh<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Con esta instrucci\u00f3n regeneramos todo el modelo y a continuaci\u00f3n podemos ejecutar todos los seeder con<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">php<\/span> <span class=\"hljs-selector-tag\">artisan<\/span> <span class=\"hljs-selector-tag\">db<\/span><span class=\"hljs-selector-pseudo\">:seed<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Y la base datos ya est\u00e1 \u201climpia\u201d. Ahora vamos a nuestro cliente de base de datos y exportamos nuestra base de datos a un fichero SQL<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"603\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_001-1024x603.png\" alt=\"\" class=\"wp-image-27833\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_001-1024x603.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_001-300x177.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_001-768x453.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_001.png 1076w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Que luego importaremos desde el cliente que nos ofrezca nuestro hosting compartido, normalmente ser\u00e1 phpMyAdmin. Para ello, creamos la base de datos y le asignamos el mismo nombre que hab\u00edamos definido en el fichero .env adem\u00e1s nos aseguraremos de haber creado el usuario y contrase\u00f1a del mismo fichero con los permisos m\u00e1s altos sobre la base de datos.<\/p>\n\n\n\n<p>Una vez creada la nueva base de datos, la seleccionamos desde phpMyAdmin e importamos tanto el esquema como los datos:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"622\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_002-1024x622.png\" alt=\"\" class=\"wp-image-27835\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_002-1024x622.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_002-300x182.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_002-768x466.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_002.png 1492w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-a-probar-y-primeros-errores\">A probar y primeros errores<\/h2>\n\n\n\n<p>Lo normal, es acabar el despliegue de nuestra aplicaci\u00f3n en este punto, por lo que llega el momento de probar y verificar que todo est\u00e1 funcionando conforme a lo que deber\u00eda.<\/p>\n\n\n\n<p>En muchos casos comprobaremos que no hay ning\u00fan error adicional o seg\u00fan vayan surgiendo los corregimos, pero nos encontraremos con un \u00faltimo obst\u00e1culo, la ruta simb\u00f3lica para los ficheros subidos desde la propia aplicaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-enlaces-simbolicos\">Enlaces simb\u00f3licos<\/h2>\n\n\n\n<p>Por el modelo de seguridad de Laravel, cuando subimos un fichero lo dejamos en una ruta protegida y ofrecemos un enlace simb\u00f3lico que tiene que estar correctamente mapeado para poder recuperar estos ficheros desde la aplicaci\u00f3n.<\/p>\n\n\n\n<p>Desde nuestro entorno de desarrollo lo solucion\u00e1bamos ejecutando el comando<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">php<\/span> <span class=\"hljs-selector-tag\">artisan<\/span> <span class=\"hljs-selector-tag\">storage<\/span><span class=\"hljs-selector-pseudo\">:link<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Pero al no poder ejecutar comandos en nuestro hosting compartido, debemos simularlos. Volvemos a nuestro entorno de desarrollo y abrimos el fichero web.php. En un punto del mismo en el que no est\u00e9n protegidas las rutas por ning\u00fan middleware incorporamos una nueva ruta que va a realizar una llamada a Artisan:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">Route::get(<span class=\"hljs-string\">'\/symlink'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-params\">()<\/span> <\/span>{\n\u00a0 \u00a0 Artisan::call(<span class=\"hljs-string\">'storage:link'<\/span>);\n});<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Subimos el fichero web.php por ftp a nuestro hosting y abrimos la ruta \/symlink tras ejecutarse no debe dar una pantalla en blanco, puesto que no le hemos a\u00f1adido ninguna informaci\u00f3n y con esto ya lo tendr\u00edamos<\/p>\n\n\n\n<p>Solamente quedar\u00eda eliminar esa ruta y volver a subir el fichero.<\/p>\n\n\n\n<p>Esta acci\u00f3n para llamar a Artisan, nos sirve con cualquier comando, solamente debemos incorporarle como par\u00e1metro a call el comando y como segundo par\u00e1metro la lista de argumentos en forma de array asociativo<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">Artisan::call(<span class=\"hljs-string\">'comando:nombre'<\/span>, &#91; <span class=\"hljs-string\">'argumento1'<\/span> =&gt; valor1, <span class=\"hljs-string\">'argumento2'<\/span> =&gt; valor2]);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Esto lo necesitaremos, por ejemplo si queremos optimizar nuestro proyecto con cach\u00e9 de eventos, rutas o vistas, o si hacemos una actualizaci\u00f3n que requiere borrar cache.<\/p>\n\n\n\n<p>De esta forma podemos tener una ruta adicional<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Route::<span class=\"hljs-keyword\">get<\/span>('\/clearcache\u2019, function () {\n\u00a0 \u00a0 <span class=\"hljs-attr\">Artisan<\/span>::call(<span class=\"hljs-string\">'optimize:clear'<\/span>);\n\u00a0 \u00a0 Artisan::call(<span class=\"hljs-string\">'optimize'<\/span>);\n});<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Que nos borrar\u00e1 la cache y la regener\u00e1.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusi\u00f3n<\/h2>\n\n\n\n<p>El despliegue de una aplicaci\u00f3n suele ser tedioso y para ello, siempre podemos generar nuestros propios scripts o utilizar herramientas de automatizaci\u00f3n, como es el caso de <a href=\"https:\/\/forge.laravel.com\/\" target=\"_blank\" aria-label=\"Laravel Forge (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Laravel Forge<\/a>. <\/p>\n\n\n\n<p>Pero si no podemos utilizarlas o no consideramos incorporar su coste de licenciamiento a nuestro proyecto, podemos hacerlo de forma totalmente artesana siguiendo estos pasos.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>\u00danete a nuestra comunidad<\/strong><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Ser parte de la comunidad tech de Codemotion te permitir\u00e1 potenciar tu experiencia y enfrentar nuevos desaf\u00edos que impulsar\u00e1n tu carrera. Aprender\u00e1s nuevas habilidades t\u00e9cnicas y crecer\u00e1s junto a otros miembros mediante el intercambio de opiniones y la creaci\u00f3n conjunta. <\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Nuestra comunidad de Telegram es para ti. All\u00ed encontrar\u00e1s el mejor networking, art\u00edculos high-tech, debates de tendencias tech y beneficios exclusivos. <a href=\"https:\/\/t.me\/+blEFka3EDodjMTFk\" class=\"ek-link\">S\u00famate aqu\u00ed.<\/a><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\u00a1Nos vemos en Codemotion!<\/pre>\n\n\n\n<script src=\"https:\/\/codemotion.activehosted.com\/f\/embed.php?id=44\" type=\"text\/javascript\" charset=\"utf-8\"><\/script>\n","protected":false},"excerpt":{"rendered":"<p>Cuando has terminado tu primera aplicaci\u00f3n Laravel, comienza una nueva tarea, la de desplegarla en un servidor web. Ya sea porque es un encargo de un cliente o porque es un proyecto personal que quieres publicar, es necesario que funcione en alg\u00fan servidor. Porque eso de ense\u00f1arla solamente en tu entorno de desarrollo es poco&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/\">Read more<\/a><\/p>\n","protected":false},"author":249,"featured_media":27832,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[10648],"tags":[11880,11875],"collections":[11932,11860],"class_list":{"0":"post-27645","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-lenguajes-de-programacion","8":"tag-laravel-es","9":"tag-php-es","10":"collections-laravel","11":"collections-php","12":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Desplegando Laravel en un hosting compartido - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"Descubre c\u00f3mo desplegar una aplicaci\u00f3n de forma artesanal sin necesidad de herramientas de automatizaci\u00f3n costosas.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Desplegando Laravel en un hosting compartido\" \/>\n<meta property=\"og:description\" content=\"Descubre c\u00f3mo desplegar una aplicaci\u00f3n de forma artesanal sin necesidad de herramientas de automatizaci\u00f3n costosas.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-27T11:56:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-28T15:28:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"David Martinez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Martinez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/\"},\"author\":{\"name\":\"David Martinez\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/29b244cd009ab9146d634ceae52bdab2\"},\"headline\":\"Desplegando Laravel en un hosting compartido\",\"datePublished\":\"2024-05-27T11:56:54+00:00\",\"dateModified\":\"2024-05-28T15:28:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/\"},\"wordCount\":1515,\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/DEPL_000.jpeg\",\"keywords\":[\"Laravel\",\"PHP\"],\"articleSection\":[\"Lenguajes de programaci\u00f3n\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/\",\"name\":\"Desplegando Laravel en un hosting compartido - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/DEPL_000.jpeg\",\"datePublished\":\"2024-05-27T11:56:54+00:00\",\"dateModified\":\"2024-05-28T15:28:10+00:00\",\"description\":\"Descubre c\u00f3mo desplegar una aplicaci\u00f3n de forma artesanal sin necesidad de herramientas de automatizaci\u00f3n costosas.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/DEPL_000.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/DEPL_000.jpeg\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/desplegando-laravel-en-un-hosting-compartido\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lenguajes de programaci\u00f3n\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Desplegando Laravel en un hosting compartido\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Codemotion.Italy\\\/\",\"https:\\\/\\\/x.com\\\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/29b244cd009ab9146d634ceae52bdab2\",\"name\":\"David Martinez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/lado_cuadrada-100x100.png\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/lado_cuadrada-100x100.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/lado_cuadrada-100x100.png\",\"caption\":\"David Martinez\"},\"description\":\"Hi! I'm David. Sometimes a speaker, sometimes a listener, and always interested in web technologies. I specialize in complex projects involving anything related to PHP and Javascript. Lately, I've been diving deep into Laravel and API development (and the worst part is that I'm starting to like it).\",\"sameAs\":[\"https:\\\/\\\/martinezmartinez.com\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/dmartinezmartinez\\\/\"],\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/author\\\/david-martinez\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Desplegando Laravel en un hosting compartido - Codemotion Magazine","description":"Descubre c\u00f3mo desplegar una aplicaci\u00f3n de forma artesanal sin necesidad de herramientas de automatizaci\u00f3n costosas.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/","og_locale":"en_US","og_type":"article","og_title":"Desplegando Laravel en un hosting compartido","og_description":"Descubre c\u00f3mo desplegar una aplicaci\u00f3n de forma artesanal sin necesidad de herramientas de automatizaci\u00f3n costosas.","og_url":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2024-05-27T11:56:54+00:00","article_modified_time":"2024-05-28T15:28:10+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000.jpeg","type":"image\/jpeg"}],"author":"David Martinez","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"David Martinez","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/"},"author":{"name":"David Martinez","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/29b244cd009ab9146d634ceae52bdab2"},"headline":"Desplegando Laravel en un hosting compartido","datePublished":"2024-05-27T11:56:54+00:00","dateModified":"2024-05-28T15:28:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/"},"wordCount":1515,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000.jpeg","keywords":["Laravel","PHP"],"articleSection":["Lenguajes de programaci\u00f3n"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/","url":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/","name":"Desplegando Laravel en un hosting compartido - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000.jpeg","datePublished":"2024-05-27T11:56:54+00:00","dateModified":"2024-05-28T15:28:10+00:00","description":"Descubre c\u00f3mo desplegar una aplicaci\u00f3n de forma artesanal sin necesidad de herramientas de automatizaci\u00f3n costosas.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000.jpeg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000.jpeg","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/desplegando-laravel-en-un-hosting-compartido\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Lenguajes de programaci\u00f3n","item":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/"},{"@type":"ListItem","position":3,"name":"Desplegando Laravel en un hosting compartido"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/29b244cd009ab9146d634ceae52bdab2","name":"David Martinez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/lado_cuadrada-100x100.png","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/lado_cuadrada-100x100.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/lado_cuadrada-100x100.png","caption":"David Martinez"},"description":"Hi! I'm David. Sometimes a speaker, sometimes a listener, and always interested in web technologies. I specialize in complex projects involving anything related to PHP and Javascript. Lately, I've been diving deep into Laravel and API development (and the worst part is that I'm starting to like it).","sameAs":["https:\/\/martinezmartinez.com","https:\/\/www.linkedin.com\/in\/dmartinezmartinez\/"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/david-martinez\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000-600x400.jpeg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000-600x600.jpeg","author_info":{"display_name":"David Martinez","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/david-martinez\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000.jpeg",1024,1024,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000-150x150.jpeg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000-300x300.jpeg",300,300,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000-768x768.jpeg",768,768,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000.jpeg",1024,1024,false],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000.jpeg",1024,1024,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000.jpeg",1024,1024,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000-100x100.jpeg",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000-180x128.jpeg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000-896x504.jpeg",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000-400x225.jpeg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000-600x400.jpeg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/DEPL_000-600x600.jpeg",600,600,true]},"uagb_author_info":{"display_name":"David Martinez","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/david-martinez\/"},"uagb_comment_info":0,"uagb_excerpt":"Cuando has terminado tu primera aplicaci\u00f3n Laravel, comienza una nueva tarea, la de desplegarla en un servidor web. Ya sea porque es un encargo de un cliente o porque es un proyecto personal que quieres publicar, es necesario que funcione en alg\u00fan servidor. Porque eso de ense\u00f1arla solamente en tu entorno de desarrollo es poco&#8230;&hellip;","lang":"es","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/27645","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/249"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=27645"}],"version-history":[{"count":3,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/27645\/revisions"}],"predecessor-version":[{"id":27843,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/27645\/revisions\/27843"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/27832"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=27645"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=27645"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=27645"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=27645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}