
2021SC@SDUSC
文章目录本项目名称为学生程序设计能力提升平台,是山东大学软件学院学生开发的一套程序在线评测系统。
开发该系统的目的是丰富教学活动。在一些编程相关的课程中,教师可以通过该系统为学生布置一系列编程题目,让整个教学活动不再局限于过去死板的教学方式,使得学生能在实践中加深对知识的理解。
人员分工硬件配置
阿里云服务器 2核 2 GiB 40GB 云盘
操作系统
Ubuntu 20.04 64位
网络
公网IP 47.102.153.133
带宽 1Mbps
下面部分命令的执行需要root权限(云服务器通过实例密码登录进去,直接具有root权限)
更新下载源
apt update
沙箱程序依赖Linux的setrlimit和seccomp工作。
apt install libseccomp-dev libseccomp2 seccomp
下面需要在文件夹下执行命令
cd sduoj-sandbox/
安装
make make install
安装完默认在/usr/bin/sandbox
检查
sandbox --help各编程语言的编译、执行环境 Python
在上述的Python2、Python3默认就有,如果没有,使用apt安装即可
路径:
/usr/bin/python3 /usr/bin/python2.7C++
g++也是默认就有
/usr/bin/g++C
/usr/bin/gccJava
由于系统用做OJ环境,JDK版本只需选择高一点即可,这里就下载了 openjdk-11
apt install -y openjdk-11-jdk
也许以后还会支持其他,不过暂时就这么几个吧。
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。
sudo apt update sudo apt install openssh-server目标
在Ubuntu系统上开通sftp文件服务,允许某些用户上传及下载文件。
但是这些用户只能使用sftp传输文件,不能使用SSH终端访问服务器,并且sftp不能访问系统文件。
系统管理员则既能使用sftp传输文件,也能使用SSH远程管理服务器。
操作步骤 sftp用户、用户组的创建sudo adduser alice sudo addgroup sftp-users # 将alice从所有其他用户组中移除并加入到sftp-users组,并且关闭其Shell访问 #/bin/false也可以替换为/sbin/nologin,目的是不允许该用户登录到系统中 sudo usermod -G sftp-users -s /bin/false alice
sudo adduser admin sudo addgroup ssh-users # -a 表示以追加形式将 admin 加入 ssh-users sudo usermod -a -G ssh-users admin创建文件服务器目录
# 创建监狱目录 sudo mkdir /home/sftp_root # 普通用户能够写入的共享文件目录 sudo mkdir /home/sftp_root/shared # 设置共享文件夹的拥有者为管理员、用户组为 sftp-users sudo chown admin:sftp-users /home/sftp_root/shared # 拥有者、sftp用户组的成员具有一切权限 sudo chmod 770 /home/sftp_root/shared
默认允许所有用户或者用户组登录,若仅允许指定用户或者用户组访问,按照以下格式配置。
# 以空格间隔 AllowUsers user1 user2 AllowGroups group1 group2权限配置
sudo vim /etc/ssh/sshd_config
在sshd_config文件的最后,添加以下内容:
AllowGroups ssh-users sftp-users Match Group sftp-users ChrootDirectory /home/sftp_root AllowTcpForwarding no X11Forwarding no ForceCommand internal-sftp
这样配置的目的是:
只允许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连接本机。
sudo usermod -a -G ssh-users songyangji
仍然是
sudo vim /etc/ssh/sshd_config
# Authentication: AllowUsers root@10.10.10.* #限制root用户只能通过10.10.10.*网段登录访问 AllowUsers charles@10.10.10.* #限制charles用户只能通过10.10.10.*网段登录访问 AllowUsers john@10.10.10.*重启SSH
# 亦可 # /etc/init.d/ssh restart service ssh restartRabbitMQ Ubuntu 下载
先更新一下资源。
sudo apt update
由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang。
sudo apt install -y erlang-nox
安装rabbitmq
sudo apt install -y rabbitmq-server
默认下载的地址
songyangji@SongyangJi-Ubuntu-DeskStop:/etc/rabbitmq$ whereis rabbitmq rabbitmq: /usr/lib/rabbitmq /etc/rabbitmq /usr/share/rabbitmq开启、关闭
# start sudo service rabbitmq-server start # stop sudo service rabbitmq-server stop
直接到/sbin目录下执行也是可以的。
# 启动 start sudo /sbin/service rabbitmq-server start # 停止 stop sudo /sbin/service rabbitmq-server stop启动Web管理端
安装了Rabbitmq后,默认也安装了该管理工具,执行命令即可启动
cd /etc/rabbitmq sudo rabbitmq-plugins enable rabbitmq_management
访问 localhost:15672
出现一下即可。
brew update brew install rabbitmq用户及权限管理
sudo rabbitmqctl add_user jsy-mac0 8888
sudo rabbitmqctl set_user_tags jsy-mac0 administrator
rabbitmqctl set_permissions -p / jsy-mac0 ".*" ".*" ".*"配置环境变量
export RABBITMQ_HOME=/opt/homebrew/Cellar/rabbitmq/3.8.13 export PATH=$PATH:$RABBITMQ_HOME/sbin启动、关闭
rabbitmq start
rabbitmq stop
访问Web端是一样的。
个人任务 Sandbox