服务器配置¶
ZJUI-Learn 服务器的各种属性可以使用 config.json 文件进行配置。配置从多个位置加载并合并在一起,后面的文件中的值优先于前面的文件:
~/.config/prairielearn/config.json(用户的主目录 - 在 Docker 中运行时不适用)./config.json(存储库根目录)./apps/*/config.json(应用程序根目录)
例如,如果 ./config.json 设置 "courseDirs" 并且 ./apps/prairielearn/config.json 设置 "isEnterprise",则最终配置将包括这两个值。如果两个文件设置相同的属性,则将使用 ./apps/prairielearn/config.json 中的值。
该文件的结构为 JSON 字典,语法如下:
{
"property1": "...",
"property2": "...",
"property3": "..."
}
完整的属性列表可以在 lib/config.ts 中找到。
设置课程目录¶
ZJUI-Learn 加载的默认课程目录可以用 "courseDirs" 设置覆盖。此设置采用位于_Docker 容器中_的要加载的路径列表。
{
"courseDirs": ["exampleCourse", "testCourse", "/myCourse"]
}
Note
这些目录是容器中的路径,而不是本地计算机上的路径。
要在计算机上安装目录以便在容器中可以访问它,您可以将以下内容添加到 Docker 运行命令中:
-v /path/to/myCourse:/myCourse
然后,可以在 /myCourse 处访问该路径(注意开头的斜杠)。
在本地设置外部图像捕获¶
pl-image-capture 元素允许用户通过外部设备(例如移动设备或平板电脑或本地相机)捕获提交的作品的图像。
要在本地使用外部捕获,必须将 config.json 中的 serverCanonicalHost 设置为本地 IPv4 地址。
要检索您的本地 IPv4 地址(如果您已打开)
- macOS:在终端中,运行
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
- Linux:在终端中运行
ip -o route get to 8.8.8.8 | sed -n 's/.*src \([0-9.]\+\).*/\1/p'
- Windows:在命令提示符中,运行
ipconfig | findstr /C:"IPv4"
复制您看到的第一个地址,并将其粘贴到 config.json 文件的 serverCanonicalHost 属性中。
例如,如果您的 IPv4 是 192.168.1.60 并且 PL 在端口 3000 上运行,则您的文件应为:
{
"serverCanonicalHost": "http://192.168.1.60:3000"
}
工作空间和外部评分员¶
您应该在 config.json 中设置工作区主机主目录根和主目录根。
{
"workspaceHostHomeDirRoot": "/tmp/workspace",
"workspaceHomeDirRoot": "/tmp/workspace"
}
在 macOS 上本地运行工作区/外部评分器¶
如果您在 macOS 上本机运行工作区,则可能需要将 "workspaceDevContainerHostname" 更改为“localhost”。
{
"workspaceDevContainerHostname": "localhost"
}
某些映像会检测您是否以 root 身份运行,并在降级到用户 1001 (pl-gosu-helper.sh) 之前尝试将工作区文件 chown 给用户 1001。在 macOS 上,这将失败,因为无法 chown 绑定挂载(基于 FUSE 的文件系统)。要解决此问题,您可以在 config.json 中将 "workspaceJobsDirectoryOwnerUid" 和 "workspaceJobsDirectoryOwnerGid" 设置为 1001。
{
"workspaceJobsDirectoryOwnerUid": 1001,
"workspaceJobsDirectoryOwnerGid": 1001
}
许多容器只能以 UID 1001 或 0 身份运行。请确保您在本地以 root 身份运行!
sudo make dev-workspace-host
sudo make dev
如果您不执行这两个命令,您将看到如下错误:
chown: changing ownership of '/home/coder/workspace': Permission denied
chown: changing ownership of '/home/coder/workspace/fibonacci.py': Permission denied
测试本地 docker 镜像¶
在本地测试 docker images 时,您可能希望强制 ZJUI-Learn 使用本地版本的映像。
{
"workspacePullImagesFromDockerHub": false,
"externalGradingPullImagesFromDockerHub": false
}
企业¶
ZJUI-Learn的某些功能仅在企业版中提供。请注意,设置此选项时必须遵守 ZJUI-Learn 许可证。
{
"isEnterprise": true
}