UOJ
部署
首先执行
sudo su
进入 root
然后执行
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
安装 docker
接着执行
sudo systemctl start docker
启动 docker 服务
然后执行
sudo docker --version
若 docker 正常,会输出形如如下的版本号
Docker version 20.10.21, build baeda1f
执行如下内容来安装 docker 加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
执行如下内容拉取镜像并启动 UOJ 服务
sudo docker pull universaloj/uoj-system
sudo docker run --name uoj -dit -p 80:80 --cap-add SYS_PTRACE universaloj/uoj-system
接下来,UOJ将在后台运行。 上面的代码是用于新建一个 UOJ 容器,重启服务器后不要使用
docker run
来启动容器。 如果您不希望用80端口来运行UOJ,您可以把上面的 -p 80:80 改成 -p 你要的端口:80 。
稍等大约半个小时(视网络情况而定),访问服务器的地址,您现在应该能看到UOJ正在运行了。
您注册的第一个用户将被自动设为管理员。
容器维护
docker容器很容易维护。您只需要掌握以下命令:
docker start uoj # 启动 uoj 容器
docker stop uoj # 暂停 uoj 容器
docker restart uoj # 重启 uoj 容器
docker exec -it uoj /bin/bash # 进入 uoj 容器的终端
docker commit uoj uoj_back:tag # 将 uoj 容器保存为标签为 tag 的 uoj_back 镜像
docker ps -a # 查看所有的容器
docker images # 查看所有的镜像
docker rm uoj # 删除 uoj 容器(慎用)
docker rmi uoj_back:tag # 删除标签为 tag 的 uoj_back 镜像
在docker中,每个容器需要基于一个镜像来运行。最开始,我们的 uoj 容器是基于安装过程中构建的镜像。
下面是一次典型的数据恢复:
docker commit uoj uoj_back:20170101 # 例行备份
docker commit uoj uoj_back:20170201 # 例行备份
docker commit uoj uoj_back:20170301 # 例行备份
# 3月15日,黑恶势力破坏了 uoj,uoj 容器已经无用,必须恢复
docker stop uoj
docker rm uoj # 删除uoj容器
docker run --name uoj -dit -p 80:80 --cap-add SYS_PTRACE uoj_back:20170301
# 创建新的 uoj 容器,使用3月1日的备份
数据迁移
下面的命令可以把 uoj_back 这个容器导出为 uoj.tar 这个文件:
docker save -o uoj.tar uoj_back
把 uoj.tar 复制到其他机器上,然后可以运行下面的命令导入 uoj_back 镜像:
docker load --input uoj.tar
下面是一次典型的数据迁移:
# 服务器 A:
docker commit uoj uoj_back # 把uoj容器存储为镜像
docker save -o uoj.tar uoj_back # 把uoj_back镜像导出
# 然后通过某些恶毒的手段把 uoj.tar 拷到服务器 B
# 服务器 B:
docker load --input uoj.tar # 导入uoj_back镜像
docker run --name uoj -dit -p 80:80 --cap-add SYS_PTRACE uoj_back
# 建立 uoj 容器,基于之前服务器 A 的数据,迁移完成
管理员账户
按照套路,UOJ 安装完成后,注册的第一个账户会被自动设为管理员账户。
当您以管理员账户登录 UOJ 后,您就可以依次点击页面右上角 您的用户名 、 系统管理 来进入管理界面。
管理员账户有发布公告、新建题目和比赛等权限。但是,管理员并不能参加比赛。
发布公告
UOJ 发布公告的套路比较神奇,请您仔细阅读这一段。
首先,请您将您的公告发布到您的博客当中,然后再这篇博客的地址中(形如 .../blog/478 )找到最 后的一串数字,记作博客 id。
之后,请您打开管理界面,使用博客 id 添加公告。 您可以置顶公告,需要注意的是,1 表示优先级最低(显示为“三级置顶”),3 表示优先级最高(显示为“一级置顶”)。
好了,差不多就到这里了,如果想要修改全局配置文件的私聊我
需要代部署服务(收小额费用)的也可以私聊我
全局配置文件中包含了网站的基础信息
相关文章
发表评论