(二)OJ的主要文件

来源:http://www.cnblogs.com/OMG-By/archive/2016/10/24/5992239.html
-Advertisement-
Play Games

OJ搭建好了後,我們要熟悉一下OJ項目下的文件及文件夾。 首先,安裝好的OJ是在目錄var/www/html下。 html下的php文件 這些php文件都是些主要跳轉頁面。 admin文件夾 登錄管理員賬號後管理的管理界面 bootstrap文件夾 css樣式和圖片,如果要修改某些頁面的小地方請到w ...


OJ搭建好了後,我們要熟悉一下OJ項目下的文件及文件夾。

首先,安裝好的OJ是在目錄var/www/html下。

html下的php文件

  這些php文件都是些主要跳轉頁面。

admin文件夾

  登錄管理員賬號後管理的管理界面

bootstrap文件夾

  css樣式和圖片,如果要修改某些頁面的小地方請到www\html\bootstrap\css\bootstrap裡面去找到對應的css修改即可。如果要大方面的修改,建議還是自己寫個css文件要好。

include文件夾

  公共的配置文件所在文件夾(學過php的應該都會知道的吧- -);

  這裡主要是有一個web使用的配置文件db_info.inc.php

  主要內容如下:

static $DB_HOST="localhost"; 資料庫的伺服器地址
static $DB_NAME="jol"; 資料庫名
static $DB_USER="root"; 資料庫用戶名
static $DB_PASS="root"; 資料庫密碼
// connect db 
static $OJ_NAME="HUSTOJ"; OJ的名字,將取代頁面標題等位置HUSTOJ字樣。
static $OJ_HOME="./"; OJ的首頁地址
static $OJ_ADMIN="root@localhost"; 管理員email
static $OJ_DATA="/home/judge/data"; 測試數據所在目錄,實際位置。
static $OJ_BBS="discuss";//"bbs" 論壇的形式,discuss為自帶的簡單論壇,bbs為外掛論壇,參考bbs.php代碼。
static $OJ_ONLINE=false; 是否使用線上監控,需要消耗一定的記憶體和計算,因此如果併發大建議關閉
static $OJ_LANG="cn"; 預設的語言,中文為cn
static $OJ_SIM=true; 是否顯示相似度檢測的結果。
static $OJ_DICT=false; 是否啟用線上英字典
static $OJ_LANGMASK=1008; //1mC 2mCPP 4mPascal 8mJava 16mRuby 32mBash 1008 for security reason to mask all other language 用掩碼表示的OJ接受的提交語言,可以被比賽設定覆蓋。
static $OJ_EDITE_AREA=true;// 是否啟用高亮語法顯示的提交界面,可以線上編程,無須IDE。
static $OJ_AUTO_SHARE=false;//true: 自動分享代碼,啟用的話,做出一道題就可以在該題的Status中看其他人的答案。
static $OJ_CSS="hoj.css"; 預設的css,可以選擇dark.css和gcode.css,具有有限的界面制定效果。
static $OJ_SAE=false; //是否是在新浪的雲平臺運行web部分
static $OJ_VCODE=true; 是否啟用圖形登錄、註冊驗證碼。
static $OJ_APPENDCODE=false; 是否啟用自動添加代碼,啟用的話,提交時會參考$OJ_DATA對應目錄里是否有append.c一類的文件,有的話會把其中代碼附加到對應語言的答案之後,巧妙使用可以指定main函數而要求學生編寫main部分調用的函數。
static $OJ_MEMCACHE=false;是否使用memcache作為頁面緩存,如果不啟用則用/cache目錄
static $OJ_MEMSERVER="127.0.0.1"; memcached的伺服器地址
static $OJ_MEMPORT=11211; memcached的埠
static $OJ_RANK_LOCK_PERCENT=0; //比賽封榜時間的比率,如5小時比賽設為0.2則最後1小時封榜。
static $OJ_SHOW_DIFF=false; //顯示WrongAnswer時的對比
複製代碼

 lang文件夾

  語言設置文件夾

template文件夾

  OJ主題文件夾,裡面的一個文件夾對應的一個不同的風格主題。預設使用的是bs主題。

這裡另外要提一下的就是hustoj還有一個core的配置文件judge.conf,預設位置/home/judge/etc

註意core沒有識別引號和註釋的能力,所以不要自行增加任何引號或註釋,否則可能影響judged啟動

OJ_HOST_NAME=127.0.0.1 如果用mysql連接讀取資料庫,資料庫的主機地址
OJ_USER_NAME=root 資料庫帳號
OJ_PASSWORD=root 資料庫密碼
OJ_DB_NAME=jol 資料庫名稱
OJ_PORT_NUMBER=3306 資料庫埠
OJ_RUNNING=4 judged會啟動judge_client判題,這裡規定最多同時運行幾個judge_client
OJ_SLEEP_TIME=5 judged通過輪詢資料庫發現新任務,輪詢間隔的休息時間,單位秒
OJ_TOTAL=1 老式併發處理中總的judged數量
OJ_MOD=0 老式併發處理中,本judged負責處理solution_id按照TOTAL取模後餘數為幾的任務。
OJ_JAVA_TIME_BONUS=2 Java等虛擬機語言獲得的額外運行時間。
OJ_JAVA_MEMORY_BONUS=512 Java等虛擬機語言獲得的額外記憶體。
OJ_SIM_ENABLE=0 是否使用sim進行代碼相似度的檢測
OJ_HTTP_JUDGE=0 是否使用HTTP方式連接資料庫,如果啟用,則前面的HOST_NAME等設置忽略。
OJ_HTTP_BASEURL=http://127.0.0.1/JudgeOnline 使用HTTP方式連接資料庫的基礎地址,就是OJ的首頁地址。
OJ_HTTP_USERNAME=admin 使用HTTP方式所用的用戶帳號(HTTP_JUDGE許可權),該帳號登錄時不能啟用VCODE圖形驗證碼,但可以登錄成功後啟用。
OJ_HTTP_PASSWORD=admin 密碼
OJ_OI_MODE=0 是否啟用OI模式,即無論是否出錯都繼續判剩餘的數據,在ACM比賽中一旦出錯就停止運行。
OJ_SHM_RUN=0 是否使用/dev/shm的共用記憶體虛擬磁碟來運行答案,如果啟用能提高判題速度,但需要較多記憶體。
OJ_USE_MAX_TIME=1 是否使用所有測試數據中最大的運行時間作為最後運行時間,如果不啟用則以所有測試數據的總時間作為超時判斷依據。
OJ_LANG_SET=0,1,2,3,4 #判哪些語言的題目

如果是判題的時候有錯就得來看這裡。我同學在和我合作的時候就更改了資料庫用戶,我還花了5大洋進了hustoj作者大神的群。別人一句話就解決了O_o

 

 

若無伺服器且訪問過多的可以建立分散式判題系統

資料庫中

grant all privileges on jol.* to 'judge'@'%' identified by 'judge_pass' with grant option;

 

檢查/etc/mysql/my.cnf 確保

bind-address        = 0.0.0.0

高負載的情況下最好設置更多的連接數。

max_connections = 512

 

其次,配置各web程式連接到資料庫。
修改include/db_info.inc.php

static  $DB_HOST="資料庫伺服器ip";
static  $DB_NAME="jol";
static  $DB_USER="judge";
static  $DB_PASS="judge_pass";

 

第三,配置各判題程式連接到資料庫,分配任務。

複製代碼
OJ_HOST_NAME=資料庫伺服器ip
OJ_USER_NAME=judge
OJ_PASSWORD=judge_pass
OJ_DB_NAME=jol
...
OJ_TOTAL=判題機總數
OJ_MOD=本機編號,從0開始
...
複製代碼

 

兩台機器都裝

sudo apt-get install ssh

 

第四,複製測試數據目錄到各判題機。


從主機向判題機複製

scp -r /home/judge/data  root@判題機ip:/home/judge/

或用同步命令。

rsync -vzrtopg --progress --delete /home/judge/data root@判題機ip:/home/judge/

判題機從主機複製

scp -r root@主機ip:/home/judge/data  /home/judge/

或用同步命令。

rsync -vzrtopg --progress --delete root@主機ip:/home/judge/data /home/judge/

 

重啟mysql

sudo /etc/init.d/mysql restart

重啟Apache

sudo /etc/init.d/apache2 restart

重啟judge

sudo pkill judged&&sudo judged

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言: 我們在做自然語言學習的過程中使用Python進行編程。是用解析器的方式確實有些麻煩。在這裡給大家推薦一款集成開發環境IDE可以很方便的對Python進行項目管理,代碼自動提示,運行調試等。 簡介: 這裡不做其它IDE的推薦,直接推薦pycharm。它是大名頂頂的JetBrains公司出品的基 ...
  • 來源: POJ 註意: 總時間限制: 1000ms 記憶體限制: 65536kB 描述 魔獸世界的西面是紅魔軍的司令部,東面是藍魔軍的司令部。兩個司令部之間是依次排列的若幹城市。 紅司令部,City 1,City 2,……,City n,藍司令部 兩軍的司令部都會製造武士。武士一共有 dragon 、 ...
  • 關於結構體的詳細分析 只定義結構體 是結構體的名字 定義結構體變數 定義結構體並同時定義結構體變數 關於指針的詳細分析 定義指針變數: 定義指針的指針變數: 賦初值: 關於 和`int p`區別: 如果是c,我推薦 這樣的寫法因為變數定義需要放在函數開始的地方. 如果是c++,我推薦 分行寫並初始化 ...
  • 程式名稱: 選課系統 角色:學校、學員、課程、講師要求:1. 創建北京、上海 2 所學校2. 創建linux , python , go 3個課程 , linux\py 在北京開, go 在上海開3. 課程包含,周期,價格,通過學校創建課程 4. 通過學校創建班級, 班級關聯課程、講師5. 創建學員 ...
  • 一、java提供了三種ClassLoader對Class進行載入: 1.BootStrap ClassLoader:稱為啟動類載入器,是Java類載入層次中最頂層的類載入器,負責載入JDK中的核心類庫,如:rt.jar、resources.jar、charsets.jar等,可通過如下程式獲得該類加 ...
  • 20161021問題解析請點擊今日問題下方的“【Java每日一題】20161024”查看 今日問題: 請問主程式輸出結果是?(點擊以下“【Java每日一題】20161024”查看20161021問題解析) 題目原發佈於公眾號、簡書:【Java每日一題】20161024,【Java每日一題】20161 ...
  • 當比較簡單類型時(如String int float bool),判斷的是"相等 && 類型一樣" 比較對象時,判斷的是"是否指向同一個對象" ...
  • 深度優先搜索 # Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...