Skip to content

Installation

Khanh Nguyen edited this page Aug 11, 2021 · 4 revisions

Hướng dẫn cài đặt

Guide này hướng dẫn cài OJ trên hệ điều hành Linux. Nếu cần cài đặt trên hệ điều hành Windows, hãy sử dụng WSL, Virtual Machine hoặc Docker.

Cài prerequisites

(Sử dụng sudo nếu cần thiết)

$ apt update
$ apt install git gcc g++ make python3-dev python3-pip libxml2-dev libxslt1-dev zlib1g-dev gettext curl redis-server
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ apt install nodejs
$ npm install -g sass postcss-cli postcss autoprefixer

Tạo database

Tại đây chúng ta sẽ dùng MariaDB. OJ hiện tại mới chỉ được test dùng MySQL và không đảm bảo hoạt động với các loại db khác. Hãy truy cập trang web của MariaDB và làm theo hướng dẫn, hoặc dùng các lệnh sau:

(Sử dụng sudo nếu cần thiết)

$ apt update
$ apt install mariadb-server libmysqlclient-dev

Sau đó bạn sẽ phải tạo mật khẩu cho MariaDB.

(Note: Có thể dùng sudo để bypass mật khẩu MariaDB)

Tiếp thep, chúng ta sẽ setup database. Ta sẽ dùng password vừa được set ở bước trước.

(Sử dụng sudo nếu cần thiết)

$ mysql -uroot -p
mariadb> CREATE DATABASE dmoj DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
mariadb> GRANT ALL PRIVILEGES ON dmoj.* to 'dmoj'@'localhost' IDENTIFIED BY '<password>';
mariadb> exit

Cài prerequisites (part 2)

Bước đầu tiên cần phải làm là tạo một virtual environment cho OJ. Trong guide này, ta sẽ sử dụng venv để quản lý môi trường.

Ta sẽ tạo một virtual environment tên là vnojsite (tên không quan trọng), và sử dụng nó:

$ python3 -m venv vnojsite
$ . vnojsite/bin/activate

Sau đoạn lệnh trên, sẽ có một xâu (vnojsite) được thêm vào shell.

Tiếp theo, chúng ta sẽ fetch code.

(vnojsite) $ git clone https://github.com/VNOI-Admin/OJ.git (vnojsite) $ cd site (vnojsite) $ git checkout v2.1.0 # only if planning to install a judge from PyPI, otherwise skip this step (vnojsite) $ git submodule init (vnojsite) $ git submodule update


Installation

Check out the install documentation at docs.dmoj.ca. Almost all installation steps are the same as the docs, there is one minor change: clone this repo instead of dmoj repo.

Additional step in installation:

  • You have to define DMOJ_PROBLEM_DATA_ROOT in local_settings.py, this is path to your problems tests folder.
  • Define DISCORD_WEBHOOK (the URL of your webhook), SITE_FULL_URL (The url of your site.) in local_settings.py if you want notification on discord if there is a new comment or a new ticket on the site. #85
  • Considering disabling the Full-text search, please check this issue for more information.
  • To sync the caching of judge server and site, change cache framework (CACHES) to memcached or redis instead of the default (local-memory caching).
  • The "home button" the admin dashboard (/admin) will redirect to localhost:8081 if you use python3 manage.py loaddata demo, there are 2 ways to fix it:
    1. You can change that in demo.json
    2. You can go to the admin page, scroll down to find the Sites settings, and change localhost:8081 to your domain.