Skip to main content

Instalación como servidor web para Linux – Guía de inicio rápido

En una terminal, siga los siguientes pasos para trabajar directamente con CODESYS 4 en el servidor web.

Sugerencia

Para obtener una guía completa, consulte lo siguiente: Instalación como servidor web para Linux

A partir de CODESYS 4 como servidor local

Se requieren privilegios de administrador

Para ejecutar lo siguiente sudo Para ejecutar comandos, necesita privilegios de administrador en su sistema (ver Wiki de Debian: sudo).

  1. Descargar el CODESYS 4 Paquete Debian de la tienda CODESYS.

  2. Instalar el CODESYS 4 Paquete Debian.

    sudo apt install ./codesys-4_[your version]_[your architecture].deb
  3. Crear el grupo codesys-4 y el usuario c4-server Estos son necesarios para iniciar el servidor e iniciar sesión en la aplicación.

    En el siguiente ejemplo, un usuario de prueba adicional llamado hugo se creará y se agregará a codesys-4 grupo. Este usuario podrá iniciar sesión en la aplicación más tarde. Esto es opcional. Para fines de prueba, también podría simplemente agregar un usuario existente al grupo. codesys-4 grupo.

    1. Crear el codesys-4 grupo si aún no existe. Este grupo debería haberse creado automáticamente durante la instalación del paquete Debian.

      sudo addgroup codesys-4
    2. Cree un nuevo usuario del sistema que ejecutará el servidor.

      sudo useradd --system --create-home c4-server
    3. Opcional: Cree un nuevo usuario de prueba llamado hugo Recuerda la contraseña.

      sudo adduser hugo
    4. Opcional: Añadir el hugo usuario al codesys-4 grupo.

      sudo adduser hugo codesys-4
      
  4. En /etc/systemd/system/, crea un archivo llamado codesys-4.service. Reemplazar nano con tu editor preferido.

    sudo nano /etc/systemd/system/codesys-4.service

    Edite el archivo de la siguiente manera:

    [Unit]
    Description=CODESYS 4 Server
     
    [Service]
    Type=exec
    WorkingDirectory=/opt/codesys-4/
    ExecStart=/opt/codesys-4/c4-server --port 8080
    Restart=always
    # Restart service after 10 seconds if the dotnet service crashes:
    RestartSec=10
    KillSignal=SIGINT
    SyslogIdentifier=codesys-4-server
    User=c4-server
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
     
    [Install]
    WantedBy=multi-user.target
  5. Inicie la unidad systemd que acaba de crear:

    sudo systemctl start codesys-4

    El CODESYS 4 El servidor ahora será accesible localmente en el puerto 8080 Ahora podrá iniciar sesión en la aplicación con las credenciales del usuario creado previamente. Hugo en http://localhost:8080.

  6. También configure la unidad en enabled Para iniciar automáticamente el servidor al arrancar el sistema:

    sudo systemctl enable codesys-4

Configuración de un proxy inverso

Para hacer CODESYS 4 Para que sea accesible desde otros dispositivos de su red, es necesario configurar un proxy inverso HTTPS ascendente. Esto se debe a requisitos técnicos. Para obtener más información, consulte lo siguiente: Preposicionamiento de un proxy inverso TLS.

Para configurar el proxy inverso, puede usar el paquete nginx en Debian, por ejemplo. Los pasos necesarios para la configuración se explican a continuación.

  1. Instale el paquete nginx si aún no lo ha hecho:

    sudo apt update && sudo apt install -y nginx
  2. Para habilitar la comunicación HTTPS, necesita crear un certificado autofirmado temporal y una clave.

    Riesgo de seguridad

    Crear certificados autofirmados y clasificarlos como de confianza supone un riesgo de seguridad significativo. Asegúrese de que terceros nunca accedan a su certificado ni a su clave privada. De lo contrario, se expone a un ataque de intermediario (man-in-the-middle).

    Además, los certificados creados en los siguientes pasos están destinados y son adecuados exclusivamente para fines de prueba y no para uso productivo. Para una correcta implementación de CODESYS 4 Debe contar con certificados TLS listos para producción, creados de acuerdo con las directrices de su empresa. Póngase en contacto con su departamento de TI o proveedor de servicios de TI para obtener ayuda.

    Si tiene dudas o no está familiarizado con esta área, debe detener la puesta en marcha en este punto y ponerse en contacto con su departamento de TI o proveedor de servicios de TI.

  3. Para fines de prueba, cree una clave privada y un certificado para el proxy inverso:

    1. Crea las carpetas necesarias.

      sudo mkdir -p /etc/ssl/certs /etc/ssl/private
    2. Cree la clave privada y el certificado autofirmado.

      sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
        -keyout /etc/ssl/private/codesys-4.key \
        -out /etc/ssl/certs/codesys-4-certificate.crt
    3. Hacer que la clave solo sea legible por el propietario (root).

      sudo chmod 600 /etc/ssl/private/codesys-4.key
    4. Haga que el certificado sea legible para todos y modificable solo por el propietario (root).

      sudo chmod 644 /etc/ssl/certs/codesys-4-certificate.crt
  4. Cree la configuración para el proxy inverso. Reemplace nano con tu editor preferido.

    sudo nano /etc/nginx/sites-available/codesys-4
  5. Cree la siguiente configuración:

    ejemplo 2. /etc/nginx/sites-available/codesys-4
    # See https://docs.microsoft.com/en-us/troubleshoot/developer/webapps/aspnetcore/practice-troubleshoot-linux/2-2-install-nginx-configure-it-reverse-proxy
    # for more information.
    
    server {
     listen	443 ssl;
     listen	[::]:443 ssl;
     ssl_certificate /etc/ssl/certs/codesys-4-certificate.crt;
     ssl_certificate_key /etc/ssl/private/codesys-4.key;
    
     #server_name _;
     server_tokens off; # see https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens
    
     location / {
     rewrite ^/$ /index.html last;
     proxy_pass http://127.0.0.1:8080;
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection keep-alive;
     proxy_set_header Connection "Upgrade";
     proxy_set_header Host $host;
     proxy_cache_bypass $http_upgrade;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-Forwarded-Proto $scheme;
    
     #hsts header
     add_header Strict-Transport-Security "max-age=31536000" always;
     }
    }
    
    # Redirect unencrypted http access to encrypted https access.
    server {
     listen 80 default_server;
     listen [::]:80 default_server ipv6only=on;
    
     server_name _;
    
     return 301 https://$host$request_uri;
    }


  6. Habilite la configuración mediante enlace simbólico:

    1. Deshabilitar la configuración predeterminada de nginx.

      sudo rm /etc/nginx/sites-enabled/default
    2. Habilita la configuración que has creado.

      sudo ln -s /etc/nginx/sites-available/codesys-4 /etc/nginx/sites-enabled/codesys-4
  7. Ahora reinicie nginx para aplicar la configuración modificada:

    sudo systemctl restart nginx

    CODESYS 4 Ahora debería poder accederse a: https://localhost en el puerto 443 o desde otros dispositivos en su red en https://[your_device_name/your_ip_address].

  8. También configure la unidad nginx en enabled para que también se inicie automáticamente el proxy inverso al arrancar el sistema:

    sudo systemctl enable nginx
  9. Si no conoce su dirección IP, ejecute el ip comando. Para ello, es necesario que la red y el cortafuegos de su empresa permitan el acceso.

    ip addr

    El resultado del comando podría verse así:

    #1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    #    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    #    inet 127.0.0.1/8 scope host lo
    #       valid_lft forever preferred_lft forever
    #    inet6 ::1/128 scope host noprefixroute
    #       valid_lft forever preferred_lft forever
    #2: end0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    #    link/ether 01:23:45:67:89:ab brd ff:ff:ff:ff:ff:ff
    #    inet 192.168.0.123/24 brd 192.168.0.255 scope global dynamic noprefixroute end0
    #       valid_lft 350450sec preferred_lft 350450sec
    #    inet6 fe80::0123:1234:2345:3456/64 scope link noprefixroute
    #       valid_lft forever preferred_lft forever

    Encontrará las direcciones IP de su servidor en la siguiente sección: end0 dispositivo – a menudo también eth0 o similar (ver Wiki de Debian: Nombres de interfaces de red).

    • Dirección IPv4 después de la palabra inet: 192.168.0.123

    • Dirección IPv6 después de la palabra inet6: fe80::0123:1234:2345:3456 en el ejemplo

Si utiliza un certificado autofirmado como se describe anteriormente, recibirá una advertencia en su navegador:

_c4_img_install_webserver_linux_warning.png

Asegúrese de que se está conectando a su dispositivo comparando el certificado que se muestra en el navegador con el certificado del dispositivo.

Para ello, ejecuta el siguiente comando en tu terminal:

openssl x509 -in /etc/ssl/certs/codesys-4-certificate.crt -noout -fingerprint -sha256

La salida contiene la huella digital del certificado. Compárela con la huella digital SHA-256 del certificado en el navegador. (Ver Pasos para Firefox, o en Google Chrome a través de la No es seguro botón en la barra de direcciones → Detalles del certificado. ) Si ambas huellas dactilares son idénticas y usted es consciente del riesgo, puede ignorar temporalmente la advertencia haciendo clic Acepte el riesgo y continúe. (Firefox) o Proceda a localhost (no seguro) (Google Chrome).