yggverse/next

支持不同协议的 PHP 8 服务器

安装: 0

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

类型:项目

dev-main 2024-05-09 11:12 UTC

This package is auto-updated.

Last update: 2024-09-09 11:53:02 UTC


README

支持不同协议的 PHP 8 服务器

基于 Ratchet 异步套接字库

功能

  • 异步套接字
  • 多主机
  • 多协议
  • 多模式
    • 静态文件托管
      • 目录请求上的文件系统导航
        • 可选的 gemfeed 文件修改日期
        • 支持 Unicode 文件名
        • 过滤隐藏上下文(以点开头)
        • 排序顺序设置(目前为按目录顺序升序)
      • 自定义索引文件名
      • 自定义失败模板
      • 自定义数据目录位置
    • KevaCoin 存储浏览器
    • 自定义应用
    • 反向代理
    • 流服务器
  • 连接事件日志
  • 通过 CLI 参数进行简单灵活的服务器配置

安装

环境

apt install git composer php-fpm php-mbstring
  • 对于 kevacoin 服务器 mode,还需要 php-curl 扩展

稳定

项目正在开发中,使用 仓库 版本!

仓库

  • git clone https://github.com/YGGverse/next.git
  • cd next - 导航到项目目录
  • composer update - 获取最新依赖项

启动

开始

通过提供不同的 typehostporttypemode 和其他参数创建所需数量的服务器!

  • 出于安全原因,文件服务器阻止对隐藏文件(以点开头)的任何访问
  • 此外,客户端无法访问 root 路径之外的数据,该路径在服务器启动时定义

启动示例

php src/server.php host=127.0.0.1 port=1900 type=nex mode=fs root=/target/dir
  • hostport - 可选参数,请参阅 参数文档 以获取详细信息!

参数

由服务器协议 type 自动定义的可选参数

一些参数也定义在 default.json 中 - 在不理解的情况下不要更改它,而是使用 CLI

CLI

key=value 格式提供参数,用空格分隔

依赖于父参数定义的子节点,在其他组合中将被跳过!

以下列表解释了 key 依赖关系及其 value 选项(以 = 开头)

  • type - 必需的,服务器协议,还自动定义默认 port,支持的选项
    • = nex - NEX 协议
      • mode - 可选的,服务器实现变体,默认为 fs(文件系统)
        • = fs - 为 root 位置提供静态文件托管
          • root - 绝对路径 到公共目录,浏览器导航从这里开始
          • file - 文件名 服务器尝试在请求的目录路径上打开,默认禁用
          • list - 在请求的目录中显示列表(在索引 file 未找到时),默认启用
          • date - 在目录列表中显示文件修改日期(作为 gemfeed),默认禁用
        • = kevacoin - 通过 RPC 连接到钱包的 KevaCoin 存储浏览器(请参阅 kevacoin.conf
          • rpcscheme - 必需的,例如 http
          • rpcport - 必需,默认值为 9992
          • rpchost - 必需,远程或 localhost
          • rpcuser - 必需
          • rpcpassword - 必需
          • namespace - 必需,远程或本地数据列表命名空间(以 N 开头)
  • host - 可选,默认为 127.0.0.1,例如 localhost 连接仅限
  • port - 可选,默认值取决于所选的服务器 type,例如 1900 用于 nex1965 用于 gemini
  • fail - 可选,失败模板的 绝对路径(例如 /path/to/error.gmi),默认禁用
  • dump - 可选,启用或禁用服务器调试功能(默认启用)

自动启动

systemd

以下示例表示您已将 next 服务器安装到 next 用户的家目录中(useradd -m next

# /etc/systemd/system/next.service

[Unit]
After=network.target

[Service]
Type=simple
User=next
Group=next
ExecStart=/usr/bin/php /home/next/next/src/server.php type=nex mode=fs root=/home/next/public
StandardOutput=file:/home/next/debug.log
StandardError=file:/home/next/error.log
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • systemctl daemon-reload - 重新加载 systemd 配置
  • systemctl enable next - 系统启动时启用服务
  • systemctl start next - 启动服务器