(二)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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...