RhodeCode 4.27.1 配置参数详解

逐段解析 RhodeCode 4.27.1 双实例配置文件(rhodecode.ini 与 vcsserver.ini):gunicorn 服务器段、数据库连接、dogpile 缓存与 beaker 会话、Celery 任务队列、VCS 接线与 SSH/SVN 参数、日志配置;附三组「改参数→重启→验证」实测闭环(监听端口/gzip 压缩/界面语言)与常见配置问题排查。

RhodeCode版本控制Python 编程Mercurial2026/10/28

RhodeCode 4.27.1 配置参数详解

目标:逐段解析 RhodeCode 4.27.1 的配置文件体系——Community 实例的 rhodecode.ini 与 VCSServer 实例的 vcsserver.ini,覆盖 gunicorn 应用服务器、数据库连接、缓存与会话、Celery 任务队列、VCS 接线、SSH/SVN、日志等全部常用参数段;并给出三组「修改参数 → 重启实例 → 验证生效」的实测闭环,讲清每个参数改在哪里、怎么生效、如何验证。安装过程与环境准备见 《RhodeCode 4.27.1 Ubuntu 22.04 安装指南》。

一、环境信息

本篇参数与实测基于以下环境(与安装篇同一台实验机):

项值说明
操作系统Ubuntu 22.04.5 LTS(x86_64)与安装篇一致
RhodeCode Community4.27.1(build20221012_1600)实例名 community-1
RhodeCode VCSServer4.27.1(build20221012_1600)实例名 vcsserver-1
rccontrol1.24.4实例与进程管理工具
应用服务器gunicorn/19.9.0参数由 ini 文件下发
数据库PostgreSQL 14.24库名/用户名 rhodecode
Community 端口10020(0.0.0.0)实测验证后恢复
VCSServer 端口10010(127.0.0.1)仅本机接线

参数溯源说明:本篇所有参数表均取自实验机上由安装器生成的两份配置文件原文(/root/.rccontrol/community-1/rhodecode.ini,818 行;/root/.rccontrol/vcsserver-1/vcsserver.ini,199 行),未做美化;「本机值」列即文件中的实际生效值。配置文件选型与版本背景见 《RhodeCode 介绍与选型指南》。

二、配置文件体系总览

2.1 四个配置文件的分工

rccontrol 安装完成后,配置分散在四个 ini 文件中,层级如下:

文件路径职责谁来改
rhodecode.ini/root/.rccontrol/community-1/rhodecode.iniCommunity 全部应用参数 + gunicorn 参数 + 日志管理员,改后 restart
vcsserver.ini/root/.rccontrol/vcsserver-1/vcsserver.iniVCSServer 应用参数 + gunicorn 参数 + 日志管理员,改后 restart
supervisord.ini/root/.rccontrol/supervisor/supervisord.ini进程守护配置,include 各实例进程组不建议手改,由 rccontrol 管理
gunicorn_conf.py各实例目录下gunicorn 钩子扩展(内存监控、日志格式)文件头明确警告:由安装器管理,不应修改

⚠️ 注意:gunicorn_conf.py 文件头原文为 "This file is managed by the installer. It shouldn't be modified. If you still wish to make changed create a empty file called gunicorn_conf.py.keep In the same location so installer will not override it on upgrades."——即升级会被覆盖,确需定制时在同目录放一个空的 gunicorn_conf.py.keep 文件阻止覆盖。

2.2 两个特殊变量

  • %(here)s:ini 文件所在目录的绝对路径。例如 cache_dir = %(here)s/data 在 community-1 上展开为 /root/.rccontrol/community-1/data。迁移实例目录时用相对写法可以少改配置。
  • {ENV_变量名}:app:main 段支持环境变量注入,原文注释示例:sqlalchemy.db1.url = {ENV_RC_DB_URL}——密码不出现在文件里的做法。

2.3 生效机制

所有 [server:main] 与 [app:main] 参数在 gunicorn 启动时读取一次,运行期不热加载;改动后必须重启实例:

# 改 community-1 的参数后
/root/.rccontrol-profile/bin/rccontrol restart community-1
# 改 vcsserver-1 的参数后
/root/.rccontrol-profile/bin/rccontrol restart vcsserver-1

重启动作的逐命令实测与回显见 《RhodeCode 4.27.1 常用 CLI 与运维命令详解》;本篇第十章给出三组「改参数 → restart → 验证」的完整闭环。

三、[server:main]:gunicorn 应用服务器参数

两个实例的 [server:main] 段结构相同,差异在 worker 模型。以下参数对两个实例都有效,表内「本机值」列同时给出 community-1 / vcsserver-1:

参数本机值(community-1 / vcsserver-1)语义与调优建议
host0.0.0.0 / 127.0.0.1监听地址。VCSServer 必须保持 127.0.0.1(仅本机接线);Community 直接对外时 0.0.0.0,走反代时可收回 127.0.0.1
port10020 / 10010监听端口。第十章实测改 10021 一次性生效
useegg:gunicorn#main固定值,勿改
workers6 / 8worker 进程数。官方推荐 2 × CPU核数 + 1,2 核即 5,大部署不超过 8-10;每 worker 独立缓存,内存随数线性涨
loglevelinfogunicorn 错误日志级别
proc_namegunicorn-community-1 / gunicorn-vcsserver-1进程列表中显示名,ps 与 pstree 靠它识别
worker_classgevent / syncworker 模型。Community 用 gevent(协程高并发),VCSServer 注释原文 "currently sync is the only option allowed"
worker_connections10每 worker 并发客户端数,仅对 gevent 有效
max_requests1000worker 处理 N 个请求后优雅重启,防内存泄漏
max_requests_jitter30重启时机加随机抖动,避免所有 worker 同时重启
timeout21600单请求最长处理时间(6 小时),默认值考虑了大仓库操作;不建议低于长 clone/push 耗时
limit_request_line0请求行长度上限,0 不限(Mercurial 长 URL 场景)
limit_request_fields32768请求头字段数上限
limit_request_field_size0单个请求头大小上限,0 不限
graceful_timeout3600收到重启信号后 worker 的收尾时限(1 小时),超时强杀
keepalive2Keep-Alive 连接保持秒数,官方注释建议 1-5 秒
memory_max_usage0单 worker 内存阈值,超过触发优雅重启;0 关闭(配合 gunicorn_conf.py 的钩子生效,单位字节)
memory_usage_check_interval60内存检查周期(秒)
memory_usage_recovery_threshold0.8触发 GC 后仍高于阈值×该系数才重启 worker

配套的 [filter:proxy-prefix] 段(子路径部署用):

参数本机值语义
useegg:PasteDeploy#prefix启用 PasteDeploy 前缀中间件
prefix/应用挂载前缀,如 /rhodecode;需同时取消 app:main 段 filter-with = proxy-prefix 注释,并同步设置 beaker.session.cookie_path

💡 调优点:timeout = 21600(6 小时)看似夸张,实为大仓库 HTTP 协议操作的保护值——clone/push 走的 HTTP 请求周期极长,Nginx 侧的 proxy_read_timeout 需与之对齐(安装篇反代配置取 3600 秒即覆盖大多数场景)。

四、[app:main] 应用核心参数(全局与安全)

4.1 应用身份与全局行为

参数本机值语义
useegg:rhodecode-enterprise-ce应用入口 egg,勿改
debugfalse([DEFAULT] 段)开启后全部日志转 debug 并启用请求跟踪,仅排障用
app_instance_uuid8fe70ea860bb406b9126b5ae21cef852应用唯一 ID,安装时随机生成,多实例部署不可重复
app.base_urlhttp://rhodecode.local无 Web 请求上下文时的自引用地址,用于 ishell、SSH 回调与事件通知里的链接生成
langen界面语言,可用值 en/be/de/es/fr/it/ja/pl/pt/ru/zh;第十章实测改 zh 登录页即时切换中文
gzip_responsesfalse应用层 gzip 压缩响应;第十章实测开启后响应头出现 content-encoding: gzip
generate_js_filesfalse启动时重新生成前端路由文件,一般关闭
startup.import_reposfalse每次启动全量扫描仓库目录导入,仓库多时严重拖慢启动,保持 false
instance_id空多实例共享缓存时的实例前缀键,单实例留空;多 worker 时官方注释要求此处为通配默认值

4.2 大对象与展示

参数本机值语义
cut_off_limit_diff512000提交/PR 整体 diff 超过 512KB 截断展示
cut_off_limit_file128000diff 内单文件超过 128KB 截断展示
rss_cut_off_limit256000RSS/Atom 订阅条目 diff 截断阈值
rss_items_per_page10订阅每页条数
rss_include_difffalse订阅内嵌 diff 内容
gist_alias_url空Gist 短域名别名,空用站内地址
archive_cache_dir注释态归档下载缓存目录;启用后 zip/tar 请求二次命中直接读缓存,下载密集站点建议打开

4.3 协议与安全

参数本机值语义
force_httpsfalse强制按 https 处理重定向;走 Nginx 终结 TLS 时配合 X-Forwarded-Proto 头开启(安装篇反代已带该头)
use_htstsfalse发送 Strict-Transport-Security 头
vcs_full_cachetrue全量使用仓库对象缓存,官方注释 Recommended
git_update_server_infofalse仓库是否以 dumb 协议暴露,智能协议下保持 false
default_encodingUTF-8编码转换默认值,支持逗号分隔多编码按序探测(老仓库 GBK 混杂场景用)
auth_ret_code空认证失败返回码,默认 401;注释说明 Mercurial 客户端对 401 处理有问题时可改 403
auth_ret_code_detectionfalse先 401 触发凭据弹窗再回退 auth_ret_code 的探测模式
lock_ret_code423仓库被锁定时返回的 HTTP 码,4XX 会中断事务
api_access_controllers_whitelist空允许用 ?auth_token= 查询串认证的视图白名单(glob 语法,逗号分隔),如 RepoFilesView:repo_file_raw@TOKEN
auth_plugin.import_legacy_pluginstrue是否加载旧式 py:/path 插件
rhodecode.auth_plugin_fallback注释态认证插件兜底:自建认证配置搞坏锁死登录时,回退内置 rhodecode 插件救场
rhodecode.encrypted_values.secret注释态加密密钥(加密仓库远程地址中的凭据等),默认复用 beaker.session.secret
rhodecode.encrypted_values.algorithm注释态加密算法 aes(默认)或 fernet(官方更推荐,但需全量重加密迁移)
rhodecode.encrypted_values.strict注释态解密失败是否抛错(默认 true)

4.4 管理面限制与许可

参数本机值语义
allow_repo_location_changetrue允许管理员在设置页改仓库存储路径
allow_custom_hooks_settingstrue允许在设置页配置自定义钩子
license_token35ed-621c-d269-11f1EE 许可令牌(CE 下仅展示用)
license.hide_license_infofalse在许可页隐藏 token 等敏感信息
supervisor.uri127.0.0.1:10000应用连 supervisord 的内部地址(管理界面看进程/日志靠它)
supervisor.group_idcommunity-1本实例对应的 supervisord 进程组名
labs_settings_activetrue显示实验性设置面板
exception_tracker.store_path注释态异常转储目录,默认 TMPDIR
exception_tracker.send_email注释态异常邮件通知,收件人留空发全体超级管理员

五、数据库连接参数(sqlalchemy.db1.*)

参数本机值语义
sqlalchemy.db1.urlpostgresql://rhodecode:q1w2e3r4@127.0.0.1:5432/rhodecode数据库连接串。支持三种方言:sqlite:///%(here)s/rhodecode.db?timeout=30、postgresql://、mysql://(MySQL 问题驱动备选 mysql+pymysql://)
sqlalchemy.db1.echofalse打印全部 SQL 语句,排障开
sqlalchemy.db1.pool_recycle3600连接池回收周期(秒),防 MySQL "gone away" 类断连
sqlalchemy.db1.convert_unicodetrueUnicode 转换开关
sqlalchemy.db1.pool_size5(注释默认)池内常驻连接数,0 不限
sqlalchemy.db1.max_overflow10(注释默认)溢出连接上限
sqlalchemy.db1.ping_connectiontrue(注释默认)取连接前 ping 检测,断连自愈

⚠️ 注意:连接串中的数据库密码是明文。两个缓解手段:把 url 改成 {ENV_RC_DB_URL} 环境变量注入;对文件收权 chmod 600 /root/.rccontrol/community-1/rhodecode.ini。换数据库密码时同步改此处并 restart(安装篇实测 PostgreSQL SCRAM/MD5 认证兼容问题即发生在这条链路上)。

六、缓存与会话参数

6.1 dogpile 缓存(rc_cache.*)

四个缓存命名空间 + VCSServer 侧一个,本机值如下:

参数本机值语义
cache_dir%(here)s/data文件缓存根目录,官方注释提示放 ramdisk 可提速
rc_cache.sql_cache_short.backenddogpile.cache.rc.memory_lru重 SQL 查询短缓存,仅支持 memory_lru
rc_cache.sql_cache_short.expiration_time3030 秒
rc_cache.cache_repo_longterm.backenddogpile.cache.rc.memory_lru仓库对象长缓存
rc_cache.cache_repo_longterm.expiration_time259200030 天,push 时仍会主动失效
rc_cache.cache_repo_longterm.max_size10000LRU 最大条目,内存紧张调小
rc_cache.cache_perms.backenddogpile.cache.rc.file_namespace权限树缓存,文件后端
rc_cache.cache_perms.expiration_time3005 分钟(权限变更敏感,TTL 短)
rc_cache.cache_repo.backenddogpile.cache.rc.file_namespace文件树/ReadMe/订阅缓存
rc_cache.cache_repo.expiration_time259200030 天

多实例/大规模部署的演进路径(ini 内注释原文即给出模板):cache_perms 与 cache_repo 可切换 dogpile.cache.rc.redis 后端(带分布式锁),Redis 参数经 rc_cache.*.arguments.host/port/db/socket_timeout/redis_expiration_time/distributed_lock 下发;VCSServer 侧 rc_cache.repo_object 同理(本机为 file_namespace,30 天,Redis 备选后端名为 dogpile.cache.rc.redis_msgpack)。

6.2 beaker 会话(beaker.session.*)

参数本机值语义
beaker.session.typefile会话存储类型,可选 file / ext:redis / ext:database / ext:memcached / memory;官方注释:最快是 Redis 与 ext:database
beaker.session.data_dir%(here)s/data/sessions文件会话目录
beaker.session.keycommunity-1Cookie 名
beaker.session.secret19ef27c611d44137ac9a483e2ca7c61d会话签名密钥(也是 encrypted_values 的默认密钥),泄露即等于会话伪造风险
beaker.session.lock_dir%(here)s/data/sessions/lock会话锁目录
beaker.session.timeout259200030 天无访问即失效并登出
beaker.session.httponlytrueCookie 禁 JS 读取
beaker.session.securefalse仅 HTTPS 传 Cookie;上 TLS 后应改 true
beaker.session.cookie_path注释态子路径部署时设为前缀

💡 技术拓展:session 存储选型——file 型会话与本地磁盘绑定,多实例负载均衡时无法共享;切 ext:redis 只需 beaker.session.type = ext:redis + beaker.session.url = redis://127.0.0.1:6379/2 两行(注释模板原文),是横向扩展的第一步。

七、异步任务与扩展模块参数

7.1 Celery 任务队列

参数本机值语义
use_celeryfalsefalse 时任务在请求进程内同步执行;true 后走 broker。ini 注释给出手动起 worker 的完整命令行(celery worker -E --beat --app rhodecode.lib.celerylib.loader --scheduler ...RcScheduler --ini ...)
celery.broker_urlredis://localhost:6379/8消息代理地址;RabbitMQ 备选 amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost(注释模板)
celery.max_tasks_per_child100worker 执行 N 个任务后重启防泄漏
celery.task_always_eagerfalsetrue 时不入队、本地立即执行(测试用)

7.2 全文搜索

参数本机值语义
search.modulerhodecode.lib.index.whoosh检索后端;Whoosh 免外部服务,官方注释 "works good with few dozen repos"
search.location%(here)s/data/index索引目录;重建索引命令 rhodecode-index 直接消费这两个值(命令实操见命令篇)

7.3 文件存储与实时通道

参数本机值语义
file_store.enabledtrue上传二进制(附件/Artifact)总开关
file_store.backendlocal存储后端,本版本可选 local
file_store.storage_path%(here)s/data/file_store上传文件落盘目录
channelstream.enabledfalse长连接实时通知/聊天服务开关(需独立 channelstream 进程,rccontrol enable-module channelstream 负责)
channelstream.server127.0.0.1:9800channelstream 后端地址
channelstream.ws_urlws://rhodecode.yourserver.com/_channelstream对外 WebSocket 地址,需 Nginx/Apache 转发
channelstream.proxy_path/_channelstream前端连接的应用内路径
channelstream.history.location%(here)s/channelstream_history历史消息存储路径
appenlightfalse错误聚合上报(官方 SaaS),内网隔离环境保持关闭

八、VCS 接线与协议参数

8.1 VCSServer 连接

参数本机值语义
vcs.server.enabletrueWeb 应用经 VCSServer 操作仓库的总开关
vcs.server127.0.0.1:10010VCSServer 地址;VCSServer 单独部署到其他机器时改这里
vcs.server.protocolhttp连接协议,http-rpc
vcs.scm_app_implementationhttppush/pull 操作协议
vcs.hooks.protocolhttp钩子回调协议
vcs.hooks.host127.0.0.1钩子监听主机,VCSServer 异地部署时需调整
vcs.start_serverfalse随应用内嵌启动 VCSServer(开发用)
vcs.backendshg, git, svn启用的版本控制系统,可裁剪,如只留 git
vcs.connection_timeout3600到 VCSServer 的连接超时(秒)
vcs.svn.compatible_version注释态新建 SVN 仓库的格式版本(如 1.8),默认最新

8.2 Subversion 代理(mod_dav_svn)

参数本机值语义
svn.proxy.generate_configfalse生成 Apache mod_dav_svn 配置开关(SVN 走 Apache dav 网关的场景)
svn.proxy.list_parent_pathtrue生成配置含 SVNListParentPath On
svn.proxy.config_file_path%(here)s/mod_dav_svn.conf生成配置落点
svn.proxy.location_root/Location 块前缀
svn.proxy.reload_cmd注释态配置变更后的重载命令(如 /etc/init.d/apache2 reload),需应用运行用户有权执行
svn.proxy.reload_timeout10(注释默认)重载命令超时秒数,0 不限

8.3 SSH 协议

参数本机值语义
ssh.generate_authorized_keyfilefalse用户在网页添加 SSH 公钥时同步写 authorized_keys 文件;false 时网页添加入口对普通用户隐藏(超管仍可管)
ssh.authorized_keys_file_path~/.ssh/authorized_keys_rhodecode生成的公钥文件路径(可与 sshd 的 AuthorizedKeysFile 多文件并存)
ssh.wrapper_cmd~/.rccontrol/community-1/profile/bin/rc-ssh-wrapperSSH 接管的包装命令(认证后按仓库权限放行/拒绝)
ssh.wrapper_cmd_allow_shellfalse是否允许包装命令进 shell,生产必须 false
ssh.enable_debug_loggingfalseSSH 操作调试日志回显给客户端,官方注释 "shouldn't be used in production"
ssh.executable.hg / git / svn~/.rccontrol/vcsserver-1/profile/bin/{hg,git,svnserve}SSH 操作调用的二进制路径
ssh.enable_ui_key_generatortrue网页内生成密钥对入口(关闭后仍可粘贴外部公钥)
ssh.authorized_keys_ssh_opts注释态追加限制项,默认 no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding

SSH 模块的启用还依赖系统侧动作(rccontrol enable-module ssh + sshd 配置),完整启用流程见命令篇。

九、日志配置段

rhodecode.ini 尾部是标准 Python logging 配置,三段式(vcsserver.ini 同构,logger 只有 root 与 vcsserver 两项):

段/键本机值语义
[loggers] keysroot, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper声明 6 个 logger
[logger_rhodecode] level / propagateDEBUG / 1应用主日志级别;生产调 INFO 可显著降噪
[logger_sqlalchemy] level / handlersINFO / console_sqlSQL 日志通道
[handler_console] levelINFO标准错误输出 handler(进程日志经 supervisord 进 community.log)
[handler_console_sql] levelWARNSQL handler,注释原文:DEBUG 打全 SQL、INFO 只打语句、WARN 全不打(生产推荐)
[formatter_generic] classrhodecode.lib.logging_formatter.ExceptionAwareFormatter通用格式器,格式 %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
[formatter_color_formatter] class...ColorFormatter带色格式器(终端)

日志落点:gunicorn 的 stdout/stderr 由 supervisord 重定向到 /root/.rccontrol/community-1/community.log 与 /root/.rccontrol/vcsserver-1/vcsserver.log(supervisord.ini 中 stdout_logfile 指定),应用自身不再写独立日志文件——这也是「看日志必须经 supervisord」的原因。

十、参数修改与生效验证(三组实测)

以下三组实验全部在本实验机完成:改参数 → rccontrol restart community-1 → curl 验证 → 改回原值 → 复核 diff 为空。原始输出存档于实验记录(此处回显为照抄)。

10.1 实测一:改监听端口([server:main] port)

# 1. 修改端口(用编辑器或一行替换均可)
grep -n '^port = ' /root/.rccontrol/community-1/rhodecode.ini
sed -i 's/^port = 10020/port = 10021/' /root/.rccontrol/community-1/rhodecode.ini
grep -n '^port = ' /root/.rccontrol/community-1/rhodecode.ini

# 2. 重启实例
/root/.rccontrol-profile/bin/rccontrol restart community-1

重启与验证回显(实测照抄):

31:port = 10020
31:port = 10021
Stopping instance: community-1
Starting instance: community-1
--- curl new port 10021:
200
--- curl old port 10020 (expect refused):
000
exit=7 (connection refused)

改回 10020 并 restart 后 restored 10020: 200。结论:监听端口以 rhodecode.ini 的 port = 为准,supervisord.ini 里 _port = 10020 只是安装器写入的记录值,改端口不需要动 supervisord.ini。

10.2 实测二:开启响应压缩(gzip_responses)

sed -i 's/^gzip_responses = false/gzip_responses = true/' /root/.rccontrol/community-1/rhodecode.ini
/root/.rccontrol-profile/bin/rccontrol restart community-1
curl -s -D - -o /dev/null -H 'Accept-Encoding: gzip' http://127.0.0.1:10020/_admin/login

实测回显(响应头):

HTTP/1.1 200 OK
content-encoding: gzip

结论:gzip_responses 开启后应用层压缩即时生效;上 Nginx 反代后压缩通常交给 Nginx 的 gzip 模块,该参数应保持 false 避免双重压缩。

10.3 实测三:界面语言(lang)

sed -i 's/^lang = en/lang = zh/' /root/.rccontrol/community-1/rhodecode.ini
/root/.rccontrol-profile/bin/rccontrol restart community-1
curl -s http://127.0.0.1:10020/_admin/login | grep -oE '登录|用户名|密码' | sort | uniq -c

实测回显(登录页命中中文文案):

      1 密码
      2 登录

改回 lang = en 并 restart 后,diff 对原文件校验为空(实测末行回显 INI RESTORED OK),三个参数(port/gzip_responses/lang)全部还原,服务恢复正常(final 10020: 200)。

10.4 生效路径小结

步骤命令/动作说明
1编辑 rhodecode.ini / vcsserver.ini只改对应实例的文件
2rccontrol restart <实例名>全量读入新参数(无热加载)
3curl / 界面 / 日志验证参照上面三组实验
4保留原文件备份restart 前先 cp rhodecode.ini /tmp/rhodecode.ini.bak,diff 复核

十一、常见配置问题与排查

现象原因处理
改了参数不生效未 restart,或改错实例文件(vcsserver 的参数写到 rhodecode.ini)rccontrol restart <实例>;确认文件路径(rhodecode.ini 在 community-1 目录,vcsserver.ini 在 vcsserver-1 目录)
登录后反复跳登录页beaker.session.secret 被改或多实例共享 cookie 名冲突恢复 secret,或多实例部署时统一 secret 并区分 beaker.session.key
大仓库 push 报 413Nginx client_max_body_size 限制反代侧放开(安装篇 Nginx 配置取 0 不限)
长时间 clone 中断反代 proxy_read_timeout 小于传输耗时,或 gunicorn timeout 过小反代取 3600s 以上;gunicorn timeout 保持默认 21600
界面英文想换中文lang = en改 lang = zh 后 restart(10.3 实测)
忘记数据库密码/密码轮换连接串明文存于 ini同步改 sqlalchemy.db1.url 并 restart;先 ALTER USER rhodecode WITH PASSWORD '...' 再改 ini 顺序反了会导致实例起不来
权限改了不刷新cache_perms 缓存 TTL 300 秒等过期或 restart 清空(文件后端缓存在 cache_dir 下,删除即清)
认证配置错锁死登录外部认证插件故障启用 rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode 回退内置认证救场

⚠️ 注意:rccontrol 本身没有开机自启机制(安装篇实测 /etc/init.d 与 systemd 均无),服务器重启后需 systemctl/手工拉起 rccontrol 进程守护,配置篇不再重复,见安装篇第六章的 systemd 单元方案。

十二、参考链接