Skip to main content

Linux Web 服务器安装指南 – 快速入门

在终端中,按照以下步骤直接操作CODESYS 4在网络服务器上。

提示

如需更全面的指南,请参阅以下内容:安装为 Linux Web 服务器

开始CODESYS 4作为本地服务器

需要管理员权限

为了运行以下内容sudo使用命令时,您需要系统管理员权限(参见Debian Wiki:sudo)。

  1. 下载CODESYS 4从 CODESYS 商店购买 Debian 软件包。

  2. 安装CODESYS 4 Debian软件包。

    sudo apt install ./codesys-4_[your version]_[your architecture].deb
  3. 创建群组codesys-4以及用户c4-server这些是启动服务器和登录应用程序所必需的。

    在以下示例中,新增了一个名为“hugo将被创建并添加到codesys-4该用户稍后将能够登录应用程序。此操作是可选的。出于测试目的,您也可以简单地将现有用户添加到该组中。codesys-4团体。

    1. 创建codesys-4如果该组尚不存在,则创建该组。该组应在安装 Debian 软件包期间自动创建。

      sudo addgroup codesys-4
    2. 创建一个新的系统用户,该用户将运行服务器。

      sudo useradd --system --create-home c4-server
    3. (可选)创建一个名为“test”的新测试用户hugo记住密码。

      sudo adduser hugo
    4. 可选:添加hugo用户到codesys-4团体。

      sudo adduser hugo codesys-4
      
  4. 在/etc/systemd/system/创建一个名为的文件codesys-4.service。 代替nano使用您喜欢的编辑器。

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

    按如下方式编辑文件:

    [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. 启动你刚刚创建的systemd单元:

    sudo systemctl start codesys-4

    这CODESYS 4现在可以通过端口在本地访问服务器。8080您现在可以使用之前创建的用户凭据登录应用程序。Hugo在http://localhost:8080。

  6. 同时将单位设置为enabled在系统启动时自动启动服务器:

    sudo systemctl enable codesys-4

设置反向代理

为了制作CODESYS 4要使网络上的其他设备能够访问该服务,需要设置上游 HTTPS 反向代理。这是由于技术要求所致。更多信息,请参阅以下内容:预先部署 TLS 反向代理。

例如,在 Debian 系统上,您可以使用 nginx 软件包来设置反向代理。以下详细说明了设置步骤。

  1. 如果尚未安装 nginx 软件包,请安装:

    sudo apt update && sudo apt install -y nginx
  2. 要启用 HTTPS 通信,您需要创建一个临时自签名证书和一个密钥。

    安全风险

    创建自签名证书并将其标记为受信任证书会带来严重的安全风险。务必确保第三方永远无法访问您的证书或私钥。否则,您将容易受到中间人攻击。

    此外,以下步骤创建的证书仅供测试用途,不可用于生产环境。要正确部署,CODESYS 4您应该已根据公司指南创建了可用于生产环境的TLS证书。如有需要,请联系您的IT部门或IT服务提供商寻求帮助。

    如果您对此领域有任何疑问或不熟悉,则应立即停止进一步的调试工作,并联系您的 IT 部门或 IT 服务提供商。

  3. 为了进行测试,请为反向代理创建私钥和证书:

    1. 创建必要的文件夹。

      sudo mkdir -p /etc/ssl/certs /etc/ssl/private
    2. 创建私钥和自签名证书。

      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. 使密钥仅对所有者(root)可读。

      sudo chmod 600 /etc/ssl/private/codesys-4.key
    4. 使证书对所有人可见,但仅对所有者(root)可见。

      sudo chmod 644 /etc/ssl/certs/codesys-4-certificate.crt
  4. 创建反向代理的配置。替换nano使用您喜欢的编辑器。

    sudo nano /etc/nginx/sites-available/codesys-4
  5. 创建以下配置:

    例 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. 通过符号链接启用配置:

    1. 禁用nginx的默认配置。

      sudo rm /etc/nginx/sites-enabled/default
    2. 启用您创建的配置。

      sudo ln -s /etc/nginx/sites-available/codesys-4 /etc/nginx/sites-enabled/codesys-4
  7. 现在重启nginx以应用更改后的配置:

    sudo systemctl restart nginx

    CODESYS 4现在应该可以通过以下方式联系到: https://localhost在端口 443 上或从您网络上的其他设备访问https://[your_device_name/your_ip_address]。

  8. 同时将 nginx 单元设置为enabled同时在系统启动时自动启动反向代理:

    sudo systemctl enable nginx
  9. 如果您不知道自己的 IP 地址,请运行以下命令ip命令。前提是贵公司网络和防火墙允许访问。

    ip addr

    该命令的输出结果可能类似于这样:

    #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

    您可以在下方找到服务器的 IP 地址。end0设备——通常也eth0或类似(见Debian Wiki:网络接口名称)。

    • IPv4 地址(在单词之后)inet:192.168.0.123

    • IPv6 地址(在单词之后)inet6:fe80::0123:1234:2345:3456例如

如果您使用如上所述的自签名证书,则浏览器中会显示警告:

_c4_img_install_webserver_linux_warning.png

请将浏览器中显示的证书与设备上的证书进行比较,以确保您已连接到您的设备。

为此,请在终端中运行以下命令:

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

输出结果包含证书的指纹。请将其与浏览器中证书的 SHA-256 指纹进行比较。(参见) Firefox 的步骤或者在谷歌浏览器中通过以下方式不安全地址栏中的按钮 →证书详情()如果两个指纹完全相同,并且您了解风险,则可以点击暂时忽略警告。接受风险并继续(火狐浏览器)继续访问本地主机(不安全)(谷歌浏览器)