LPOJ 开发教程(三)部署OJ

LPOJ网址:www.lpoj.cn
LPOJ文档:docs.lpoj.cn

这里讲解如何用一般的方法来部署LPOJ

环境说明

判题机需部署在Linux环境下!

我使用的环境是:

  • 前端: Ubuntu 18.10 + Nginx
  • 后端: Ubuntu 18.10 + Python 3.7
  • 判题服务器: Ubuntu 18.10 + Python 3.7
  • 判题机: Ubuntu 18.10 + Python 3.7 (必须Linux系统)
  • 爬虫部分: Ubuntu 18.10 + Python 3.7

整个OJ对系统要求不高。1G内存 1核的机器足以。但是部分题目需要大内存,所以推荐使用2G内存 1核的服务器。

准备部署

接下来所有操作,均在Ubuntu系统下进行,如果是其他系统,请自行百度对应的命令行语句

首先我们把代码clone下来,或者直接在Github上下载下来。
首先我们将代码解压到一个文件夹中(就用LPOJ作为名字吧!)

mkdir LPOJ
cd LPOJ
git clone https://github.com/Linzecong/LPOJ.git

然后你就成功的把所有所需的文件下载下来了,接下来开始部署,具体看后面的教程。

前端部署

cd Frontend
npm install
npm run-script build

编译完毕后,网站文件保存在dist目录中,接下来部署到服务器中

  • 推荐使用Nginx
sudo apt-get install nginx

将dist文件夹中的文件复制到Web服务器目录中(默认根目录 /var/www/html/
接下来修改Nginx配置文件(不同版本可能在不同的地方)

sudo nano /etc/nginx/nginx.conf

主要修改如下几个配置

  1. 路由重定向
  2. API重定向

将如下配置复制到http{}中

server{
    listen 80;
    server_name www.lpoj.cn;  # 此处填写你的域名或IP地址
    root /var/www/html;   # 此处填写你的网页根目录
    location /api {  # 将API重定向到后台服务器(如果你修改了前端中的代理配置,这里需要对应的修改)
        rewrite ^.*api/?(.*)$ /$1 break;
        proxy_pass http://localhost:8000; # 填写你的后端地址和端口
    }
    location / {  # 路由重定向以适应Vue中的路由
        index index.html;
        try_files $uri $uri/ /index.html;
    }
}

其他配置请自行参考Nginx配置

至此,前端部署完毕。如要进行OJ二次开发,请参阅文档

后端与数据库部署

  1. 首先安装Django
pip install django

pip install djangorestframework

pip install django-filter

sudo apt-get install python-django

pip install django-cors-headers

pip install mysqlclient
  1. 安装数据库,已安装的可跳过
sudo apt-get install mysql-server 

mysql -uroot -p
mysql > CREATE DATABASE LPOJ DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql > USE mysql
mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  IDENTIFIED BY 'your_password'  WITH GRANT OPTION;
mysql > ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password by 'your_password';
mysql > flush privileges;

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 

#修改bind-address 为 0.0.0.0
  1. 部署后端
cd Backend

cd Backend

sudo nano setting.py
# 修改数据库配置为你自己的数据库IP和用户名密码

cd ..

python manage.py makemigrations

python manage.py migrate

echo "from django.contrib.auth.models import User; User.objects.filter(email=\"admin@example.com\").delete(); User.objects.create_superuser(\"admin\", \"admin@example.com\", \"admin\")" | python manage.py shell

python manage.py runserver 0.0.0.0:8000
  1. 安装sftp服务(不安装无法判题,一般云服务器会自动安装)
sudo apt-get install openssh-server
sftp yourusername@localhost # 验证是否安装成功!
  1. 添加管理员

安装成功后,先通过IP:80访问OJ,注册一个用户

然后进入 IP:8000/admin 以用户名admin 密码admin 登录后台(请及时修改后台密码)

修改User表中,你注册的超级用户的type为3,使得你注册的用户变为超级管理员

部署判题服务器

首先修改配置文件

cd JudgeServer
nano setting.json

修改对应的数据库IP和端口保存退出

pip install mysqlclient
sudo python main.py

部署判题机

首先修改配置文件,setting.json里的东西都要修改为你的ip,其中sftp应配置为你的后端服务器的用户名和密码和ip

cd Judger
nano setting.json
安装步骤
1. sudo apt-get install libseccomp-dev
2. mkdir build && cd build && cmake .. && make && sudo make install
3. cd ..
4. cd JudgerCore
5. sudo python setup.py install
6. pip install paramiko
7. pip install mysqlclient
运行
1. sudo python main.py

爬虫机器人(可选)

主要用于爬取学生的博客和大OJ的做题数

cd CrawlingServer
nano setting.json
# 修改对应的数据库IP和端口保存退出
pip install feedparser
pip install mysqlclient
sudo python main.py

如无意外,部署成功!

全系列文章

全系列文章在此(点我)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值