手册

安装

安装

v1.0.0+

GeckoFlag 是安装在您自己服务器上的自托管软件;专用安装程序会引导您完成整个过程,让任何人都能轻松完成配置。

开始之前

  • 确认您的服务器满足系统要求。无需 Composer:发布包已包含其依赖项(vendor 文件夹),因此在无法运行 Composer 的环境中同样可以使用。
  • 准备好数据库连接信息:一个新的数据库,或一个已有的空数据库。我们不建议与其他应用共用同一个数据库。
  • HTTPS 并非严格必需,但由于 GeckoFlag 会处理登录凭据和个人数据,我们强烈建议使用 HTTPS 运行。
  • 上传文件后,请立即完成安装。在安装完成之前,任何知道该 URL 的人都可以打开安装程序。
  • 如果您使用 Nginx,请事先完成下方“使用 Nginx 时”中的设置。

安装步骤

  1. 1通过 FTP/SFTP 或主机控制面板将 GeckoFlag 文件上传到您的服务器并解压。文件管理器,显示服务器上已解压的 GeckoFlag 文件和文件夹
  2. 2在浏览器中打开安装程序。它会检查您的服务器环境(PHP 版本、所需扩展和文件夹权限),并显示检查清单。GeckoFlag Setup,第 1 步:Environment Check,显示 PHP 版本、所需扩展和文件夹权限均为绿色
  3. 3输入数据库连接信息(主机、端口、数据库名称、用户名和密码),然后继续。GeckoFlag Setup,第 2 步:Database Connection,包含数据库的主机、端口、名称、用户名和密码字段
  4. 4点击 运行 初始化数据库;这会创建 GeckoFlag 所需的数据表。GeckoFlag Setup,第 3 步:Initialize the Database,包含 Run 按钮
  5. 5使用姓名、电子邮箱和密码创建您的管理员账号。GeckoFlag Setup,第 4 步:Create Administrator Account,包含姓名、邮箱和密码字段
  6. 6输入您的许可证密钥进行验证。GeckoFlag Setup,第 5 步:License Verification,包含许可证密钥字段
  7. 7许可证验证通过后即大功告成:使用新的管理员账号登录,开始配置您的项目。GeckoFlag Setup,第 5 步:License Verification,确认许可证密钥已成功验证

关于主机的说明

已确认 GeckoFlag 可在许多常见的共享主机服务商上运行。根据 PHP 配置(如 upload_max_filesize),部分服务商上的文件上传功能可能会受到限制。

使用 Nginx 时

在 Apache 上,GeckoFlag 附带的 .htaccess 会自动拒绝对配置文件、日志等的直接访问。Nginx 不使用 .htaccess,因此请将以下内容添加到服务器配置中。如果不添加,配置文件和上传的文件可能会被外部看到。

在组合使用 Nginx 和 Apache 的共享主机上(由 Apache 处理 Nginx 所接收访问的配置),.htaccess 是有效的,因此无需此设置。能否使用 .htaccess,请查阅您所用主机服务商的手册。

  • 请将公开文件夹(文档根目录)设为 GeckoFlag 文件夹内的 webroot 文件夹,而不是 GeckoFlag 文件夹本身。
  • 请根据您的环境修改 server_name(域名)、root(放置 GeckoFlag 的位置)和 fastcgi_pass(PHP-FPM 的连接地址)。
  • 请按照您所用环境的配置方法添加 HTTPS 设置(listen 443 ssl 及证书的指定)。
server {
    listen 80;
    server_name pm.example.com;

    # 公开文件夹(文档根目录)为 GeckoFlag 的 webroot 文件夹
    root /var/www/geckoflag/webroot;
    index index.php;

    # 不显示文件夹内容列表
    autoindex off;

    # 以便能够上传更新和备份的 ZIP 文件
    # (Nginx 的默认值为 1MB)。请将 PHP 的 upload_max_filesize 和
    # post_max_size 也设为相同或更大的值
    client_max_body_size 100m;

    # 不提供隐藏文件(.htaccess、.git 等)
    location ~ /\.(?!well-known/) {
        deny all;
    }

    # 上传图片的文件夹只提供图片
    location ~ ^/img/(avatars|project_thumbnails|branding)/ {
        location ~* \.(jpe?g|jfif|png|gif|webp|ico)$ {
            add_header X-Content-Type-Options "nosniff" always;
            try_files $uri =404;
        }
        # SVG 图片仅用于显示(不允许执行脚本)
        location ~* \.svg$ {
            add_header X-Content-Type-Options "nosniff" always;
            add_header Content-Security-Policy "default-src 'none'; img-src data:; style-src 'unsafe-inline'; sandbox" always;
            try_files $uri =404;
        }
        return 403;
    }

    # 不直接提供 files 文件夹
    location ^~ /files/ {
        return 404;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # 仅将 index.php 作为 PHP 执行
    location = /index.php {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
    location ~ \.php$ {
        return 404;
    }
}

修改配置后,请使用 nginx -t 检查语法,然后重新加载 Nginx。

通过 CDN 或反向代理(如 Cloudflare)访问时

GeckoFlag 使用服务器接收到的连接来源 IP 地址来限制登录失败次数,并进行访问限制(IP 地址)。通过 CDN 或反向代理访问时,所有用户看起来都是从代理的 IP 地址访问,因此会出现以下情况。

  • 当某人多次登录失败后,其他用户也可能在一段时间内无法登录。
  • 访问限制(IP 地址)将无法正常工作。

在这种配置下,请在 Web 服务器端进行接收真实连接来源 IP 地址的设置(Apache 的 mod_remoteip、Nginx 的 real_ip 模块;如使用 Cloudflare,则需登记该公司公布的 IP 地址列表等)。有关设置方法,请查阅您所用主机服务商或 CDN 的手册。