Skip to main content

Installazione come server web per Linux - Guida rapida

In un terminale, segui i seguenti passaggi per lavorare direttamente con CODESYS 4 sul server web.

Suggerimento

Per una guida completa, consultare quanto segue: Installazione come server web per Linux

Di partenza CODESYS 4 come server locale

Sono necessari i privilegi di amministratore.

Per eseguire quanto segue sudo comandi, è necessario disporre dei privilegi di amministratore sul sistema (vedere Wiki di Debian: sudo).

  1. Scarica il CODESYS 4 Pacchetto Debian disponibile nel CODESYS Store.

  2. Installare il CODESYS 4 Pacchetto Debian.

    sudo apt install ./codesys-4_[your version]_[your architecture].deb
  3. Crea il gruppo codesys-4 e l'utente c4-server Questi sono necessari per avviare il server e accedere all'applicazione.

    Nell'esempio seguente, un utente di prova aggiuntivo denominato hugo verrà creato e aggiunto a codesys-4 gruppo. Questo utente potrà accedere all'applicazione in seguito. Questa operazione è facoltativa. A scopo di test, è possibile aggiungere semplicemente un utente esistente al gruppo. codesys-4 gruppo.

    1. Crea il codesys-4 gruppo se non esiste già. Questo gruppo dovrebbe essere stato creato automaticamente durante l'installazione del pacchetto Debian.

      sudo addgroup codesys-4
    2. Crea un nuovo utente di sistema che eseguirà il server.

      sudo useradd --system --create-home c4-server
    3. Opzionale: crea un nuovo utente di prova denominato hugo Ricorda la password.

      sudo adduser hugo
    4. Facoltativo: aggiungi il hugo utente al codesys-4 gruppo.

      sudo adduser hugo codesys-4
      
  4. In /etc/systemd/system/, crea un file denominato codesys-4.service. Sostituire nano con il tuo editor preferito.

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

    Modifica il file come segue:

    [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. Avvia l'unità systemd che hai appena creato:

    sudo systemctl start codesys-4

    IL CODESYS 4 Il server sarà ora raggiungibile localmente sulla porta 8080 Ora potrai accedere all'applicazione con le credenziali dell'utente creato in precedenza. Hugo A http://localhost:8080.

  6. Impostare inoltre l'unità su enabled per avviare automaticamente il server all'avvio del sistema:

    sudo systemctl enable codesys-4

Configurazione di un proxy inverso

Per fare CODESYS 4 Per rendere l'accesso da altri dispositivi alla rete è necessario configurare un proxy inverso HTTPS upstream. Ciò è richiesto da esigenze tecniche. Per ulteriori informazioni, consultare quanto segue: Preposizionamento di un proxy inverso TLS.

Per configurare il reverse proxy, è possibile utilizzare il pacchetto nginx su Debian, ad esempio. I passaggi necessari per la configurazione sono descritti di seguito.

  1. Installa il pacchetto nginx se non è già stato fatto:

    sudo apt update && sudo apt install -y nginx
  2. Per abilitare la comunicazione HTTPS, è necessario creare un certificato temporaneo autofirmato e una chiave.

    Rischio per la sicurezza

    La creazione di certificati autofirmati e la loro classificazione come attendibili rappresenta un rischio significativo per la sicurezza. Assicuratevi che terze parti non abbiano mai accesso al vostro certificato o alla vostra chiave privata. In caso contrario, vi esporrete al rischio di un attacco man-in-the-middle.

    Inoltre, i certificati creati nei passaggi seguenti sono destinati e adatti esclusivamente a scopi di test e non per l'uso in produzione. Per una corretta implementazione di CODESYS 4 È necessario disporre di certificati TLS pronti per la produzione, creati in conformità con le linee guida aziendali. Contatta il tuo reparto IT o il tuo fornitore di servizi IT per assistenza.

    In caso di dubbi o se non si ha familiarità con quest'area, è consigliabile interrompere la fase di messa in servizio a questo punto e contattare il reparto IT o il fornitore di servizi IT.

  3. A scopo di test, crea una chiave privata e un certificato per il proxy inverso:

    1. Crea le cartelle necessarie.

      sudo mkdir -p /etc/ssl/certs /etc/ssl/private
    2. Crea la chiave privata e il certificato autofirmato.

      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. Rendi la chiave leggibile solo dal proprietario (root).

      sudo chmod 600 /etc/ssl/private/codesys-4.key
    4. Rendi il certificato leggibile da tutti e scrivibile solo dal proprietario (root).

      sudo chmod 644 /etc/ssl/certs/codesys-4-certificate.crt
  4. Crea la configurazione per il proxy inverso. Sostituisci nano con il tuo editor preferito.

    sudo nano /etc/nginx/sites-available/codesys-4
  5. Crea la seguente configurazione:

    Esempio 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. Abilita la configurazione tramite collegamento simbolico:

    1. Disabilita la configurazione predefinita di nginx.

      sudo rm /etc/nginx/sites-enabled/default
    2. Abilita la configurazione che hai creato.

      sudo ln -s /etc/nginx/sites-available/codesys-4 /etc/nginx/sites-enabled/codesys-4
  7. Ora riavvia nginx per applicare la configurazione modificata:

    sudo systemctl restart nginx

    CODESYS 4 ora dovrebbe essere raggiungibile a https://localhost sulla porta 443 o da altri dispositivi sulla rete a https://[your_device_name/your_ip_address].

  8. Imposta anche l'unità nginx su enabled per avviare automaticamente anche il reverse proxy all'avvio del sistema:

    sudo systemctl enable nginx
  9. Se non conosci il tuo indirizzo IP, esegui il ip comando. Il requisito fondamentale è che la rete aziendale e il firewall consentano l'accesso.

    ip addr

    L'output del comando potrebbe apparire più o meno così:

    #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

    Troverai gli indirizzi IP del tuo server sotto end0 dispositivo – spesso anche eth0 o simili (vedere Wiki di Debian: Nomi delle interfacce di rete).

    • Indirizzo IPv4 dopo la parola inet: 192.168.0.123

    • Indirizzo IPv6 dopo la parola inet6: fe80::0123:1234:2345:3456 nell'esempio

Se si utilizza un certificato autofirmato come descritto sopra, verrà visualizzato un avviso nel browser:

_c4_img_install_webserver_linux_warning.png

Assicurati di connetterti al tuo dispositivo confrontando il certificato visualizzato nel browser con il certificato presente sul dispositivo.

Per fare ciò, esegui il seguente comando nel tuo terminale:

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

L'output contiene l'impronta digitale del certificato. Confrontala con l'impronta digitale SHA-256 del certificato nel browser. (Vedi Passaggi per Firefox, oppure in Google Chrome tramite il Non sicuro pulsante nella barra degli indirizzi → Dettagli del certificato. ) Se entrambe le impronte digitali sono identiche e sei consapevole del rischio, puoi ignorare temporaneamente l'avviso facendo clic Accetta il rischio e continua (Firefox) o Procedi con localhost (non sicuro) (Google Chrome).