feat(docker): host gzip archive downloads

- added config option [mkpkglists] archivedir
    - created by mkpkglists

Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
Kevin Morris 2021-11-10 06:20:22 -08:00
parent abbecf5194
commit 4f7aeafa8d
No known key found for this signature in database
GPG key ID: F7E46DED420788F3
6 changed files with 38 additions and 6 deletions

View file

@ -19,6 +19,7 @@ on the following, right-hand side fields are added to each item.
""" """
import gzip import gzip
import os
import sys import sys
from collections import defaultdict from collections import defaultdict
@ -29,6 +30,9 @@ import orjson
import aurweb.config import aurweb.config
import aurweb.db import aurweb.db
archivedir = aurweb.config.get("mkpkglists", "archivedir")
os.makedirs(archivedir, exist_ok=True)
packagesfile = aurweb.config.get('mkpkglists', 'packagesfile') packagesfile = aurweb.config.get('mkpkglists', 'packagesfile')
packagesmetafile = aurweb.config.get('mkpkglists', 'packagesmetafile') packagesmetafile = aurweb.config.get('mkpkglists', 'packagesmetafile')
packagesmetaextfile = aurweb.config.get('mkpkglists', 'packagesmetaextfile') packagesmetaextfile = aurweb.config.get('mkpkglists', 'packagesmetaextfile')

View file

@ -101,6 +101,7 @@ sync-dbs = core extra community multilib testing community-testing
server = https://mirrors.kernel.org/archlinux/%s/os/x86_64 server = https://mirrors.kernel.org/archlinux/%s/os/x86_64
[mkpkglists] [mkpkglists]
archivedir = /srv/http/aurweb/web/html
packagesfile = /srv/http/aurweb/web/html/packages.gz packagesfile = /srv/http/aurweb/web/html/packages.gz
packagesmetafile = /srv/http/aurweb/web/html/packages-meta-v1.json.gz packagesmetafile = /srv/http/aurweb/web/html/packages-meta-v1.json.gz
packagesmetaextfile = /srv/http/aurweb/web/html/packages-meta-ext-v1.json.gz packagesmetaextfile = /srv/http/aurweb/web/html/packages-meta-ext-v1.json.gz

View file

@ -67,11 +67,12 @@ session_secret = secret
;commit_hash = 1234567 ;commit_hash = 1234567
[mkpkglists] [mkpkglists]
packagesfile = /packages.gz archivedir = /var/lib/aurweb/archives
packagesmetafile = /packages-meta-v1.json.gz packagesfile = /var/lib/aurweb/archives/packages.gz
packagesmetaextfile = /packages-meta-ext-v1.json.gz packagesmetafile = /var/lib/aurweb/archives/packages-meta-v1.json.gz
pkgbasefile = /pkgbase.gz packagesmetaextfile = /var/lib/aurweb/archives/packages-meta-ext-v1.json.gz
userfile = /users.gz pkgbasefile = /var/lib/aurweb/archives/pkgbase.gz
userfile = /var/lib/aurweb/archives/users.gz
[aurblup] [aurblup]
db-path = YOUR_AUR_ROOT/aurblup/ db-path = YOUR_AUR_ROOT/aurblup/

View file

@ -156,6 +156,7 @@ services:
condition: service_started condition: service_started
volumes: volumes:
- mariadb_run:/var/run/mysqld - mariadb_run:/var/run/mysqld
- archives:/var/lib/aurweb/archives
php-fpm: php-fpm:
image: aurweb:latest image: aurweb:latest
@ -180,6 +181,7 @@ services:
condition: service_started condition: service_started
volumes: volumes:
- mariadb_run:/var/run/mysqld - mariadb_run:/var/run/mysqld
- archives:/var/lib/aurweb/archives
ports: ports:
- "19000:9000" - "19000:9000"
@ -236,6 +238,8 @@ services:
condition: service_healthy condition: service_healthy
php-fpm: php-fpm:
condition: service_healthy condition: service_healthy
volumes:
- archives:/var/lib/aurweb/archives
sharness: sharness:
image: aurweb:latest image: aurweb:latest
@ -343,3 +347,4 @@ volumes:
mariadb_data: {} # Share /var/lib/mysql mariadb_data: {} # Share /var/lib/mysql
git_data: {} # Share aurweb/aur.git git_data: {} # Share aurweb/aur.git
smartgit_run: {} smartgit_run: {}
archives: {}

View file

@ -94,7 +94,24 @@ http {
ssl_certificate /etc/ssl/certs/web.cert.pem; ssl_certificate /etc/ssl/certs/web.cert.pem;
ssl_certificate_key /etc/ssl/private/web.key.pem; ssl_certificate_key /etc/ssl/private/web.key.pem;
root /aurweb/web/html; location ~ ^/.*\.gz$ {
# Override mime type to text/plain.
types { text/plain gz; }
default_type text/plain;
# Filesystem location of .gz archives.
root /var/lib/aurweb/archives;
# When we match this block, fix-up trying without a trailing slash.
try_files $uri $uri/ =404;
# Caching headers.
expires max;
add_header Content-Encoding gzip;
add_header Cache-Control public;
add_header Last-Modified "";
add_header ETag "";
}
location / { location / {
try_files $uri @proxy_to_app; try_files $uri @proxy_to_app;

View file

@ -1,6 +1,10 @@
#!/bin/bash #!/bin/bash
set -eou pipefail set -eou pipefail
for archive in packages pkgbase users packages-meta-v1.json packages-meta-ext-v1.json; do
ln -vsf /var/lib/aurweb/archives/${archive}.gz /aurweb/web/html/${archive}.gz
done
# Setup a config for our mysql db. # Setup a config for our mysql db.
cp -vf conf/config.dev conf/config cp -vf conf/config.dev conf/config
sed -i "s;YOUR_AUR_ROOT;$(pwd);g" conf/config sed -i "s;YOUR_AUR_ROOT;$(pwd);g" conf/config