Configuración de Alojamiento Virtual y Despliegue de Aplicaciones: Servidores Locales y Remotos

Clasificado en Informática

Escrito el en español con un tamaño de 7,23 KB

Configuración de un Alojamiento Virtual (Virtual Host)

Pasos para configurar un alojamiento virtual:

  1. Configurar el servidor DNS: Asegurarse de que el servidor DNS resuelva el nombre de dominio correctamente.
  2. Deshabilitar el servidor virtual por defecto:
    • Ejecutar: sudo a2dissite 000-default.conf (o el archivo de configuración por defecto).
    • Verificar que se haya eliminado el enlace simbólico en sites-enabled.
    • Reiniciar el servidor Apache.
  3. Crear y habilitar el nuevo servidor virtual: Crear un nuevo archivo de configuración para el servidor virtual con todas las directivas necesarias (DocumentRoot, ServerName, etc.).
  4. Habilitar el servidor virtual creado:
    • Ejecutar: sudo a2ensite nombre_del_servidor.conf.
  5. Verificar y reiniciar: Comprobar que se haya creado el enlace simbólico en sites-enabled y reiniciar el servidor Apache.

Despliegue de Aplicaciones en Servidores

Servidor Local

Pasos para desplegar una aplicación en un servidor local:

  1. Instalar el servidor: Instalar un entorno de servidor como WAMP (Windows) o LAMP (Linux).
  2. Configurar la base de datos:
    • Crear un usuario de base de datos.
    • Asignar permisos al usuario.
    • Crear o cargar la base de datos.
  3. Copiar la aplicación: Copiar los archivos de la aplicación al directorio raíz del servidor web (por ejemplo, htdocs en WAMP, /var/www/html en LAMP).
  4. Configurar el servidor virtual (si es necesario): Crear las directivas necesarias para la aplicación en la configuración del servidor web (por ejemplo, en Apache).
  5. Reiniciar el servidor: Reiniciar el servidor web para aplicar los cambios.
  6. Acceder a la aplicación: Abrir un navegador web y acceder a la aplicación a través de localhost o la dirección IP local.

Servidor Remoto

Pasos para desplegar una aplicación en un servidor remoto:

  1. Instalar software necesario: Asegurarse de que el servidor remoto tenga instalado:
    • Un servidor web (como Apache o Nginx).
    • Un servidor de base de datos (como MySQL o PostgreSQL).
    • Un servidor FTP (como vsftpd) para transferir archivos.
    • OpenSSH para acceso remoto seguro.
  2. Configurar la base de datos: Similar al servidor local, crear un usuario, asignar permisos y crear/cargar la base de datos.
  3. Transferir la aplicación: Usar un cliente FTP (como FileZilla) para copiar los archivos de la aplicación al directorio raíz del servidor web en el servidor remoto.
  4. Configurar el servidor virtual (si es necesario): Crear las directivas necesarias para la aplicación en la configuración del servidor web, utilizando una conexión SSH para acceder al servidor.
  5. Reiniciar el servidor: Reiniciar el servidor web para aplicar los cambios (a través de SSH).
  6. Acceder a la aplicación: Abrir un navegador web y acceder a la aplicación a través del nombre de dominio o la dirección IP pública del servidor.

Ejemplo de Código Java: Clase Humano y ArrayList

import java.util.ArrayList;

public class Humano {
    private String nombre;
    private int edad;

    public Humano(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getNombre() {
        return nombre;
    }
}

class Main{
 public static void main(String[] args) {
        ArrayList<Humano> lista = new ArrayList<>();
        lista.add(new Humano("Pepe", 21));
        lista.add(new Humano("Alejandro", 60));
        lista.add(new Humano("Pablito", 21));

        for (Humano h1 : lista) {
            System.out.println("El humano " + h1 + " se llama " + h1.getNombre());
        }
 }
}

Correcciones y mejoras en el código Java:

  • Se corrigió la declaración del ArrayList para usar la sintaxis de diamante (<>) para inferencia de tipos.
  • Se agregó una clase Main que contiene el método main. El código original tenía el main fuera de cualquier clase, lo cual no es válido en Java.
  • Se eliminó la llamada a lista.get() que no tenía ningún argumento ni efecto.
  • Se mejoró el formato del código para mayor legibilidad.
  • Se corrigió error de sintaxis en el método setNombre.

Ejemplo de Código Java: Numeración de Líneas de un Fichero

package ejer1_ficheros;

import java.io.*;
import java.util.Scanner;

public class Ejer1_ficheros {

    public static String LeerFichero(String n) throws IOException {
        StringBuilder s = new StringBuilder();
        File f = new File(n);
        int con = 1;

        if (f.exists()) {
            try (FileReader fr = new FileReader(f);
                 BufferedReader br = new BufferedReader(fr)) {

                String linea;
                while ((linea = br.readLine()) != null) {
                    if (linea != null && !linea.isEmpty()) {
                        s.append("\n").append(con).append(" ").append(linea);
                        con++;
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        EscribirFichero(s.toString(), n);
        return s.toString();
    }

    public static void EscribirFichero(String s, String n) throws IOException {
        File f = new File(n + ".num");
        try (FileWriter fw = new FileWriter(f, true)) {
            fw.write(s);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        System.out.println("Introduzca el nombre del archivo a numerar: ");
        String n = sc.nextLine();
        LeerFichero(n + ".java");
    }
}

Correcciones y mejoras en el código Java de numeración:

  • Se utilizó un StringBuilder para construir la cadena resultante de manera más eficiente, en lugar de concatenar cadenas repetidamente.
  • Se emplearon try-with-resources para asegurar el cierre adecuado de los flujos (FileReader, BufferedReader, FileWriter), incluso en caso de excepciones.
  • Se simplificó la lógica del bucle while.
  • Se movió la llamada a EscribirFichero fuera del bucle while, para que se escriba el archivo completo una sola vez, en lugar de escribir cada línea por separado.
  • Se corrigió la condición para verificar si la línea está vacía.
  • Se mejoró el formato del código.

Entradas relacionadas: