如何在 CPanel/External 虚拟主机中初始化 PHP websocket 服务?
How to initialize a PHP websocket service in CPanel/External web host?
我开发了一个网络应用程序,可以实时显示不同用户执行的某些操作的信息。为此,我在本地环境 (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 中获得相同的结果,或者是否有其他方法?
共享托管环境(即具有 VirtualHost 配置的 Apache、PHP、MySQL 和 CPanel 界面)不太可能支持您的 websocket 应用程序。
要使 websocket 正常工作,您需要:
- 有一个专用于 websocket 入站连接的端口;或
- 有一个 HTTP/HTTPS 服务器知道何时升级连接和代理传递到您的 websocket 应用程序。
要运行你自己的websocket服务,你应该考虑使用虚拟专用服务器服务,例如Amazon EC2,DigitalOcean VPS。
为此,您需要拥有对所涉及的 (Linux) 服务器的 CLI(命令行界面)访问权限。假设您有这样的访问权限,运行宁 WS 服务看起来像
./websocket_daemon.php
小脚本假定您位于适当的文件夹中。但是,在到达那里之前,您需要解决一些问题:
第 1 步:在您的计算机上支持 SSH
您需要确保您的 OS 支持 SSH。您的 OS 似乎是 Windows,因此您需要安装 Putty 或 Git Bash。了解这些技术
步骤 2 生成 SSH 密钥
在您的 CPanel 中,您需要生成 SSH 密钥:
- 点击管理 SSH 密钥
- 点击生成新密钥
- 使用您喜欢的设置来生成密钥,别担心,您可以随时删除 SSH 密钥,如果您发现您更喜欢以不同的方式生成它们,则可以重新创建它们
在此处阅读更多内容:https://docs.cpanel.net/cpanel/security/ssh-access/
SSH密钥是复合密钥,即由一个私钥和一个public密钥组成。您可以与任何人共享您的 public 密钥,但永远不要将您的私钥发送给任何人。它应该在您的计算机上并且可能保存到备份中。在此处阅读有关 SSH 密钥的更多信息:https://sectigo.com/resource-library/what-is-an-ssh-key
第 3 步:确保您的计算机使用您为 CPanel 生成的 SSH 密钥
您需要告诉您的 OS 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
我开发了一个网络应用程序,可以实时显示不同用户执行的某些操作的信息。为此,我在本地环境 (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 中获得相同的结果,或者是否有其他方法?
共享托管环境(即具有 VirtualHost 配置的 Apache、PHP、MySQL 和 CPanel 界面)不太可能支持您的 websocket 应用程序。
要使 websocket 正常工作,您需要:
- 有一个专用于 websocket 入站连接的端口;或
- 有一个 HTTP/HTTPS 服务器知道何时升级连接和代理传递到您的 websocket 应用程序。
要运行你自己的websocket服务,你应该考虑使用虚拟专用服务器服务,例如Amazon EC2,DigitalOcean VPS。
为此,您需要拥有对所涉及的 (Linux) 服务器的 CLI(命令行界面)访问权限。假设您有这样的访问权限,运行宁 WS 服务看起来像
./websocket_daemon.php
小脚本假定您位于适当的文件夹中。但是,在到达那里之前,您需要解决一些问题:
第 1 步:在您的计算机上支持 SSH
您需要确保您的 OS 支持 SSH。您的 OS 似乎是 Windows,因此您需要安装 Putty 或 Git Bash。了解这些技术
步骤 2 生成 SSH 密钥
在您的 CPanel 中,您需要生成 SSH 密钥:
- 点击管理 SSH 密钥
- 点击生成新密钥
- 使用您喜欢的设置来生成密钥,别担心,您可以随时删除 SSH 密钥,如果您发现您更喜欢以不同的方式生成它们,则可以重新创建它们
在此处阅读更多内容:https://docs.cpanel.net/cpanel/security/ssh-access/
SSH密钥是复合密钥,即由一个私钥和一个public密钥组成。您可以与任何人共享您的 public 密钥,但永远不要将您的私钥发送给任何人。它应该在您的计算机上并且可能保存到备份中。在此处阅读有关 SSH 密钥的更多信息:https://sectigo.com/resource-library/what-is-an-ssh-key
第 3 步:确保您的计算机使用您为 CPanel 生成的 SSH 密钥
您需要告诉您的 OS 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