一起做OJ-环境搭建
这几天,看到OJ火了起来,尤其是OnlineJudge(QingDaoU)和HUSTOJ。
作为正在花大力研究PHP和Bootstrap的我,看到了,当然不会甘心。
于是,我决定把学到的知识用在编写OJ上。
我选择了腾讯云买的美国VPS,这样不用备案。
首先,我一下这次的大概架构:
用户登录(MySQL储存用户信息)->获取题目(MySQL的"SELECT * FROM ... WHERE 1")->做题(在线解释器,使用MinGW正好符合要求,有需求也可以使用python连接MySQL进行脚本判题)
好吧,我承认话说多了,那么先开始搭建环境吧
一、PHP环境(建议使用PHP7.1)
注意,虽然宝塔面板安装PHP蛮简单,但是fopen要注意不能在配置(php.ini)中出现于disabled_function里,不然会throw一个Error
如果你没有用宝塔面板,也可以自己搭建PHP。
二、MySQL环境(建议使用5.7)
也是没什么好说的,但是千万记住root密码,不然你会后悔的,都是教训啊:-(
三、Apache环境(建议2.4)
但是你用2.2其实没什么大问题,但是可能和PHP的兼容性不太好
现在测试一下你的PHP环境吧
把这些代码复制到index.php里,然后访问localhost试试
<?php
echo '<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>恭喜,站点创建成功!</title>
<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="//cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
<script src="//cdn.bootcss.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container" style="margin-top:9%;">
<div class="jumbotron">
<div class="panel panel-success">
<div class="panel-heading"><h1>恭喜, 站点创建成功!</h1></div>
</div>
<p><h3>站点创建成功,本页面由系统自动生成。</h3></p>
<p><li>本页面在FTP根目录下的index.html</li></p>
<p><li>您可以删除或覆盖本页面</li></p>
<p><li>FTP相关信息,请到软件后台查看</li></p>
<p><li>我们为您提供了完善的数据备份功能,请到后台进行相关设置</li></p>
</div>
</div>
</body>
</html>';
?>
如果有这个:
说明环境搭建成功了
那么,第一大块搞定
但是,下面的第二大块小编也觉得很烧脑
因为,需要引入Python解释器和MinGW的解释器,但是前面的test中发现,Php调用MinGW无法编译,不知道为什么
所以,需要借助外部Python脚本进行编译
因为Python的os.system很可靠,只要python拥有足够权限,他就一定会运行,这个我们下期会重点讲
好吧,这期完了,我们下期再见
一起做OJ-环境搭建的更多相关文章
- 驱动开发 - WDK 调试及 SVN 环境搭建
由于从公司辞职了,所以以前在公司里搭建的驱动开发环境也就 Game Over 了, 同样由于那环境是很久以前搭建的,自己也有很多记不清楚的地方了, 而且其中还是有很多需要注意的地方的,所以在这里顺便做 ...
- 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...
- NLP中的用N-gram语言模型做英语完型填空的环境搭建
本文是对xing_NLP中的用N-gram语言模型做完型填空这样一个NLP项目环境搭建的一个说明,本来想写在README.md中.第一次用github中的wiki,想想尝试一下也不错,然而格式非常的混 ...
- 我用STM32MP1做了个疫情监控平台2—Qt环境搭建
目录 1.嵌入式Qt简介 2.查看开发板Qt库的版本 3.主机搭建Qt环境 4.第一个Qt程序--Hello World 5.一些问题 @ 1.嵌入式Qt简介 Qt 是一个跨平台的应用程序开发框架.使 ...
- eclipse项目环境搭建(做了好多遍,老是忘记,以此文帮助记忆)
今天把eclipse的环境搭建好(不能用myeclipse好忧伤). 要求: 1.在svn上管理项目,要下载svn插件. 2.是web所以要用到tomcat插件. 3.将项目运行起来. 流程: ecl ...
- [Android系列—] 1. Android 开发环境搭建与Hello World
前言 開始之前先熟悉几个名词: SDK -- Software Development Kit, 软件开发工具包.这个词并不陌生, JDK,就是Jave Development Kit,相同对于And ...
- .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...
- rnandroid环境搭建
react-native 环境搭建具体步骤这个大家已经玩烂了,这个主要是记录下来自己做win7系统遇到的坑 1.com.android.ddmlib.installexception 遇到这个问题,在 ...
- springMVC初探--环境搭建和第一个HelloWorld简单项目
注:此篇为学习springMVC时,做的笔记整理. MVC框架要做哪些事情? a,将url映射到java类,或者java类的方法上 b,封装用户提交的数据 c,处理请求->调用相关的业务处理—& ...
随机推荐
- JS Async Callback
AsyncCallback 意义: 异步操作完成时调用的方法 语法1: 构造异步回调对象 AsyncCallback 异步回调对象名asyncCallback = new AsyncCallback( ...
- 【转载】为什么任何随便输入的账号使用SYSDBA权限都能登陆oracle
其实简单点就是检查一下你的机器有没有一个ora_dba用户组,而且你登陆os的用户是否在这个组里,有的话问题的原因就找到了,下面是转的高手的介绍 本文环境配置:Oracle10gR2,Windows ...
- @Html.EditorFor() 用法
@Html.EditorFor()返回一个由表达式表示的对象中的每个属性所对应的input元素,主要是针对强类型,一般这种方式用得多些a.@Html.EditorFor(mode=>mode.N ...
- linux_添加一个普通用户
useradd 用户名 passwd 密码 su 用户名 可以切换用户 exit 返回之前登录的用户 sodu用户 --> 不用告诉普通用户root的密码 可以查看所有的系统文件 包括root下 ...
- mac os 卸载android studio 从新安装遇到的一些问题
http://blog.csdn.net/elonspace/article/details/51800949 google中国论坛 http://www.android-studio.org lin ...
- vue+mui轮播图
mui的轮播图,如果图片是请求来的,直接在html中循环是不会动的. 需要请求完图片之后,在setTimeout方法里,使用slider()方法,这样才会动 而且mui的轮播图,有点坑的,需要重复最后 ...
- (1)There's more to life than being happy
https://www.ted.com/talks/emily_esfahani_smith_there_s_more_to_life_than_being_happy00:12 I used to ...
- Oracle修改数据库的日期
---Oracle数据库更新时间字段数据时的sql语句---格式化时间插入 update t_invite_activityinfo set endtime=to_date('2019-10-30 1 ...
- oracle 操作,偶尔记一下
一.根据更新时间排序 1.插入insert into t_user t (t.user_id,t.user_name,t.create_time,t.update_time)values('10',' ...
- 安卓修改开机logo
这里我们是在ubuntu下进行操作我是用root用户登陆的,首先安装netpbm库 执行:apt-get install netpbm 对于Android系统最开始表现logo是在内核当中,所以首先我 ...