山东大学软件学院学生程序设计能力提升平台项目综述

2021SC@SDUSC

文章目录

  • 项目简介
  • 人员分工
  • 系统的相关配置
    • 硬软环境
    • SandBox安装
    • 各编程语言的编译、执行环境
      • Python
      • C++
      • C
      • Java
    • SFTP
      • 安装SFTP服务
      • 目标
      • 操作步骤
        • sftp用户、用户组的创建
        • 创建文件服务器目录
        • 权限配置
      • 重启SSH
    • RabbitMQ
      • Ubuntu
        • 下载
        • 开启、关闭
        • 启动Web管理端
      • MacOS
        • 下载
      • 用户及权限管理
        • 配置环境变量
        • 启动、关闭
  • 个人任务
    • Sandbox
    • SduOJ-Jduge-Server

项目简介

本项目名称为学生程序设计能力提升平台,是山东大学软件学院学生开发的一套程序在线评测系统。

开发该系统的目的是丰富教学活动。在一些编程相关的课程中,教师可以通过该系统为学生布置一系列编程题目,让整个教学活动不再局限于过去死板的教学方式,使得学生能在实践中加深对知识的理解。

人员分工

  • 小栗帽今天吃什么:学生、教师、管理员主界面布局、身份绑定、出题做题、测试点编辑、题目集管理、开放信息设置
  • K?tzchen-408:项目创建、Markdown编辑器嵌入、教师导入学生表、全局引入ajax、路由优化、用户组管理
  • alphahao:后端框架搭建,后端用户鉴权处理框架搭建springsecurity,学生身份相关功能,题解提交相关功能,登录注册相关功能,tomcat、nginx、mysql、rabbitmq搭建配置
  • wocaizhale:出题功能、题目的浏览、搭建文件服务器、保存和维护测试点文件
  • Nothing:题目集模块、用户组模块、学生信息管理
  • 孤名为義:需求设计、整理文档、系统优化、补充功能
  • 养猪去: 判题沙箱程序(c语言开发)的调研、技术选型、文档整理、判题端(Java)的开发、引入rabbitmq等中间件、引入zookeeper、保证系统可扩容性

系统的相关配置

硬软环境

  1. 硬件配置

    阿里云服务器 2核 2 GiB 40GB 云盘

  2. 操作系统

    Ubuntu 20.04 64位

  3. 网络

    公网IP 47.102.153.133

    带宽 1Mbps

SandBox安装

下面部分命令的执行需要root权限(云服务器通过实例密码登录进去,直接具有root权限)
更新下载源

沙箱程序依赖Linux的和工作。

下面需要在文件夹下执行命令

安装

安装完默认在

检查

各编程语言的编译、执行环境

Python

在上述的Python2、Python3默认就有,如果没有,使用apt安装即可

路径:

C++

g++也是默认就有

C

Java

由于系统用做OJ环境,JDK版本只需选择高一点即可,这里就下载了 openjdk-11

也许以后还会支持其他,不过暂时就这么几个吧。

SFTP

安装SFTP服务

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

Ubuntu默认只安装openssh-client,需要手动安装openssh-server或者sftp-server。

目标

在Ubuntu系统上开通sftp文件服务,允许某些用户上传及下载文件。

但是这些用户只能使用sftp传输文件,不能使用SSH终端访问服务器,并且sftp不能访问系统文件。

系统管理员则既能使用sftp传输文件,也能使用SSH远程管理服务器。

操作步骤

sftp用户、用户组的创建

  • 添加sftp用户,创建 sftp 用户组
  • 创建sftp服务器的管理员身份,并且加入 ssh用户组(不限制他的shell操作权限)

创建文件服务器目录

  • 创建服务器文件目录

默认允许所有用户或者用户组登录,若仅允许指定用户或者用户组访问,按照以下格式配置。

权限配置

在sshd_config文件的最后,添加以下内容:

这样配置的目的是:

  • 只允许ssh-uers及sftp-users通过SSH访问系统,其中ssh-uers用户组可以使用ssh,并且不受其他限制。

    而SFTP用户组仅能使用SFTP进行访问,且不能使用shell

  • 针对sftp-users用户,额外增加一些设置:将“/home/sftp_root”设置为该组用户的系统根目录(因此它们将不能访问该目录之外的其他系统文件;

  • 禁止TCP Forwarding和X11 Forwarding

另外需要注意的是:ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。

需要注意的一点的是,现在所有需要远程连接的用户都必须加入 ssh-users 才行。

如将用户 songyangji 加入 ,这样ta就可以使用ssh连接本机。

  • 限制ssh连接的访问IP

仍然是

重启SSH

RabbitMQ

Ubuntu

下载

先更新一下资源。

由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang。

安装rabbitmq

默认下载的地址

开启、关闭

直接到/sbin目录下执行也是可以的。

启动Web管理端

安装了Rabbitmq后,默认也安装了该管理工具,执行命令即可启动

访问 localhost:15672
出现一下即可。

山东大学软件学院学生程序设计能力提升平台项目综述

MacOS

下载

用户及权限管理

  • 添加用户
  • 设置用户身份
  • 添加权限

配置环境变量

启动、关闭

访问Web端是一样的。

个人任务

Sandbox

  • 学习使用、源码分析
    如何构建符合 POSIX 实用程序约定的Shell-CLI。
  • sandbox 日志模块的构建与分析
    记录sandbox程序的核心日志,方便debug。
  • linux读写文件相关CLib函数、系统调用分析
    sandbox程序的基础使用。
  • linux使用进程、线程原语的分析
    sandbox程序的基础使用。
  • linux用户权限的动态设置的分析
    如何在程序中动态控制用户的使用权限, 防止外来的代码对系统产生破坏。
  • linux 的代码分析
    如何限制用户使用代码的资源使用。
  • linux 的使用分析
    如何使用户进程在一个安全的计算模式下运行,也就是 secure computing mode的实现。
  • 进程的处理器核心亲缘性控制
    如何避免用户进程在多个处理器核心上切换。

SduOJ-Jduge-Server

  • Slf4j、Log4j2
    评测机的异常抛出多,调用链长,合理的日志构建对于debug的是必须的。
  • SFTP 、jsch
    jsch的线程安全性分析,使用Apache的 Commons pool2 构建 SFTP的连接池。
  • ProcessBuilder
    Java、C程序的沟通的桥梁,分析Java启动、监控、控制进程的代码实现。
  • Commons pool2
    使用 (linux shell command)和 Commons pool2 代码实现 CPU
    核心调度分配池的代码实现。
  • RabbitMQ
    评测机与后端服务器的通信工具。
    • 对amqp-client客户端的代码分析,重点是网络IO和线程调度模型;
    • Spring-Boot集成RabbitMQ的代码分析,重点是连接资源、线程调度、消息的可靠发布与消息的代码实现;
    • 针对本次项目的使用特点,自研以MQ为网络通信工具的RPC框架的实现;
  • zookeeper
    使用 zookeeper 这一经典的 分布式服务协调框架进行多个评测机的管理,做到服务的高可用。

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91337 人正在系统学习中

来源:你别教我打游戏

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年8月26日
下一篇 2021年9月1日

相关推荐