Skip to content

安装指南

Massimo edited this page Apr 13, 2022 · 12 revisions

安装LAMP环境

WZOJ是一个标准的LAMP应用,所以首先请确保有一个LAMP环境。

要求:PHP版本 >= 7.3.0

如果你不知道如何安装:
Debian
Ubuntu
Arch
Red Hat
...

为WZOJ创建一个空数据库,建议专门创建一个用户。

安装redis缓存系统

WZOJ大量用到redis,所以请安装redis缓存系统并启动服务。
Redis Quick Start

下载

下载最新版本的WZOJ,以下载至/home/www/wzoj为例。

服务器配置

Apache设置

新建Apache配置文件:对于Debian/Ubuntu用户,在/etc/apache2/sites-enabled/目录新建文件,如wzoj.conf

修改/etc/apache2/sites-enabled/wzoj.conf文件为

<VirtualHost *:80>
        ServerAdmin youremail@em.com
        DocumentRoot /home/www/wzoj/public
        ##ServerName servername.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        <Directory "/home/www/wzoj/public">
                Options Indexes FollowSymLinks ExecCGI Includes
                AllowOverride All
                Require all granted
        </Directory>
</VirtualHost>

并且需要开启mod_rewrite, mod_headers模块。
重启apache服务器。

基本配置

使用composer安装第三方库

首先安装composer。然后在/home/www/wzoj执行 composer update (耗时随网络情况变化,可能较长)
国内服务器可以考虑使用 阿里云 Composer 镜像 进行加速。

创建配置文件

/home/www/wzoj执行cp .env.example .env创建配置文件。
执行php artisan key:generate生成随机key。
编辑.env文件,修改以下项:

APP_NAME=网站名称            //网站对外名称,在发送的邮件中等地方显示,可以使用中文
APP_URL=https://sample.com  //网站对外地址,在发送的邮件中等地方显示

APP_DEBUG=false             //关闭调试模式

DB_HOST=127.0.0.1           //数据库服务器地址,默认为本地
DB_DATABASE=wzoj            //数据库名
DB_USERNAME=wzoj            //数据库用户名
DB_PASSWORD=password        //数据库密码

PUSHER_APP_SECRET=secret    //随便改成一个随机的密码

OJ_DATA=/home/judger/data   //题目数据目录,需要有读写权限。
  • 如果你的redis不是本地,同时修改 REDIS_ 开头的选项。
  • 若要使用邮件功能,如重置密码功能,请同时修改 MAIL_ 开头的选项,配置邮箱地址与密码。
  • 请确保 OJ_DATA 指向的目录存在且有读写权限,否则打开某些页面会出错。
  • 对于这里没有提到的其它选项,若你不知道他们的含义,请不要随意修改。

设置目录权限

http服务器需要对运行目录有读写权限,可以通过把http用户设置成owner来实现。
chown -R www-data.www-data /home/www/wzoj
其中www-data为http服务器所使用的用户。

导入数据库

执行php artisan migrate,导入数据库,这将生成表结构并插入某些初始数据。

Websocket

浏览器通过 websockets 与服务器建立连接,以实时更新页面。
你需要修改配置文件,把SOCKET_IO_SERVER修改成服务器的ip地址, 然后在这个服务器上启动 websockets 服务:

php artisan websockets:serve

这个服务需要常驻。
浏览器会通过6001端口与该服务通信,所以请确保你的防火墙没有禁用该端口。
修改配置文件中的SOCKET_IO_PORT选项 不能 修改这个端口。

管理员用户

通过'Default'通道注册一个普通账户(不建议将用户名设为'admin'等),并记下用户id(一般为1).
role_user表中添加一个(user_id = 1, role_id = 1)的项,赋予管理员权限。

安装完成

安装完成后可以执行以下命令以优化性能
php artisan config:cache
php artisan route:cache