Ubuntu22.04安装HOJ教程(含docker、npm安装)
由于我是教育网,以下均为在教育网下安装方法。
一、docker安装
1、更新 Ubuntu
打开终端,依次运行下列命令:
sudo apt update
sudo apt upgrade
2、添加 Docker 库
首先,安装必要的证书并允许 apt 包管理器使用以下命令通过 HTTPS 使用存储库:
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
3、添加Docker官方GPG密钥
执行以下命令来添加Docker官方的GPG密钥:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
4、添加Docker软件源
执行以下命令来添加Docker的软件源:
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
5、使用命令更新 Ubuntu 源列表
sudo apt update
6、安装 Docker
最后,运行下列命令在 Ubuntu 22.04 LTS 服务器中安装最新 Docker CE:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
7、配置用户组(可选)
默认情况下,只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo。命令如下:
sudo usermod -aG docker $USER
8、运行docker
我们可以通过启动docker
来验证我们是否成功安装。命令如下:
systemctl start docker
9、使 Docker 服务在每次重启时自动启动
sudo systemctl enable docker
10、可以使用以下命令查看已安装的 Docker 版本
sudo docker version
11、安装工具
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
12、重启docker
service docker restart
13、验证是否成功
sudo docker run hello-world
14、常见问题
出现以下代码,原因:就是我们的镜像源不行,需要更换镜像源
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Retrying in 10 seconds
docker: error pulling image configuration: download failed after attempts=6: dial tcp 128.242.245.93:443: connect: connection refused.
See 'docker run --help'.
但是我们就算知道原因,去找度娘会发现大部分都是说更换阿里的镜像源,但是我们尝试之后并没有作用
解决方案
配置加速地址:设置registry mirror
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
systemctl status docker
重启完docker之后检查registry mirror刚刚配置的加速地址是否成功
docker info
再次验证是否成功(注意等半分钟左右)
15、查看镜像
上面我们拉取了hello-world的镜像,现在我们可以通过命令来查看镜像,命令如下:
sudo docker images
二、docker-compose安装
由于github不稳定,建议离线下载再安装,这里以下载安装包安装为例。
1、去github下载:
https://github.com/docker/compose/releases
这里需要注意docker-compose需要和docker版本对应,具体如下图(更详细的自行百度),同时根据自己系统的架构信息下载适合的版本。
至于自己的系统架构信息使用下面命令查询:
1.1架构信息
uname -m
2.1详细信息
uname -a
我这里下载的是v2.30.0/docker-compose-linux-x86_64(docker-compose版本是2.30.0,系统是linux,架构是x86_64),下载链接如下:
https://github.com/docker/compose/releases/download/v2.30.0/docker-compose-linux-x86_64
2、进入到安装位置文件夹,将 docker-compose 移至 /usr/local/bin 目录下并重命名
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
3、设定 docker-compose 的执行权限
sudo chmod +x /usr/local/bin/docker-compose
4、查询 docker-compose 版本以确认是否成功安装
docker-compose -v
出现下面内容安装成功
三、HOJ单体部署
1、选择好需要安装的位置,运行下面命令
git clone https://gitee.com/himitzh0730/hoj-deploy.git && cd hoj-deploy
2、进入到单体部署的配置文件夹
cd standAlone
3、查看文件,使用命令ll 可以查看到 standAlone文件夹下有两个文件
├── docker-compose.yml
├── .env
4、修改配置文件里面的默认配置
vim .env
简单测试可以不改,但正式部署请修改默认配置的密码!
各项配置请看文件内说明,一般请修改默认为hoj123456
的三个密码配置项即可,如下:
- 缓存Redis的密码配置项:
REDIS_PASSWORD
- 数据库MySQL的密码配置项:
MYSQL_ROOT_PASSWORD
- 服务注册中心Nacos的密码配置项:
NACOS_PASSWORD
5、安装和启动服务
docker-compose up -d
根据网速情况,大约十到二十分钟拉取镜像,全程无需人工干预,拉取完毕后,自动启动容器服务,大概需要一至两分钟的初始化。
6、查看服务状态
docker ps -a
当看到所有的容器的状态status都为UP
或healthy
就代表 OJ 已经启动成功。
7、查看HOJ网站:
打开浏览器,访问http://服务器ip
,如若正常,即可看到OJ首页。
默认唯一的超级管理员账号如下,请注意之后点击页面右上角头像选择我的设置
修改默认密码!
账号: root
密码: hoj123456
如果出现以下界面,请先重启一遍系统。
如果还是出现不停的提示“服务器错误,请重新刷新”,小伙子不要慌,有两个可能,数据库连接还没有加载完,还有一种可能还是数据库连接还没有加载完,所以你有两个办法,第一个办法是直接重启,第二个办法是,不好意思就不是直接重启了,就是到docker-compose.yml文件所在目录(standAlone文件夹下)执行docker-compose down,完事之后再执行docker-compose up -d,注意这个-d是后台执行的意思,so,打开127.0.0.1运行一下试试,没作用那就再次重启,重启之后还是有问题,他娘的,直接等等。(其实听他的,一直刷新,然后等待就好了,反正是数据库有延迟)具体可以看我的另一篇笔记:传送门
8、网站初始化配置:
请一定要看下一篇文章:网站配置
9、参数说明以及网站性能提升
请看本文章的第三点:默认参数说明
特别提醒虚拟机安装的,到这步一定要存个快照,接下来的npm安装容易出错。
四、npm安装
1、先安装nodejs
apt install nodejs
2、检查版本
nodejs -v
3、更换镜像源(更多的源见:传送门)
npm config set registry http://mirrors.cloud.tencent.com/npm/
4、安装npm
apt install npm
5、检查版本
npm -v
6、进入docker-compose目录运行命令
npm install
7、下载完毕之后进入dist文件夹进行打包
npm install build
8、之后按照官网的执行即可。