From 81c23bc1035035b3899e0919a9feb398c0c230d6 Mon Sep 17 00:00:00 2001 From: Yi-Ting Shih Date: Sun, 6 Apr 2025 19:05:13 +0800 Subject: [PATCH] Fix(domserver): php being php --- .gitignore | 1 + playbooks/domserver.yml | 6 ++++ playbooks/uninstall.yml | 8 +++++ .../files/config/php/domjudge.conf | 30 +++++++++++++++++++ roles/configure_domserver/tasks/main.yml | 17 +++++++---- .../templates/docker-compose.yml.jinja | 12 ++++---- roles/install_packages/tasks/main.yml | 4 +++ 7 files changed, 66 insertions(+), 12 deletions(-) create mode 100644 .gitignore create mode 100644 playbooks/domserver.yml create mode 100644 playbooks/uninstall.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c3d2f84 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +group_vars/*/secret.yml diff --git a/playbooks/domserver.yml b/playbooks/domserver.yml new file mode 100644 index 0000000..3a1ce04 --- /dev/null +++ b/playbooks/domserver.yml @@ -0,0 +1,6 @@ +--- +- name: Install domserver + hosts: domserver + roles: + - role: install_packages + - role: configure_domserver diff --git a/playbooks/uninstall.yml b/playbooks/uninstall.yml new file mode 100644 index 0000000..9a16bd6 --- /dev/null +++ b/playbooks/uninstall.yml @@ -0,0 +1,8 @@ +--- +- name: Uninstall domserver + hosts: domserver + tasks: + - name: Remove docker directory + ansible.builtin.file: + path: "{{ domjudge_base_dir }}" + state: absent diff --git a/roles/configure_domserver/files/config/php/domjudge.conf b/roles/configure_domserver/files/config/php/domjudge.conf index 1ecc664..e202397 100644 --- a/roles/configure_domserver/files/config/php/domjudge.conf +++ b/roles/configure_domserver/files/config/php/domjudge.conf @@ -1,5 +1,35 @@ +; Generated from 'domjudge-fpm.conf.in' on Sat Mar 15 17:12:25 UTC 2025. + +; PHP-FPM configuration for DOMjudge + +[domjudge] +user = www-data +group = www-data + +listen = /var/run/php-fpm-domjudge.sock +listen.owner = www-data +listen.group = www-data +listen.mode = 0660 + +pm = static +pm.max_children = 40 +pm.max_requests = 5000 +pm.status_path = /fpm_status + +request_slowlog_timeout = 10s +slowlog = /var/log/php-fpm-domjudge.log.slow + +php_flag[display_errors] = off +php_admin_flag[log_errors] = on +php_admin_value[error_log] = /var/log/fpm-php.domjudge.log + ; Set these three to be at least the size of your largest testcase and ; largest expected program output. php_admin_value[memory_limit] = 4096M php_admin_value[upload_max_filesize] = 4096M php_admin_value[post_max_size] = 4096M +; This must be strictly larger than the configured max number of source +; files a team can submit. +php_admin_value[max_file_uploads] = 101 + +php_admin_value[date.timezone] = Asia/Taipei diff --git a/roles/configure_domserver/tasks/main.yml b/roles/configure_domserver/tasks/main.yml index eb763da..4b45b28 100644 --- a/roles/configure_domserver/tasks/main.yml +++ b/roles/configure_domserver/tasks/main.yml @@ -3,9 +3,9 @@ ansible.builtin.file: path: "{{ domjudge_base_dir }}" state: directory - mode: '0755' + mode: '0750' owner: root - group: root + group: docker - name: Install domjudge docker compose notify: - Restart domjudge docker compose @@ -20,15 +20,17 @@ - name: Install mysql config ansible.builtin.copy: src: config/mysql - dest: "{{ domjudge_base_dir }}/config/mysql" - mode: '0755' + dest: "{{ domjudge_base_dir }}/config" + mode: '0644' + directory_mode: '0755' owner: root group: root - name: Install domserver php config ansible.builtin.copy: src: config/php - dest: "{{ domjudge_base_dir }}/config/php" - mode: '0755' + dest: "{{ domjudge_base_dir }}/config" + mode: '0644' + directory_mode: '0755' owner: root group: root - name: Enable and start docker @@ -36,3 +38,6 @@ name: docker.service state: started enabled: true +- name: Run docker compose up + community.docker.docker_compose_v2: + project_src: "{{ domjudge_base_dir }}" diff --git a/roles/configure_domserver/templates/docker-compose.yml.jinja b/roles/configure_domserver/templates/docker-compose.yml.jinja index d892302..2384dd9 100644 --- a/roles/configure_domserver/templates/docker-compose.yml.jinja +++ b/roles/configure_domserver/templates/docker-compose.yml.jinja @@ -11,11 +11,7 @@ services: - "./data/mariadb:/var/lib/mysql" - "./config/mysql:/etc/mysql/conf.d:ro" domserver: - build: - context: . - dockerfile_inline: | - FROM domjudge/domserver:{{ domserver_version }} - COPY ./config/php/domjudge.conf /etc/php/8.2/fpm/pool.d/domjudge.conf + image: domjudge/domserver:{{ domserver_version }} environment: MYSQL_HOST: mariadb MYSQL_USER: domjudge @@ -24,5 +20,9 @@ services: MYSQL_ROOT_PASSWORD: "{{ mysql_root_password }}" CONTAINER_TIMEZONE: Asia/Taipei restart: always + volumes: + - "./config/php/domjudge.conf:/etc/php/8.2/fpm/pool.d/domjudge.conf" + depends_on: + - mariadb ports: - - "8080:80" + - "127.0.0.1:8080:80" diff --git a/roles/install_packages/tasks/main.yml b/roles/install_packages/tasks/main.yml index 20e1355..8aaf825 100644 --- a/roles/install_packages/tasks/main.yml +++ b/roles/install_packages/tasks/main.yml @@ -6,4 +6,8 @@ community.general.pacman: pkg: - docker + - docker-compose + - docker-buildx notify: Upgrade packages +- name: Flush handlers + ansible.builtin.meta: flush_handlers