sammyjo20/ssh-php

该软件包最新版本(v1.0.6)没有可用的许可证信息。

构建PHP SSH应用的超简单框架!🔥

安装: 37

依赖项: 0

建议者: 0

安全: 0

星标: 217

关注者: 4

分支: 10

开放问题: 0

类型:项目

v1.0.6 2024-07-30 21:29 UTC

README

🤫 SSH PHP !

构建PHP SSH应用的超简单起点!🔥

Screenshot 2024-07-26 at 18 09 49

这是什么壳?

我知道吗?我刚刚运行了 ssh localhost,现在我的终端中运行了一个完整的PHP应用!什么!我也是。当我第一次看到Joe Tannenbaum 的推文,他展示了他的出色 ssh cli.lab.joe.codes,我想我必须自己尝试。我正在秘密地进行一个项目,但在我的研究中,我设法调整了他的指南,以便使用Docker来运行charmbracelet/wish

这个项目主要是用于构建TUIs,然而它也可以运行任何PHP脚本,所以你可以构建酷炫的表单、简历或你想要的一切!

为什么是Docker?

嗯,我不想在我的服务器上玩弄SSH。另外,如果我要让公众 SSH登录我的服务器,我想确保它是受保护的。使用Docker容器,它甚至比直接SSH登录服务器更受保护。

实时演示

想亲自看看吗?我已经将这个存储库部署到了一个仅运行Docker的Hetzner Cloud服务器上。

ssh yeehaw.dev

要求

  • PHP 8.3(本地安装)
  • Docker

该项目处于早期访问阶段,我对Docker相当新手,所以如果你认为这可以改进,请考虑贡献!请在问题/讨论中分享你的想法。谢谢!

安装

要开始,运行以下Composer create-project 命令。请确保将 ssh-app-name 重命名为你的项目名称。

composer create-project sammyjo20/ssh-php ssh-app-name

运行命令后,进入它刚刚创建的目录。

入门

你将拥有以下目录结构。以下是所有重要文件的说明。

.
├── .github            # Contains workflows for running tests, PHP Stan and Code Style Fixers.
├── src                # Your application's source files
├── tests              # Automated tests (PEST)
├── docker-compose.yml # This file will be used to deploy your application to production.
└── Dockerfile         # This file allows you to customise the production image and add extra PHP extensions.

你可以选择保留测试和 .github 文件夹。如果你不使用/不需要代码风格或PHP stan,可以通过从 composer.json 中删除它们并运行 composer update 来卸载它们。

构建你的SSH TUI(终端用户界面)

现在你有了构建SSH TUI的绝佳基础,去构建一些酷炫的东西吧。

src 目录中,你可以找到一个 index.php 文件。这个文件是SSH应用的入口点。你可以用这个文件做任何你想做的事。这个模板预装了 laravel/promptsjoetannenbaum/chewie,以展示如何使用它们。

你也可以考虑安装 nunomaduro/termwind,这是一个很棒的工具,它让你可以在终端中写HTML。

以下是一些入门资源

在开发过程中运行脚本

在开发过程中,建议使用以下命令运行脚本

php ./src/index.php 

运行SSH服务器

显然,你肯定想亲眼看到SSH服务器!你可以通过运行以下命令来实现。

composer run-dev

这将在你的终端窗口中运行SSH服务器。在另一个窗口中,你应该能够运行以下命令

ssh localhost -p 2201

安装额外的PHP扩展

你可能需要添加额外的扩展,以便你的服务器能在生产环境中运行。你可以通过修改根目录下的Dockerfile来实现。基础镜像运行Alpine Linux,包含一些常见的PHP扩展,但如果你需要的话,可以在这里添加更多。

RUN apk add php-redis

部署到生产环境

要求

你的服务器必须安装了Docker。

配置一切

首先,将docker-compose.yml文件复制为docker-compose.prod.yml,并打开它。在这里,将端口从2201:22更改为22:22。这意味着在生产环境中,你的应用程序将在常规SSH端口上运行。你可能还需要定义要构建的平台。

更改服务器上的默认OpenSSH端口

接下来,我们需要将服务器上的OpenSSH端口更改为除了22之外的其他值,因为我们的应用程序将在这个端口上运行。在你的服务器上运行

sudo nano /etc/ssh/sshd_config

查找以Port开头的行。它可能被注释掉了,请取消注释并更改为你想要的任何数字(并且可用),例如2201。然后使用以下命令重新启动服务

sudo service ssh restart

现在,你需要更新防火墙规则,以确保端口没有被阻止。根据你使用的防火墙,这可能对你来说有所不同。对于ufw

sudo ufw allow 2201/tcp

注意

重要:在从服务器注销或关闭终端标签页之前,打开一个新的终端并确保你可以通过SSH访问你的服务器。如果不起作用,你将被锁定在服务器之外,所以保留在原始标签页上的登录状态将允许你解决任何问题。

下次你需要SSH连接到你的服务器时,你可以指定自定义端口。

ssh user@your-server -p 2201

如果你在这个服务器上使用Laravel Forge,请确保你在设置 > 服务器设置 > SSH端口下更改Forge连接到服务器的端口。

将项目克隆到服务器上

确保你提交了docker-compose.prod.yml文件,然后将整个项目部署到服务器上。

部署时间!

现在你可以在服务器上运行以下命令。运行以下./deploy.sh脚本。

如果你是第一次运行上述部署脚本,你可能需要使其可执行。

chmod u+x ./deploy.sh
./deploy.sh

如果你使用Laravel Forge,你可以在部署脚本中添加此命令,以自动更新SSH应用程序。

此命令运行后退出是完全正常的。如果你想检查Docker容器是否正在运行,你可以运行以下命令

docker ps

这就是全部了!✨

现在你可以通过SSH连接到你的服务器ssh your-server-ip,你应该能看到你的精彩PHP应用程序!你甚至可以将DNS指向服务器IP,并使用它。

ssh your-server-ip

官方Docker仓库

本项目使用sammyjo20/ssh-php Dockerfile。你可以通过以下链接查看此Dockerfile并进行贡献。

https://github.com/sammyjo20/ssh-php-docker

支持

如果你觉得这个项目很有用,请考虑一次性或定期赞助我。这有助于支付我维护和保持像这些项目一样活跃的时间。你可以在GitHub上通过点击这里赞助我。

鸣谢

安全

如果您发现任何安全问题,请发送电子邮件至29132017+Sammyjo20@users.noreply.github.com