# Deployment de aplicaciones JavaScript y PHP

Todos nuestros planes de hosting web soportan aplicaciones PHP (backend) y JavaScript (frontend), construidas  con cualquier framework, librerías o sistema de paquetes, con SQLite o MySQL. En esta guía describimos el proceso de subir estas aplicaciones creadas en un servidor local (ej. XAMPP) a una cuenta de hosting:

### Subir una aplicación a una cuenta de hosting

1. Antes de subir la aplicación, todas las dependencias deberían ya estar instaladas, por ejemplo con `composer install` y `npm run build` o los comandos de los sistemas de paquetes que estemos usando.
2. Nos aseguramos de que la aplicación funcione correctamente en el servidor local.
3. Con todo lo anterior comprobado, empezamos la subida de archivos. En nuestro equipo, comprimimos la carpeta del proyecto y la subimos por FTP:&#x20;

{% content-ref url="/pages/DzWj7JgOE6DCLgSZaPy3" %}
[Conexión FTP](/menu-principal/guias/web-hosting/sesiones-ftp.md)
{% endcontent-ref %}

4. Ahora en el servidor, conectados por SSH o con el navegador de archivos del panel. descomprimimos la carpeta, **fuera** del directorio público (**public\_html**, **httpdocs**, etc.).

{% content-ref url="/pages/VTTO1eXaWXE2OXroFDZJ" %}
[Administrador de Archivos](/menu-principal/guias/web-hosting/administrador-de-archivos.md)
{% endcontent-ref %}

4. Copiamos los archivos de la carpeta pública del proyecto (donde está el index.html o index.php) a la carpeta pública de la cuenta antes mencionada.&#x20;

### Pasos generales

6. Si la aplicación usa bases de datos MySQL locales, será necesario crearlas dentro del panel de control:

{% content-ref url="/pages/7ZfRuqavHniHqtFq8vaV" %}
[Bases de Datos](/menu-principal/guias/web-hosting/bases-de-datos.md)
{% endcontent-ref %}

7. Cuando creamos la aplicación, seguramente configuramos la conexión a la base de datos (en un archivo PHP, .env, .conf, etc.). Probablemente debamos cambiar los siguientes parámetros:
   1. **Puerto**: 3306.
   2. **Nombre**: el nombre con el que recreamos la base en el panel.
   3. **Usuario**: el usuario de base de datos que creamos en el panel.
   4. **Contraseña**: la contraseña con la que recreamos la base en el panel.
8. Las bases SQLite deberían funcionar sin cambios.
9. Normalmente, los frameworks de JavaScript funcionarán por defecto.

### Laravel

1. En Laravel, el archivo index.php contiene las rutas de los archivos de Laravel, que quedaron en la carpeta que descomprimimos anteriormente. Una opción es mover el contenido de esa carpeta a la carpeta pública. La otra es modificar el index.php.
2. Si queremos modificar el index.php, debemos buscar las rutas de archivos y carpetas y cambiarlas. Si la carpeta que descomprimimos se llama **laravel**, cambiariamos las rutas que empezaban con **../** a **../laravel/**, o a **../\[carpeta]/** con el nombre que descomprimimos. Por ejemplo:

```
'/../storage/framework/maintenance.php' -> '/../laravel/storage/framework/maintenance.php'
'/../vendor/autoload.php' -> '/../laravel/vendor/autoload.php'
'/../bootstrap/app.php' -> '/../laravel/bootstrap/app.php'
```

3. Si no hemos movido el contenido de la carpeta original a la carpeta pública, debemos mover por lo menos la carpeta **build** para que el sitio funcione.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ayuda.sitioshispanos.com/menu-principal/guias/web-hosting/deployment-de-aplicaciones-javascript-y-php.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
