如何使 PHP 服务器 websocket 在域上工作?

Posted

技术标签:

【中文标题】如何使 PHP 服务器 websocket 在域上工作?【英文标题】:How to make a PHP server websocket work on a domain? 【发布时间】:2021-06-20 01:50:30 【问题描述】:

我有一个 WebSocket 服务器,但我不知道如何让它在我的本地主机之外工作。目前,我必须将 CMD 指向项目位置并使用命令“php -q server.php”运行服务器,但显然用户不必这样做。出于这个原因,我开始搜索并找到了 Heroku,但我无法将其上传到那里。思路是通过Procfile运行一个.sh文件,.sh文件会激活命令“php server.php”;之后,一个名为 nginx_app.conf 的文件将替换 localhost:812 的域 URL,但是当我将项目上传到 Heroku 时,它不接受并需要 composer.json,但我的项目不依赖它。有谁知道我怎样才能使这个 WebSocket 以相同或其他方式工作?

【问题讨论】:

您是否在问如何在公共服务器上部署您的 websocket 应用程序?您需要将它托管在允许您运行后台进程并将它们设置为作为守护进程运行的服务器中(或者至少有一个守护进程可以重新启动套接字服务器)。您可能需要一个 VPS,没有多少共享主机帐户会允许这样做。不确定云,那里的虚拟机可能是您需要的。 是的,我需要部署我的项目并尝试使用 heroku。 不可能使用 heroku 和 PHP(但可能使用其他语言) -help.heroku.com/8R7OO0ZV/… 。 (P.s. 事先对 Google 来说可能是个好主意?) 你知道我可以在哪里运行我的 php 服务器吗?我已经在谷歌上搜索过,但没有找到答案。 就像我在第一条评论中所说的那样,您可能需要租用整个服务器(VPS - 虚拟专用服务器),以便您可以在其上安装和运行任何您喜欢的东西。或者您可以通过一些云托管来做到这一点。我认为大多数便宜的共享主机都不允许,但您必须仔细研究,每个提供商可能会提供略有不同的东西。 【参考方案1】:

本地主机:812

您需要添加防火墙条目以允许您的监听端口:812。

Linux 是 sudo ufw 允许 812

移除监听端口 sudo ufw 删除允许 812

检查您的系统以确保没有其他应用程序正在使用该端口 sudo netstat -tunlp

VPS 将允许您打开端口并安装所需的任何应用程序,它们的起步价低至每月几美元。

【讨论】:

以上是关于如何使 PHP 服务器 websocket 在域上工作?的主要内容,如果未能解决你的问题,请参考以下文章

在域上运行 socket.io

地理插件 API 有时无法在域上运行

使用 C# 在域上保留具有快照的虚拟机

NextJS 无法在域上禁用重定向

在域上上传后,MySql 无法识别某些表列

在域上创建 JavaScript cookie 并跨子域读取它