logo

食谱

重启 PHP FPM

在配置您的服务器时,Forge 会配置 FPM,以便可以在不使用服务器的“sudo”密码的情况下重启它。为此,您应该发出以下命令。当然,您应该调整 PHP 版本以匹配安装在您的机器上的 PHP 版本

bash
( flock -w 10 9 || exit 1
    echo 'Restarting FPM...'; sudo -S service $FORGE_PHP_FPM reload ) 9>/tmp/fpmlock

重置 forge 用户 Sudo 密码

Forge 不会存储您服务器的 forge 用户 sudo 密码,因此无法为您重置它。要重置 forge 用户 sudo 密码,您需要联系您的服务器提供商,并以 root 用户身份重新获得对服务器的 SSH 访问权限。

连接到服务器后,以 root 用户身份运行 passwd forge 命令以重新定义 forge 用户 sudo 密码。

Digital Ocean

如果您的服务器由 DigitalOcean 管理,以下步骤将帮助您使用 DigitalOcean 仪表板重置 forge 用户的 sudo 密码。

  1. 首先,在 DigitalOcean 仪表板上,点击服务器名称。然后,在“访问”选项卡中,点击“重置 root 密码”。通常,此操作会重启服务器并将新的 root 用户的 sudo 密码发送到您 DigitalOcean 帐户关联的电子邮件地址。

  2. 接下来,仍然在“访问”选项卡中,点击“启动 Droplet 控制台”以以 root 用户身份访问服务器终端。在此步骤中,系统会要求您重新定义 root 用户的 sudo 密码。

  3. 最后,以 root 用户身份执行 passwd forge 终端命令以重新定义 forge 用户的 sudo 密码。

升级 Composer

Forge 在配置新服务器时会安装最新版本的 Composer。但是,随着服务器使用时间的推移,您可能希望升级已安装的 Composer 版本。您可以使用以下命令进行升级

bash
composer self-update --2

这将指示 Composer 自行更新,并专门选择版本 2。如果您的应用程序与 Composer 2 不兼容,您可以随时回滚到 Composer 1

bash
composer self-update --1

更新服务器的 Cron 作业

服务器配置了定期更新 Composer 的计划作业。升级 Composer 后,您应该通过服务器的“计划作业”选项卡删除并重新创建现有作业。

升级 Nginx

Forge 在配置新服务器时会安装最新版本的 Nginx。但是,随着服务器使用时间的推移,您可能希望升级已安装的 Nginx 版本。您可以使用以下命令进行升级

bash
sudo apt-get install -y --only-upgrade nginx
sudo nginx -v
sudo service nginx restart

Nginx 升级

您应该自行承担风险升级服务器上的 Nginx 版本。升级服务器上安装的 Nginx 版本可能会导致停机或与其他已安装软件冲突。

升级 Node.js

Forge 在配置新服务器时会安装最新版本的 Node.js。但是,随着服务器使用时间的推移,您可能希望升级 Node.js 版本。

bash
sudo apt-get update --allow-releaseinfo-change && sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt-get update --allow-releaseinfo-change && sudo apt-get install nodejs -y

Node.js 版本信息

升级 npm

Forge 在配置新服务器时会安装最新版本的 npm。但是,您可以使用以下命令升级已安装的 npm 版本。

bash
sudo npm install npm@latest -g

升级 Meilisearch

如果您想在服务器上安装最新的 Meilisearch 二进制文件,请按照 官方 Meilisearch 升级指南 进行操作。

在大多数 Forge 服务器上,Meilisearch 二进制文件安装在 /usr/local/bin/meilisearch,数据库存储在 /var/lib/meilisearch

DigitalOcean Droplet 限制已超过

当您达到可创建的 Droplet 数量限制时,DigitalOcean 会返回此错误。您可以联系 DigitalOcean 支持团队,请求他们增加您的 Droplet 限制。一旦他们增加了您的限制,您就可以在 Forge 中创建服务器。

AWS 配置的服务器正在消失

为了确保 Forge 与 AWS 正确配合使用,请查看 这些要求

服务器断开连接

服务器可能出现“断开连接”状态的原因有很多。我们建议您在联系支持团队之前检查这些常见解决方案。

  • 通过您的服务器提供商的仪表板验证服务器是否已开启。如果服务器已关闭,您应该使用您的 **提供商的仪表板** 重新启动它。
  • 验证服务器的公网 IP 地址是否已知 Forge(实际 VPS 重启后,公网 IP 地址可能会发生变化)。
  • 验证 Forge 为服务器生成的公钥是否包含在 /root/.ssh/authorized_keys/home/forge/.ssh/authorized_keys 文件中。此密钥可在服务器 Forge 管理面板的“设置”选项卡中找到。
  • 如果您的服务器位于防火墙之后,请确保您已允许 Forge 的 IP 地址访问服务器
  • 如果您从服务器的防火墙规则中删除了端口 22,则需要联系您的服务器提供商并要求他们恢复该规则。删除此规则会阻止 Forge 通过 SSH 访问您的服务器。
  • /root/.ssh/authorized_keys/home/forge/.ssh/authorized_keys 文件中删除任何不包含有效公钥的私钥或其他行。

如果您仍然遇到连接问题,您还应该验证以下目录和文件的权限和所有权是否正确

bash
# Fixes the "root" user (run as root)

chown root:root /root
chown -R root:root /root/.ssh
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys

# Fixes the "forge" user

chown forge:forge /home/forge
chown -R forge:forge /home/forge/.ssh
chmod 700 /home/forge/.ssh
chmod 600 /home/forge/.ssh/authorized_keys

如果在尝试了以上所有解决方案后,Forge 仍然无法连接到您的服务器,但您仍然可以 SSH 到服务器,请以 root 用户身份运行以下命令并将输出与 Forge 支持共享

bash
grep 'sshd' /var/log/auth.log | tail -n 10

Forge 管理

如果 Forge 无法连接到您的服务器,您将无法通过 Forge 仪表板管理它,直到连接恢复。

"太多打开的文件"错误

如果您收到错误消息,指出您的服务器“打开的文件太多”,您可能需要增加操作系统配置的允许在给定时间打开的最大文件描述符数量。如果您的服务器将处理大量传入的 Web 请求,这可能尤其如此。

首先,根据服务器的大小确保“打开的文件”的最大数量配置正确。通常,操作系统允许打开的最大文件数量应约为每 1MB 内存 100 个文件。例如,如果您的服务器有 4GB 内存,则可以安全地将打开文件的最大数量设置为 409600

您可以通过运行 sysctl fs.file-max 命令来确定您的操作系统当前允许一次打开多少个文件。您可以通过在 /etc/sysctl.conf 中添加或修改以下行来配置现有设置

fs.file-max = LIMIT_HERE

虽然上面的说明设置了系统范围的“打开的文件”的最大数量,但您还需要通过编辑 /etc/security/limits.conf 文件并添加以下行来为每个服务器用户指定这些限制

root soft nofile LIMIT_HERE
root hard nofile LIMIT_HERE
forge soft nofile LIMIT_HERE
forge hard nofile LIMIT_HERE

当然,如果您的服务器由于使用“站点隔离”而包含其他用户,则还需要将这些用户添加到/etc/security/limits.conf文件中。

isolated-user soft nofile LIMIT_HERE
isolated-user hard nofile LIMIT_HERE

此外,如果“打开文件过多”错误是由 Nginx 进程触发的(在规模较大的负载均衡器上很常见),您还需要将nginx用户添加到/etc/security/limits.conf文件中。

nginx soft nofile LIMIT_HERE
nginx hard nofile LIMIT_HERE

并将以下指令添加到服务器的/etc/nginx/nginx.conf文件中。

worker_rlimit_nofile LIMIT_HERE;

在将此指令添加到您的 Nginx 配置文件后,您应该重新启动 Nginx 服务。

service nginx restart