在配置您的服务器时,Forge 会配置 FPM,以便可以在不使用服务器的“sudo”密码的情况下重启它。为此,您应该发出以下命令。当然,您应该调整 PHP 版本以匹配安装在您的机器上的 PHP 版本
( 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 密码。
如果您的服务器由 DigitalOcean 管理,以下步骤将帮助您使用 DigitalOcean 仪表板重置 forge
用户的 sudo 密码。
首先,在 DigitalOcean 仪表板上,点击服务器名称。然后,在“访问”选项卡中,点击“重置 root 密码”。通常,此操作会重启服务器并将新的 root
用户的 sudo 密码发送到您 DigitalOcean 帐户关联的电子邮件地址。
接下来,仍然在“访问”选项卡中,点击“启动 Droplet 控制台”以以 root
用户身份访问服务器终端。在此步骤中,系统会要求您重新定义 root
用户的 sudo 密码。
最后,以 root
用户身份执行 passwd forge
终端命令以重新定义 forge
用户的 sudo 密码。
Forge 在配置新服务器时会安装最新版本的 Composer。但是,随着服务器使用时间的推移,您可能希望升级已安装的 Composer 版本。您可以使用以下命令进行升级
composer self-update --2
这将指示 Composer 自行更新,并专门选择版本 2。如果您的应用程序与 Composer 2 不兼容,您可以随时回滚到 Composer 1
composer self-update --1
更新服务器的 Cron 作业
服务器配置了定期更新 Composer 的计划作业。升级 Composer 后,您应该通过服务器的“计划作业”选项卡删除并重新创建现有作业。
Forge 在配置新服务器时会安装最新版本的 Nginx。但是,随着服务器使用时间的推移,您可能希望升级已安装的 Nginx 版本。您可以使用以下命令进行升级
sudo apt-get install -y --only-upgrade nginx
sudo nginx -v
sudo service nginx restart
Nginx 升级
您应该自行承担风险升级服务器上的 Nginx 版本。升级服务器上安装的 Nginx 版本可能会导致停机或与其他已安装软件冲突。
Forge 在配置新服务器时会安装最新版本的 Node.js。但是,随着服务器使用时间的推移,您可能希望升级 Node.js 版本。
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
Forge 在配置新服务器时会安装最新版本的 npm。但是,您可以使用以下命令升级已安装的 npm 版本。
sudo npm install npm@latest -g
如果您想在服务器上安装最新的 Meilisearch 二进制文件,请按照 官方 Meilisearch 升级指南 进行操作。
在大多数 Forge 服务器上,Meilisearch 二进制文件安装在 /usr/local/bin/meilisearch
,数据库存储在 /var/lib/meilisearch
。
当您达到可创建的 Droplet 数量限制时,DigitalOcean 会返回此错误。您可以联系 DigitalOcean 支持团队,请求他们增加您的 Droplet 限制。一旦他们增加了您的限制,您就可以在 Forge 中创建服务器。
为了确保 Forge 与 AWS 正确配合使用,请查看 这些要求。
服务器可能出现“断开连接”状态的原因有很多。我们建议您在联系支持团队之前检查这些常见解决方案。
/root/.ssh/authorized_keys
和 /home/forge/.ssh/authorized_keys
文件中。此密钥可在服务器 Forge 管理面板的“设置”选项卡中找到。/root/.ssh/authorized_keys
和 /home/forge/.ssh/authorized_keys
文件中删除任何不包含有效公钥的私钥或其他行。如果您仍然遇到连接问题,您还应该验证以下目录和文件的权限和所有权是否正确
# 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 支持共享
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