NGINX Unit

NextCloud§

若要使用 Unit 运行 NextCloud 共享和协作平台

  1. 使用 PHP 语言模块安装 Unit

  2. 安装并配置 NextCloud 的 先决条件

  3. 安装 NextCloud 的 核心文件。在此,我们将其安装在 /path/to/app/;在你的配置中使用真实路径。

    注意

    验证 /path/to/app/config/config.php 中的结果设置;特别是,检查 受信任的域,以确保安装在你的网络中可访问

    'trusted_domains' =>
    array (
      0 => 'localhost',
      1 => '*.example.com',
    ),
    
  4. 运行以下命令,以便 Unit 可以访问 应用程序目录

    # chown -R unit:unit /path/to/app/
    

    注意

    unit:unit 用户组对仅适用于 官方软件包、Docker 映像 和一些 第三方存储库。否则,帐户名称可能有所不同;运行 ps aux | grep unitd 命令以确保。

    有关更多详细信息,包括权限,请参阅 安全检查清单

  5. 接下来,组合 Unit 的 NextCloud 配置(对 shareroot 使用实际值)。以下内容基于 NextCloud 自身的 指南

    {
        "listeners": {
            "*:80": {
                "pass": "routes"
            }
        },
    
        "routes": [
            {
                "match": {
                    "uri": [
                        "/build/*",
                        "/tests/*",
                        "/config/*",
                        "/lib/*",
                        "/3rdparty/*",
                        "/templates/*",
                        "/data/*",
                        "/.*",
                        "/autotest*",
                        "/occ*",
                        "/issue*",
                        "/indie*",
                        "/db_*",
                        "/console*"
                    ]
                },
    
                "action": {
                    "return": 404
                }
            },
            {
                "match": {
                    "uri": [
                        "/core/ajax/update.php*",
                        "/cron.php*",
                        "/index.php*",
                        "/ocm-provider*.php*",
                        "/ocs-provider*.php*",
                        "/ocs/v1.php*",
                        "/ocs/v2.php*",
                        "/public.php*",
                        "/remote.php*",
                        "/status.php*",
                        "/updater*.php*"
                    ]
                },
    
                "action": {
                    "pass": "applications/nextcloud/direct"
                }
            },
            {
                "match": {
                    "uri": "/ocm-provider*"
                },
    
                "action": {
                    "pass": "applications/nextcloud/ocm"
                }
            },
            {
                "match": {
                    "uri": "/ocs-provider*"
                },
    
                "action": {
                    "pass": "applications/nextcloud/ocs"
                }
            },
            {
                "match": {
                    "uri": "/updater*"
                },
    
                "action": {
                    "pass": "applications/nextcloud/updater"
                }
            },
            {
                "action": {
                    "share": "/path/to/app$uri",
                    "fallback": {
                        "pass": "applications/nextcloud/index"
                    }
                }
            }
        ],
    
        "applications": {
            "nextcloud": {
                "type": "php",
                "targets": {
                    "direct": {
                        "root": "/path/to/app/"
                    },
    
                    "index": {
                        "root": "/path/to/app/",
                        "script": "index.php"
                    },
    
                    "ocm": {
                        "root": "/path/to/app/ocm-provider/",
                        "script": "index.php"
                    },
    
                    "ocs": {
                        "root": "/path/to/app/ocs-provider/",
                        "script": "index.php"
                    },
    
                    "updater": {
                        "root": "/path/to/app/nextcloud/updater/",
                        "script": "index.php"
                    }
                }
            }
        }
    }
    

    注意

    pass 目标之间的差异在于它们对 script 设置 的使用

    • direct 目标从 URI 运行 .php 脚本,或者如果 URI 省略了它,则默认为 index.php

    • 其他目标指定 Unit 为目标接收的任何 URI 运行的 script

  6. 上传更新后的配置。假设上述 JSON 已添加到 config.json

    # curl -X PUT --data-binary @config.json --unix-socket \
           /path/to/control.unit.sock https://#/config/
    

    注意

    控制套接字 路径可能有所不同;运行 unitd -h 或参阅 启动和关闭 了解详情。

  7. 调整 Unit 的 max_body_size 选项 以避免大文件上传的潜在问题,例如

    # curl -X PUT -d '{"http":{"max_body_size": 2147483648}}' --unix-socket \
           /path/to/control.unit.sock https://#/config/settings
    

    成功更新后,浏览至 https://#设置 您的 NextCloud 安装

    NextCloud on Unit - Home Screen