From b0bfe579c6de2248f751fe7e2890efb3c03710e8 Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Sat, 10 Dec 2022 19:55:21 +0000
Subject: [PATCH] Configure PHP options for noblogs in Ansible not in the
 container

---
 roles/noblogs/tasks/main.yml              |  7 +++++--
 roles/noblogs/templates/99-noblogs.ini.j2 | 21 +++++++++++++++++++++
 services.noblogs.yml                      |  9 +++++++++
 3 files changed, 35 insertions(+), 2 deletions(-)
 create mode 100644 roles/noblogs/templates/99-noblogs.ini.j2

diff --git a/roles/noblogs/tasks/main.yml b/roles/noblogs/tasks/main.yml
index ef2d9089..e34e6cbe 100644
--- a/roles/noblogs/tasks/main.yml
+++ b/roles/noblogs/tasks/main.yml
@@ -8,10 +8,13 @@
 
 - name: Install noblogs config
   template:
-    src: config.json.j2
-    dest: /etc/noblogs/config.json
+    src: "{{ item }}.j2"
+    dest: "/etc/noblogs/{{ item }}"
     group: docker-noblogs
     mode: 0640
+  loop:
+    - config.json
+    - 99-noblogs.ini
 
 - name: Create noblogs data directory
   file:
diff --git a/roles/noblogs/templates/99-noblogs.ini.j2 b/roles/noblogs/templates/99-noblogs.ini.j2
new file mode 100644
index 00000000..e5d7344c
--- /dev/null
+++ b/roles/noblogs/templates/99-noblogs.ini.j2
@@ -0,0 +1,21 @@
+[PHP]
+; Set generous memory limits.
+memory_limit = 256M
+
+; Set upload size limits.
+upload_max_filesize = 50M
+post_max_size = 50M
+
+; Configure the session layer to use all our memcache-session
+; instances, with consistent hashing. We use two copies to allow us to
+; restart a memcache instance without killing all sessions.
+session.cookie_secure = 1
+session.cookie_httponly = 1
+session.save_handler = memcached
+session.save_path = "{% set comma = joiner(',') %}{% for h in services['noblogs'].hosts %}{{ comma() }}{{ h }}.noblogs.{{ domain }}:7208{% endfor %}"
+memcached.sess_consistent_hash = 1
+memcached.sess_binary = 1
+memcached.sess_number_of_replicas = {{ [services['noblogs'].hosts | length, 2] | min }}
+
+; Enable the PHP opcache.
+opcache.enable = 1
diff --git a/services.noblogs.yml b/services.noblogs.yml
index 73d4f146..b5133431 100644
--- a/services.noblogs.yml
+++ b/services.noblogs.yml
@@ -9,6 +9,7 @@ noblogs:
       port: 8082
       volumes:
         - /etc/noblogs: /etc/noblogs
+        - /etc/noblogs/99-noblogs.ini: /etc/php/7.4/fpm/conf.d/99-nooblogs.ini
         - /opt/noblogs/data: /opt/noblogs/www/wp-content/blogs.dir
         - /opt/noblogs/cache: /opt/noblogs/www/wp-content/cache
         - /opt/noblogs/uploads: /opt/noblogs/www/wp-content/uploads
@@ -27,6 +28,14 @@ noblogs:
       env:
         MEM: 1024
         PORT: 7108
+    - name: memcache-sessions
+      image: registry.git.autistici.org/ai3/docker/memcached:master
+      ports:
+        - 7208
+        - 7209
+      env:
+        MEM: 128
+        PORT: 7208
     - name: poster
       image: registry.git.autistici.org/noblogs/noblogs-poster:master
       port: 7107
-- 
GitLab