文章目录
- 前言
- 一、要求
- 二、使用步骤
- 三、安装
-
-
- 3.1 Selecting the hardware
- 3.2 Preparing the system
- 3.3 Getting VPL-Jail-System
- 3.4 Running the installer
- 3.5 Adding the jail/execution server to the VPL plugin at Moodle
- 3.6 Updating VPL-Jail-System
- 3.7 Updating the software in the jail
- 3.8 Removing VPL-Jail-System
- 3.9 Developments tools the installer may install
-
- 四.配置
- 总结
前言
VPL-Jail-System是Moodle插件VPL的一部分。VPL是一个在Moodle中管理编程任务的插件。其特点是:
允许在浏览器中编辑程序源代码
学生可以在浏览器中运行交互式程序
您可以运行测试来检查程序。
允许搜索文件之间的相似性。
允许设置编辑限制并避免外部文本粘贴。
这些功能简化了学生的学习过程和教师的评估任务。
监狱系统为学生代码的执行和评估提供无状态、安全和隔离的沙盒。
有关VPL的更多详细信息,请访问VPL主页或者Moodle上的VPL插件页面.
一、要求
本文件描述了VPL封闭系统的要求。有关VPL的更多详细信息,请访问Moodle上的VPL主页或VPL插件页面。 VPL-Jail-System是一个开放的软件执行系统,需要特定的环境。
二、使用步骤
1.软件要求
从VPL-Jail-System 2.4开始,该系统需要一个Linux发行版,其中YUM或APT作为包管理器,systemd或system V作为服务管理器。该系统已经在Debian、Ubuntu和CentOS上进行了测试。
O.S. | Version | Arch. | Results |
---|---|---|---|
Ubuntu | 20.04 | 64b | Compatible |
Ubuntu | 18.04 | 64b | Compatible |
Ubuntu | 16.04 | 32b/64b | Compatible |
Ubuntu | 14.04 | 32b/64b | Not functional due to the lack of OverlayFS |
Debian | 10 | 32b/64b | Compatible |
Debian | 9 | 32b/64b | Compatible |
CentOS | 7 | 64b | GUI programs not available. Requires to disable or configure SELinux. |
CentOS | 6 | Not functional |
2.硬件要求
该系统的开发旨在为学生的课程提供即时和交互式的执行。这意味着系统可以同时参与多个执行。完成这项任务所需的硬件取决于一次同时执行的次数、程序的必要条件以及所使用的编程语言。例如,一个PHP Web程序可能需要大量的ram,尤其是在执行Web浏览器时,但Python程序可能需要少一百倍的RAM。我们的经验是,一台只有2Gb内存和两个内核的机器可以支持50名学生使用Java(非GUI)在线上课。如果你正在进行考试,所需的硬件可能会增加两倍。关键资源可能是RAM。如果系统耗尽内存,操作系统将开始交换,吞吐量将急剧下降。我们的测试表明,32位操作系统比64位版本使用的内存和CPU更少。请记住,您可以在线向VPL安装添加(或删除)VPL-Jail-systems。
3.网络要求
本节描述了使用带有VPL插件的执行服务器的网络要求。
1.从用户机器到Moodle服务器必须可用的连接。运行浏览器的客户端机器必须能够访问Moodle服务器。当用户与Moodle互动时,这是显而易见的联系。请注意,强烈建议使用cyphered连接(HTTPS),即Moodle服务器必须拥有由已知权威机构签署的证书,并且用户必须使用HTTPS连接(Moodle服务器的URL必须以“https://”开头)。从Moodle服务器到执行服务器(Jail服务器)。Moodle中的VPL插件需要向执行服务器发送请求。请注意,强烈建议使用cyphered连接(HTTPS),即执行服务器必须具有由已知权威机构签名的证书,并且VPL插件必须使用HTTPS连接(执行服务器的URL必须以“https://”开头)。从用户机器到执行服务器(监狱服务器)。运行浏览器的客户机必须能够访问执行服务器。当请求执行/评估时,执行服务器需要从浏览器连接以知道用户在那里,如果需要,还需要连接以允许与正在运行的程序进行交互。这些连接是WebSocket,强烈建议使用cyphered连接(WSS),即执行服务器必须具有由已知权威机构签名的证书。
2.代理如果您的网络没有使用透明代理,您必须:配置用户机器以正确使用代理。注意,您的代理必须与WebSocket兼容。配置VPL插件(Moodle administration VPL插件设置)以使用代理正确访问执行服务器。如果您的网络使用透明代理,它必须与WebSocket兼容。
3.负载平衡器执行服务器的连接架构似乎不允许使用负载平衡器来访问执行服务器集群。请注意,运行任务的执行服务器从Moodle服务器和客户端机器接收几个请求来管理任务。
4.专用网络系统不需要外部连接,因此在专用网络中安装所有组件(客户端、Moodle服务器和执行服务器)没有限制。
三、安装
如何安装VPL-Jail-系统。有关VPL的更多详细信息,请访问Moodle上的VPL主页或VPL插件页面。
3.1 Selecting the hardware
推荐的选项是使用专用机器。如果您不能使用专用计算机,请尝试在共享计算机中使用虚拟机,例如使用VirtualBox。这种方法将提供隔离并限制服务使用的资源。如果您决定在具有其他用途的计算机上安装该服务,请注意VPL-Jail-System对资源的使用可能会降低其他服务的性能。虽然没有安全漏洞的报告,但服务的性质(执行外部代码)带来了内在的威胁。
3.2 Preparing the system
尽可能干净地安装Linux操作系统。至少安装“en_US。UTF-8“区域设置和您想要的所有其他区域设置。请注意,VPL插件将尝试使用moodle上正在使用的语言环境,但将使用“en_US。如果设置Moodle one失败,UTF-8”作为备用区域设置。
如果您有足够的资源,您可以安装GUI界面。停止任何您不需要的服务,如web服务器、ssh服务器等。如果操作系统有防火墙,您必须配置它(或停止它)以访问VPL-Jail-System所需的唯一两个端口。如果您使用自动更新,您必须重新启动VPL-Jail-系统以使更新生效。您可以使用cron来自动化这个过程。
3.3 Getting VPL-Jail-System
VPL-Jail-System仅作为源文件分发。您必须从获取源包https://vpl.dis.ulpgc.es/,例如使用
wget https://vpl.dis.ulpgc.es/releases/vpl-jail-system-[version].tar.gz
或者从GitHub存储库中,使用
sudo apt-get install g++ make autotools-dev autoconf
aclocal
autoheader
autoconf
automake
./configure
make distcheck
这将生成一个名为VPL-jail-system-【version】。tar。gz的包文件
3.4 Running the installer
获得软件包后,您必须将其解压缩并运行安装程序。
tar xvf vpl-jail-system-[version].tar.gz
cd vpl-jail-system-[version]
./install-vpl-sh
Note
The “./install-vpl-sh” script must be run as root.
按照说明操作,等待必要的下载。安装脚本将尝试安装常用的开发软件。
安装程序会询问您以下问题:
如果您想使用“让我们加密”,请创建自签名SSL证书或使用您自己的证书。
更新时,如果您想用新的配置文件替换配置文件。
如果你想安装不同的编译器和解释器。
注意
如果您有自己的用于HTTPS和WSS通信的SSL证书,则必须将您的公共证书复制到“/etc/vpl/cert.pem”文件中,并将私钥复制到“/etc/vpl/key.pem”文件中。您还可以更改配置文件来告诉系统您的证书的位置。如果您的证书颁发机构(CA)不是根CA