当前位置: 首页 > news >正文

无服务器oj部署

何绑定域名至cloudflare可以参考官网的说明

1.配置本地环境
1.下载项目:
git clone https://github.com/wanwusangzhigit/eoj.git
cd eoj
2.配置本地环境
cd frontend
npm i
cd …
cd backend
npm i
cd …
3.全局安装cloudflare cli并登录
npm i -g wrangler
wrangler login
2.部署前的准备
1.创建 Cloudflare D1 数据库
wrangler d1 create oj-database
执行后会输出 database_id,记录下来。

2.创建 GitHub OAuth App(无需Github授权登录的无需配置)
前往 GitHub Developer Settings 创建 OAuth App:

字段 值
Application name OJ System
Homepage URL https://你的域名
Authorization callback URL https://你的域名/api/v1/auth/github/callback
记录 Client ID 和 Client Secret。

3.创建CPOAUTH APP(无需CPOAUTH授权登录的无需配置)
前往cpoauth

CALLBACK URL:https://你的域名/api/v1/auth/cpoauth/callback

4.前往cloudflare创建workers(在构建下的workers和pages栏中)
创建workers,命名oj-backend,并在域中绑定域名

5.前往github创建评测仓库
在 GitHub 创建私有仓库(如 your-username/oj-judge)
将judge-repo文件夹下的文件上传至仓库
在仓库 Settings > Secrets and variables > Actions 中添加:
Secret 值
WORKER_API Worker 完整 URL(如 https://oj.your-domain.com)
CALLBACK_SECRET 随机生成并记录
6.创建github token
前往github,创建tokens(classic),并记录(至少需要代码读写,github actions读写,github workflow读写等权限)

7.配置wrangler.toml
编辑 backend/wrangler.toml,填入你的配置:

name = “oj-backend”
main = “src/index.ts”
compatibility_date = “2024-01-01”
account_id = “你的 Cloudflare Account ID”

[[d1_databases]]
binding = “DB”
database_name = “oj-database”
database_id = “上一步获取的 database_id”

[assets]
directory = “./public”
binding = “ASSETS”
not_found_handling = “single-page-application”

[vars]
GITHUB_CLIENT_ID = “你的 GitHub OAuth Client ID”
GITHUB_CLIENT_SECRET = “你的 GitHub OAuth Client Secret”
CPOAUTH_CLIENT_ID = “你的 CpOAuth Client ID”
CPOAUTH_CLIENT_SECRET = “你的 CpOAuth Client Secret”
JWT_SECRET = “用 openssl rand -base64 32 生成的密钥”
CALLBACK_SECRET = “你记录的CALLBACK_SECRET”
GITHUB_TOKEN = “你的 GitHub Token(需 repo 权限,用于触发评测)”
JUDGE_REPO = “your-username/oj-judge”
FRONTEND_URL = “https://你的域名”
REGISTRATION_OPEN = “true”
3.部署项目
1.编译数据库
cd backend
npx wrangler d1 migrations apply oj-database --remote
cd …
2.构建前端
cd frontend
npm run build:site
cd …
3.部署后端
cd backend
npx wrangler deploy
至此部署完成!

4.部署后的工作
1.你需要前往你的oj创建账户

2.访问https://你的域名/__seed初始化数据库并将第一位注册用户设置为超级管理员。

站点设置(管理页面)
部署后,管理员可在后台 站点设置 标签页配置:

设置项 说明 默认值
开启注册(后端wrangler.toml配置) 关闭后新用户无法注册 开启
强制填写邮箱(网站设置) 注册时邮箱为必填项 关闭
邮箱后缀限制(网站设置) 允许的邮箱后缀(逗号分隔),留空不限制 空
站点自定义(前端config.yaml设置)
编辑 frontend/config.yaml:

site:
name: “My OJ” # 站点名称
short_name: “MyOJ” # 站点简称
description: “My Online Judge”
icon: “default” # “default” 使用内置图标,或填入图标 URL
favicon: “/favicon.svg”

footer:
enabled: true
text: “” # 自定义页脚文本(支持 HTML),为空则显示 © 年份 站点名
links: # 页脚链接
- name: “GitHub”
url: “https://github.com/your-org”

login:
hero_title: “” # 登录页大标题,为空使用默认
hero_subtitle: “” # 登录页副标题,为空使用默认
show_github: true # 是否显示 GitHub 登录按钮
show_cpoauth: true # 是否显示 CpOAuth 登录按钮

home:
title: “” # 首页标题,为空使用默认

http://www.cnnetsun.cn/news/3315480.html

相关文章:

  • 终极泰坦之旅物品管理神器:TQVaultAE 5大核心功能彻底告别背包烦恼
  • SQL HAVING与Pandas GroupBy深度对比:从LeetCode 5到大数据实战
  • Unity可视化编程:基于Playmaker与有限状态机的游戏逻辑设计实战
  • 7天成为斗地主高手?DouZero AI智能辅助让你的游戏决策更聪明
  • kspack-c实战案例:如何解决结构化数据处理中的常见难题
  • Unity外部库配置全攻略:从UPM集成到原生插件避坑指南
  • DeepSeek英文翻译能力突然下降?内部日志曝光:Transformer解码器第3层缓存污染导致术语一致性断裂(附热修复patch)
  • WindowResizer终极指南:解决Windows窗口尺寸限制的完整方案
  • LibTV 3D导演台:AI视频生成的可控工作流实践指南
  • Unity NavMesh AI优化:从基础寻路到智能追击的实战指南
  • Seedream 5.0 Pro多模态AI:复杂信息自动可视化与精准编辑技术解析
  • 二级域名分发+备案域名租赁系统(含会员分级与金币计费)
  • 终极解决方案:免费Windows窗口强制调整工具WindowResizer完整指南
  • 如何构建智能直播录制系统:StreamCap多平台自动化录制实战指南
  • ICD编码标准化工具:将临床病历自动转为生信可分析的结构化表型
  • Midjourney V7新特性全解读:相比V6到底强在哪?
  • Ansys Speos 3D Texture 2023 R1 实战:5步完成车灯微结构光学仿真与VLA动态验证
  • 端到端世界模型如何重构自动驾驶规控工程师能力体系
  • UE5 MetaHuman服装绑定全攻略:解决穿模与物理模拟难题
  • TS2007FC与PIC18F86J11在嵌入式音频系统中的高效应用
  • 基于ADS131M02与MKV42F128VLH16的高精度ADC系统设计
  • 如何用SMUDebugTool在30分钟内深度掌控AMD Ryzen处理器?终极指南揭秘
  • Pepperl+Fuchs ICE1本安隔离器PROFIBUS组态包(含V2.32/V2.33双版GSDML文件及三款标准图标)
  • Unity网络通信进阶:Best HTTP (Pro) 核心功能与实战优化指南
  • MATLAB一键运行倒立摆强化学习仿真:自动绘角度与位移响应曲线
  • STM32H743 + MO395Q 以太网UDP通信工程包:含可烧录hex与完整HAL驱动代码
  • AD5593R与MK60DN512VLQ10的硬件协同设计与优化
  • Matlab实现:传统MUSIC与四阶累积量MUSIC的DOA估计对比演示
  • Translumo终极指南:3步掌握专业级实时屏幕翻译工具
  • Linux零拷贝技术:sendfile系统调用原理与性能优化实践