Mastodon
  • 什么是 Mastodon?
  • 使用 Mastodon
    • 注册帐户
    • 设置你的个人资料
    • 在你的账户发布内容
    • 使用网络功能
    • 处理不想看到的内容
    • 推广你和他人
    • 进行偏好设置
    • 更多设置
    • 在站点外使用 Mastodon
    • 迁移或离开账户
    • 运行你自己的站点
  • 运营 Mastodon
    • 准备你的服务器
    • 从源代码安装
    • 配置你的环境
    • 安装可选功能
      • 对象存储
      • 洋葱服务
      • 验证码
      • 单点登录
    • 配置全文搜索
    • 设置你的新实例
    • 使用管理 CLI
    • 升级到新版本
    • 备份你的服务器
    • 迁移到新机器
    • 扩大你的站点规模
    • 审核操作
    • 故障排除
      • 数据库索引损坏
    • 用户组
  • 开发 Mastodon 应用
    • API 入门指南
    • 使用公开数据
    • 获取客户端应用访问权限
    • 使用帐户登录
    • 库与实现
  • 向 Mastodon 项目做贡献
    • 技术概览
    • 设置开发环境
    • 代码结构
    • 路由
    • 漏洞赏金与责任披露
  • 遵循的标准
    • ActivityPub
    • WebFinger
    • 安全性
    • Microformats
    • OAuth
    • Bearcaps
  • REST API
    • Datetime 格式
    • 指南与最佳实践
    • OAuth 令牌
    • OAuth 作用域
    • 速率限制
  • API 方法
    • apps
      • oauth
      • emails
    • accounts
      • bookmarks
      • favourites
      • mutes
      • blocks
      • domain_blocks
      • filters
      • reports
      • follow_requests
      • endorsements
      • featured_tags
      • preferences
      • followed_tags
      • suggestions
      • tags
    • profile
    • statuses
      • media
      • polls
      • scheduled_statuses
    • timelines
      • conversations
      • lists
      • markers
      • streaming
    • grouped notifications
    • notifications
      • push
    • search
    • instance
      • trends
      • directory
      • custom_emojis
      • announcements
    • admin
      • accounts
      • canonical_email_blocks
      • dimensions
      • domain_allows
      • domain_blocks
      • email_domain_blocks
      • ip_blocks
      • measures
      • reports
      • retention
      • trends
    • proofs
    • oembed
  • API 实体
    • Account
    • AccountWarning
    • Admin::Account
    • Admin::CanonicalEmailBlock
    • Admin::Cohort
    • Admin::Dimension
    • Admin::DomainAllow
    • Admin::DomainBlock
    • Admin::EmailDomainBlock
    • Admin::Ip
    • Admin::IpBlock
    • Admin::Measure
    • Admin::Report
    • Announcement
    • Appeal
    • Application
    • Context
    • Conversation
    • CustomEmoji
    • DomainBlock
    • Error
    • ExtendedDescription
    • FamiliarFollowers
    • FeaturedTag
    • Filter
    • FilterKeyword
    • FilterResult
    • FilterStatus
    • IdentityProof
    • Instance
    • List
    • Marker
    • MediaAttachment
    • Notification
    • NotificationPolicy
    • NotificationRequest
    • Poll
    • Preferences
    • PreviewCard
    • PreviewCardAuthor
    • PrivacyPolicy
    • Reaction
    • Relationship
    • RelationshipSeveranceEvent
    • Report
    • Role
    • Rule
    • ScheduledStatus
    • Search
    • Status
    • StatusEdit
    • StatusSource
    • Suggestion
    • Tag
    • TermsOfService
    • Token
    • Translation
    • V1::Filter
    • V1::Instance
    • V1::NotificationPolicy
    • WebPushSubscription

故障排除

    • 我看到一个错误页面,上面说出了问题。我怎样才能找出是什么问题?
    • 我在日志中看不到太多内容。如何启用额外的日志/调试信息?
    • 升级到较新版本后,某些页面看起来很奇怪,例如出现了没有任何样式的元素。为什么?
    • 升级到较新版本后,一些请求失败,日志显示关于缺少列或表的错误消息。为什么?
    • 我尝试运行 tootctl 或 rake/rails 命令,但出现关于未初始化常量的错误。怎么回事?
    • 在执行 RAILS_ENV=production bundle exec rails assets:precompile 时遇到编译错误,但没有提供更多信息。如何修复?
    • 我收到这个错误:Read-only file system @ dir_s_mkdir。为什么?

我看到一个错误页面,上面说出了问题。我怎样才能找出是什么问题?

所有带有堆栈跟踪的错误消息都会写入系统日志。当使用 systemd 时,可以通过journalctl -u mastodon-web(请将 mastodon-web 替换为实际的正确服务名称)浏览每个 systemd 服务的日志。当使用 Docker 时,可以通过类似的命令 docker logs mastodon_web_1(请将 mastodon_web_1 替换为实际的正确容器名称)查看日志。

服务器端错误的具体详情_永远不会_向公众显示,因为它们可能会揭示你的内部设置情况,并为攻击者提供如何入侵或更有效地滥用系统的线索。

来自 Mastodon 网络服务器的每个响应都带有一个包含唯一请求 ID 的标头,这也将反映在日志中。通过检查错误页面的标头信息,你可以轻松在日志中找到相应的堆栈跟踪。

我在日志中看不到太多内容。如何启用额外的日志/调试信息?

默认情况下,你的日志将显示 info 级别的日志记录。要查看更多调试消息,你可以修改 .env.production 文件以提高相关服务的级别:

  • **Web/Sidekiq:**将 RAILS_LOG_LEVEL 的值设为 debug,然后重启你正在尝试排除故障的服务。
  • **Streaming:**将 LOG_LEVEL 的值设为 silly,然后重启你正在尝试排除故障的服务。

有关这些选项的其他日志级别的更多信息,可以在配置环境页面找到。

debug 或 silly 级别可能非常详细,因此在完成故障排除后,你应该注意将日志级别改回较低级别。

升级到较新版本后,某些页面看起来很奇怪,例如出现了没有任何样式的元素。为什么?

请检查你是否在升级后运行了 RAILS_ENV=production bin/rails assets:precompile,并重启了 Mastodon 的 web 进程,因为它似乎正在提供过时的样式表和脚本。也可能是由于内存不足导致预编译失败,这是因为遗憾的是 webpack 非常消耗内存。如果是这种情况,请确保你分配了一些交换内存。或者,可以在不同的机器上预编译资源,然后复制 public/packs 目录。

升级到较新版本后,一些请求失败,日志显示关于缺少列或表的错误消息。为什么?

检查你是否在升级后运行了 RAILS_ENV=production bin/rails db:migrate,因为看起来 Mastodon 的代码正在访问较新或较旧的数据库架构。如果你使用 PgBouncer,请确保此命令直接连接到 PostgreSQL,因为 PgBouncer 不支持迁移中使用的表锁定类型。

我尝试运行 tootctl 或 rake/rails 命令,但出现关于未初始化常量的错误。怎么回事?

检查你是否在命令前指定了正确的环境变量 RAILS_ENV=production。默认情况下,环境被假定为开发环境,因此代码尝试加载与开发相关的gems。然而,在生产环境中,我们避免安装这些gems,这就是错误的来源。

在执行 RAILS_ENV=production bundle exec rails assets:precompile 时遇到编译错误,但没有提供更多信息。如何修复?

这通常是因为你的服务器在编译资源时内存不足。使用交换文件或增加交换空间以增加内存容量。运行 RAILS_ENV=production bundle exec rake tmp:cache:clear 清除缓存,然后执行 RAILS_ENV=production bundle exec rails assets:precompile 重新编译。确保在编译错误后清除缓存,否则会显示"一切正常"但资源保持不变。

我收到这个错误:Read-only file system @ dir_s_mkdir。为什么?

默认情况下,Mastodon使用 systemd 的沙箱功能,这种方式不允许在 /home/mastodon 以外的位置执行写入。如果 Mastodon 安装在其他位置,你可能需要允许 mastodon-sidekiq 和 mastodon-web 写入自定义目录:

  1. 在文件 /etc/systemd/system/mastodon-sidekiq.service 和 /etc/systemd/system/mastodon-web.service 中添加参数 ReadWritePaths。例如 - ReadWritePaths=/example/mastodon/live。
  2. 执行 systemctl stop mastodon-sidekiq mastodon-web
  3. 执行 systemctl daemon-reload
  4. 执行 systemctl start mastodon-sidekiq mastodon-web

翻译状态: 本文是英文页面 Troubleshooting errors 的翻译,最后翻译时间:2025-04-21,点击这里可以查看翻译后页面的改动。

最后更新于 April 21, 2025 · 改进此页面
也可在此找到: English

赞助商

Dotcom-Monitor LoadView Stephen Tures Swayable SponsorMotion

加入Mastodon · 博客 ·

查看源代码 · CC BY-SA 4.0 · 版权信息