首页 > 其他分享 >DMOJ我的三周目经验贴

DMOJ我的三周目经验贴

时间:2024-09-19 14:15:23浏览次数:7  
标签:经验 https python DMOJ py 三周 install manage dmoj

试了三遍,终于挂载成功了DMOJ,随笔记录

Ubuntu20.04、Ubuntu20.04【WSL】适用

官方提供的开发文档

DMOJ官网

GitHub地址

1.环境配置

apt update
# 大前置
apt install git gcc g++ make python3-dev python3-pip libxml2-dev libxslt1-dev zlib1g-dev gettext curl redis-server
# npm相关,这是官方方式,这里不推荐
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
apt install nodejs

# npm相关 推荐 一定要采用nvm的安装npm,或者记得npm+node==14.19.1,不然ubuntu20下面./make_style.sh会报错[会爆一种语法格式判断错误,if...,如果你也遇到了,那大概是这里的问题,具体原因暂时未知],导致css静态资源无法转换迁移
cd ~
git clone https://github.com/creationix/nvm.git .nvm
cd .nvm
git checkout v0.33.11
执行install.sh安装即可
nvm --version
# 用nvm安装node和npm
nvm install v14.19.1
nvm use 14.19.1
# 验证
node -v
npm -v
# 如果用npm下载其他包慢 更换国内源
npm config set registry https://registry.npm.taobao.org
# 几个sass转换工具[scss->css,目前我是这么理解的]
npm install -g sass postcss-cli postcss autoprefixer

2.数据库

注意修改成你自己密码

官网用的这种,mysql其实也可以

PS:如果开发环境为wsl,而且你win上本来就有mysql了,大概会各种冲突,会有锁之类的问题,这里建议拉一个小型服务器,阿里云/腾讯云的,数据库单独部署。

apt update
# mariadbDB数据库下载
apt install mariadb-server libmysqlclient-dev
sudo mysql
# 创建dmoj数据库
mariadb> CREATE DATABASE dmoj DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
# <mariadb user password> -》 dmoj123.
# 这里注意一下,首先我们登陆了root用户,防止其他数据库暴露,创建了dmoj的子用户,%表示dmoj用户任何主机都能访问,你也可以锁自己IP,密码是dmoj123.
mariadb> GRANT ALL PRIVILEGES ON dmoj.* TO 'dmoj'@'%' IDENTIFIED BY 'dmoj123.';
mariadb> exit

自行下载anaonda3的sh文件,运行安装

创建名为dmojsite的python3.8的虚拟环境,并切换到新环境,如果后面没有说明,所有操作均在此环境下。

3.项目拉取

git clone https://github.com/DMOJ/online-judge.git
cd online-judge
git checkout v4.0.0  # 两种判断服务器方式,1.PyPi 2.docker,只有用1.才用此行命令,个人推荐测试先用PiPy,后面换docker
git submodule init
git submodule update
# 安装python依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 如果下面命令下不了或提示没有,pip装一个pymysql也行
# 官方这个命令不太懂 大概是在下mysql服务?!
pip install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple

python manage.py check

4.项目修改

在dmoj文件夹创建local_settings.py,官方案例:local_settings.py

SECRET_KEY按照上面注释的命令生成并替换
DEBUG正式运行记得关,我们测试可以先开着
注释的ALLOWED_HOST改成['*'],并取消注释
DATABASES密码改成你创建数据库设置的
CELERY的两个设置注释都取消
【一个个人感觉不太重要的:80多行EMAIL6个设置都打开,改成自己邮箱 密码】

5.项目资源迁移[最大事故区]

# 下面这个命令如果均是ok,不报错,算是到一段落了
./make_style.sh
python manage.py collectstatic
python manage.py compilemessages
python manage.py compilejsi18n
python manage.py makemigrations
python manage.py migrate
python manage.py loaddata navbar
python manage.py loaddata language_small
python manage.py loaddata demo
# 创建后台管理员
python manage.py createsuperuser
# 起一下看看,没问题Ctrl+C关闭
python manage.py runserver

6.redis uwsgi supervisord nginx代理部署*

service redis-server start

# 测试后关闭
python manage.py runserver 0.0.0.0:8000

# 起一下等10s,不报错Ctrl+C关闭
python manage.py runbridged

celery -A dmoj_celery worker

# 安装uwsgi
pip install uwsgi
# uwsgi.ini文件官方案例 https://github.com/DMOJ/docs/blob/master/sample_files/uwsgi.ini
# 记得path改成你自己的,前两个是项目路径,第三个python路径,下面是我的,可以借鉴 不要直接copy
# chdir = /mnt/z/Aproject/online-judge
# pythonpath = /mnt/z/Aproject/online-judge
# virtualenv = /home/boy/anaconda3/envs/dmojsite
# 建议在新窗口拉起
uwsgi --ini uwsgi.ini
# 可以查到四个相关进程
ps -ef |grep uwsgi
# 杀死进程,但是上面我没杀掉,应该是杀死瞬间又拉起了新的
# 小问题,
kill -9 id

# 设置主管
apt install supervisor
sudo service supervisor start
# 查看下版本,这里注意最好脱离虚拟环境到base下查看版本,supervisor是装在全局的,
# 有时候他会去python环境下检测有没有此包,如果报错注意一下
supervisord -v
# 三个配置
# 新建三个文件
sudo vim /etc/supervisor/conf.d/site.conf
sudo vim /etc/supervisor/conf.d/bridged.conf
sudo vim /etc/supervisor/conf.d/celery.conf
# 官方案例,同样记得修改内容,改path即可
# https://github.com/DMOJ/docs/blob/master/sample_files/site.conf
# https://github.com/DMOJ/docs/blob/master/sample_files/bridged.conf
# https://github.com/DMOJ/docs/blob/master/sample_files/celery.conf

# 同上如果运行不了 退回base环境
supervisorctl update
supervisorctl status

nginx代理目前个人没有需求,未实验,可以去看官网

7.判断服务器设置PyPi

apt install python3-dev python3-pip build-essential libseccomp-dev
pip install dmoj
# 注意命令输出的runtime内容
dmoj-autoconf

创建一个judge.yml文件,手动创建problems文件夹

# id和key登陆你挂起的django服务,登陆进入管理后台,添加你的判断服务器,记得设置的id和key
# 碎碎念:id最好是judge,我之前用了judge01,一直连不上,换成judge瞬间连上了,痛苦面具,key记得复制全,因为随机生成的有时候会有两个/,
# 我鼠标点击复制了一部分,两个痛苦面具
id: <judge name>
key: <judge authentication key>
problem_storage_root:
  - /mnt/problems
# 看dmoj-autoconf的输出
runtime:
   ...
# 进入管理后端,更改站点8081-》8000 或者vscode搜索下8081,改成8000也行,只需要改一个地方。
# 不然判断服务器连不上 

# 本机测试
dmoj -c judge.yml localhost
# 如果是正式 指定端口 IP
dmoj -c judge.yml -p "$PORT" "$IP"
# PS:如果连接不到,回去检查nginx之前的配置,是否都正常。

后端挂起+判断服务器挂起,打开管理看到判断服务器绿色对勾,测试完毕。

标签:经验,https,python,DMOJ,py,三周,install,manage,dmoj
From: https://www.cnblogs.com/KoiBana/p/18420466

相关文章

  • 【面试经验】2024年9月滴滴后端笔试 java
    比较简单,两题编程。选择题好像是20题,有部分不确定,有C++的几题。题目记不清了,凭印象写一下。编程题第一题充电第一题:n个玩具,m电量,尽可能让一个大的区间内的玩具的电量充满。输出充满电的玩具个数。双指针+滑动窗口。importjava.util.Scanner;publicclassMa......
  • 试用完几十款ETL工具后的经验总结,ETL工具用这三款就足够了
    1.ETL选型前言市面上ETL工具国内外加起来估计得有30种之多,其中近20款工具都花时间试用过,现在把试用后总结出来的经验分享一下,目前很多企业在选择ETL工具时不知道怎么选择适合自己的工具也不可能一款一款的去试用,试用成本非常高,而且不同企业数据量,对数据质量的要求,技术开发人员的......
  • Prompt Engineering实战 AI老兵的15条经验与建议
    Author:Jason豪 编写提示时应清晰准确地传达信息。能够明确描述任务和概念至关重要。要愿意快速迭代,连续多次向模型发送提示并检测结果。优秀的提示工程师能够持续对已待优化prompt反复改进。在设计提示时要考虑边界情况和不寻常的场景。思考你的提示在非典型情况下可能会如......
  • 一张图精通多种搜索算法的选择策略(经验篇)
    在探索数据的海洋中,搜索算法是指引我们找到目标的灯塔。从简单的线性搜索到高效的二分搜索,再到深度优先与广度优先的图搜索,每种算法都以其独特的方式优化着搜索过程。无论是在数组、树结构还是散列表中,正确的搜索算法能显著提升查找效率。本文将带你一探线性搜索、二分搜索、深度优......
  • 十年电商经验分享:从0-1打单品保姆级教程(下)
    接着上一篇《十年电商经验分享:从0-1打单品保姆级教程(上)》,各位觉得有参考意义的商家朋友们可以点赞收藏一下。5、制作sku图片以及sku名称+卖点这里很多商家可能不太注意,这个也是优化转化率最好的一块内容,因为从正常顾客购买流程来看,sku是一个必选的内容,你sku,图片卖点的表......
  • 充电桩定期检测应用经验有哪些?
    充电桩是电动汽车的重要配套设施,其性能和安全直接影响到电动汽车的使用。因此,对充电桩进行定期检测是非常必要的。以下是一些充电桩定期检测的应用经验:定期巡检:充电桩应定期进行巡检,检查其外观是否完好,电缆是否有损伤,插头插座是否松动等。同时,还需要检查充电桩的运行状态,如电流......
  • 全球网安行业缺少350万安全专家? 志愿你别乱填,缺的是专家,不是0经验的牛马
    0x00首先是这个所谓的“高需求”。企业们天天喊着缺人,但当你打开招聘网站,看到的全是“三年经验起步”、“高级专家”。黑人问号?这是在逗我吗?都只想要高级专家,拒绝新手及应届生,没有新手,哪来的专家?难道专家都是(只能)自学成才的?然后各个公司,更愿意把钱花在招聘广告上,而不是员......
  • VS2019远程调试非公网非局域网的远程,经验nice-(下)
    1.远程目标主机上配置VS2019远程调试工具将VS2019远程调试工具拷贝到远程目标主机上。VS2019远程调试工具:(1)从微软官网下载: VisualStudio2022远程工具,问题是,目前只支持VS2022版本的远程工具。对于VS2019的远程工具,则不提供支持。方式(2)从VS2019安装的文件......
  • HVV行动之蓝军经验总结
    ......
  • 【面试经验】京东 算法工程 广告反作弊 一面 凉经
    一面:HR面+技术面,时长大概1小时多点,HR面15-20分钟HR面:略技术面:c/c++代码片段问题:voidfun(char*p){p=(char*)malloc(100);}intmain(){char*str=NULL;fun(str);strcpy(str,"helloworld");return0;}智能指针相关,和引用的区别C......