【问题标题】:How to setup and run a PHP WebSocket service on a cpanel-based shared hosting platform?如何在基于 cpanel 的共享主机平台上设置和运行 PHP WebSocket 服务?
【发布时间】:2020-01-19 05:08:57
【问题描述】:

我在 Ratchet PHP 中创建了一个聊天应用程序。它在使用 WAMP 的本地机器上运行良好。我希望它设置在实时服务器上。

在我的服务器上我有:

  • PHP 支持
  • SSH 访问
  • 端口 9000,为出站连接打开。
  • 子域

我没有的:

  • 没有入站连接端口。
  • 在 SSH 中没有 root 访问权限。说我看不到/编辑iptables

我运行了php server.php,它给出了有关服务器已启动并在端口 9000 上侦听的成功消息。但是当 HTML 页面尝试使用 ws://domain:9000 连接它时,它会遇到错误-

Firefox 无法与服务器建立连接 ws://domain.com:9000/

我搜索了很多,看来我需要的是一个用于入站连接的端口。

但根据this answer,我需要的是PHP 支持Ratchet 在共享主机上工作。任何人都可以解释我真正需要的东西吗?如果它在我的服务器上的东西列表中不可用,是否有任何解决方法。

【问题讨论】:

    标签: php cpanel lamp ratchet phpwebsocket


    【解决方案1】:

    基本上没有

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

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

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

    第一个路由要求服务器允许入站连接到某个端口号。这对托管服务提供商来说是一个潜在的安全问题,因此您的供应商不太可能同意您这样做。

    第二条路线需要 Apache 服务器同时安装并启用 mod_proxymod_proxy_wstunnel。它还要求您使用ProxyPass 配置,它根本不能被.htaccess 配置覆盖。

    因此,除非您的主机授予您访问 Apache 主配置的权限(或者会为您应用此类更改),否则您将非常绝望。

    建议

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

    【讨论】:

    • 嘿!这个答案已经很老了,但我确实想在这里提供一些指导。如果你能让你的主人合作,你就可以完成这件事。要么只运行一个 systemd 单元并打开端口,使用打开端口的 cron,或者您可以使用包含文件为一个 VirtualHost docs.cpanel.net/ea4/apache/… 启用 ProxyPass 指令
    • @PixelPerfect:感谢您提出您的想法。我认为这个答案仍然成立。你的建议这在技术上是可能的,但实际上是不可能的。开放 TCP 端口(路由 1)或允许客户触摸公共服务器的配置(路由 2)可能会给他们的服务器带来安全风险。因此,除非您是非常重要的客户或非常好的朋友,否则他们不太可能会简单地同意您。
    • 包含文件的目的是将更改隔离到特定用户。此外,我曾经登录过的大多数 cPanel 要么不在防火墙后面,要么运行 CSF,这允许直接从 WHM 快速打开端口。默认情况下,只要您不在 AWS、GCP、MSAzure 或其他设置了默认防火墙的 VHost 上,服务应该可以只获取一个端口。
    • 官方不支持cPanel产品,正确,但有变通方法。他们会要求主机合作,是的,很多人不会,但如果你使用的是来自较小主机的共享服务器,它实际上比你想象的更有可能。
    猜你喜欢
    • 2020-04-23
    • 2021-07-20
    • 2015-03-01
    • 1970-01-01
    • 2017-07-17
    • 2013-05-28
    • 2016-09-26
    • 2020-01-16
    • 1970-01-01
    相关资源
    最近更新 更多