【问题标题】:How to initialize a PHP websocket service in CPanel/External web host?如何在 CPanel/外部网络主机中初始化 PHP websocket 服务?
【发布时间】:2021-11-01 09:55:42
【问题描述】:

我开发了一个网络应用程序,它可以实时显示不同用户执行的某些操作的信息。为此,我在本地环境(WAMP)中使用内置 PHP 的 websockets 并且工作正常,但我需要它也可以在外部服务器(网络托管服务)上工作,我只能通过 CPanel 和 FTP 访问它。

在本地,我通过 Windows 的 CMD 使 websocket 工作执行下一行代码:

C:\wamp64\bin\php\php7.2.10\php.exe -q C:\wamp64\www\myapp\websocket_daemon.php

我的问题是,我怎样才能在 CPanel 中实现相同的结果,或者也许还有其他方法?

【问题讨论】:

    标签: php websocket cpanel


    【解决方案1】:

    共享托管环境(即具有 VirtualHost 配置的 Apache、PHP、MySQL 和 CPanel 接口)不太可能支持您的 websocket 应用程序。

    要使 websocket 正常工作,您需要:

    • 有一个专用于 websocket 入站连接的端口;或
    • 有一个 HTTP/HTTPS 服务器,它知道何时升级连接和代理传递到您的 websocket 应用程序。

    要运行自己的 websocket 服务,您应该考虑使用 Virtual Private Server 服务,例如 Amazon EC2、DigitalOcean VPS。

    【讨论】:

    • 谢谢。我会了解更多。
    【解决方案2】:

    为此,您需要对所涉及的 (Linux) 服务器具有 CLI(命令行界面)访问权限。假设您有这样的访问权限,运行 WS 服务将类似于

    ./websocket_daemon.php
    

    小脚本假定您位于适当的文件夹中。但是,在到达那里之前,您需要解决一些问题:

    第 1 步:您机器上的 SSH 支持

    您需要确保您的操作系统支持 SSH。您的操作系统似乎是 Windows,因此您需要安装 Git Bash 的 Putty。了解这些技术

    步骤 2 生成 SSH 密钥

    在您的 CPanel 中,您需要生成 SSH 密钥:

    • 点击管理 SSH 密钥
    • 点击生成新密钥
    • 使用您喜欢的设置来生成密钥,不用担心,您可以随时删除 SSH 密钥,如果您意识到您更喜欢其他方式来生成它们,则可以重新创建它们

    在此处阅读更多信息:https://docs.cpanel.net/cpanel/security/ssh-access/

    SSH 密钥是复合密钥,即它由一个私钥和一个公钥组成。您可以与任何人共享您的公钥,但永远不要将您的私钥发送给任何人。它应该在您的计算机上,并且可能保存到备份中。在此处阅读有关 SSH 密钥的更多信息:https://sectigo.com/resource-library/what-is-an-ssh-key

    第 3 步:确保您的计算机使用您为 CPanel 生成的 SSH 密钥

    您需要告诉您的操作系统 SSH 密钥对所在的位置,幸运的是这不是一个新问题,请在此处查看有关此主题的详尽讨论:https://serverfault.com/questions/194567/how-do-i-tell-git-for-windows-where-to-find-my-private-rsa-key

    第 4 步:测试您的 SSH

    在支持 SSH 的 CLI 中运行以下命令:

    ssh <username>@path
    

    如果没有错误,那么你已经成功测试了 SSH,你几乎可以继续下一步了

    第 5 步:上传您的 Websocket 脚本

    如您所知,您可以通过 FTP 执行此操作,但您也可以通过SCP 执行此操作。 scp 不仅会使用您新创建的 SSH 连接并从中获得乐趣,而且它也是安全的。语法:

    scp file.txt remote_username@10.10.0.2:/remote/directory
    

    第 6 步:SSH 到服务器

    请参阅第 4 步。

    第 7 步:导航到文件所在的位置

    第 8 步:确保您有权运行它

    在此处查看更多信息:https://alligator.io/workflow/command-line-basics-file-permissions/

    步骤 9:: 执行文件

    运行

    ./websocket_daemon.php
    

    如果这成功了,那么这个工作就基本完成了,你需要一些脚本在启动时运行它并管理它,但这与问题并不严格相关。

    https://oracle-base.com/articles/linux/linux-scripts-running-in-the-background https://smallbusiness.chron.com/run-command-startup-linux-27796.html

    但是,如果问题尚未解决,请继续阅读

    第 10 步:确保服务器上的 WS 支持

    您需要设置自己的 WS 支持。由于您已经设法在 Windows 本地执行此操作,因此希望您的专业知识也能在远程 Linux 上运行。如果没有,请在此处阅读更多内容:

    PHP Websocket server in Linux hosting

    【讨论】:

    • 感谢您提供信息丰富的回复。我现在就去了解这一切。
    • @Alexis88 不客气!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2020-01-19
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多