add: mediawiki
This commit is contained in:
parent
c71aa5ebc3
commit
b2e736129a
mediawiki
6
mediawiki/LocalSettings.php
Normal file
6
mediawiki/LocalSettings.php
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
# Paste the contents of the downloaded LocalSettings.php before this line
|
||||
# 将下载的 LocalSettings.php 的内容粘贴到此行之前
|
||||
$wgScriptPath = "";
|
||||
$wgArticlePath = "/$1";
|
||||
$wgResourceBasePath = $wgScriptPath;
|
25
mediawiki/README.md
Normal file
25
mediawiki/README.md
Normal file
@ -0,0 +1,25 @@
|
||||
# MediaWiki
|
||||
|
||||
本配置使用 Nginx 作为反向代理,实现了:
|
||||
* 相对于Apache占用更少的资源
|
||||
* 安全,php 限制 open_basedir
|
||||
* 缓存,基于 Nginx
|
||||
* 压缩,基于 opcache
|
||||
* 伪静态,使用 Nginx 的 rewrite (`/index.php?title=xxx:xxx` -> `/xxx:xxx`)
|
||||
|
||||
首先运行容器(详见 [setup.sh](setup.sh)),按照官方流程下载 `LocalSettings.php` 文件。
|
||||
|
||||
将官方给出的配置文件内容粘贴到我提供的 [`LocalSettings.php`](LocalSettings.php) 的前面(即以下内容放到官方配置文件的后面)。
|
||||
|
||||
```php
|
||||
$wgScriptPath = "";
|
||||
$wgArticlePath = "/$1";
|
||||
$wgResourceBasePath = $wgScriptPath;
|
||||
```
|
||||
|
||||
取消 `# -./LocalSettings.php:/var/www/html/LocalSettings.php` 的注释,重新运行容器。
|
||||
|
||||
```shell
|
||||
docker-compose down
|
||||
docker-compose up -d
|
||||
```
|
26
mediawiki/build/Dockerfile
Normal file
26
mediawiki/build/Dockerfile
Normal file
@ -0,0 +1,26 @@
|
||||
FROM php:fpm
|
||||
|
||||
ENV TZ=Asia/Shanghai
|
||||
RUN echo 'Acquire::Check-Valid-Until "false";' > /etc/apt/apt.conf.d/90nocheckvalid && \
|
||||
echo 'Acquire::Check-Date "false";' >> /etc/apt/apt.conf.d/90nocheckvalid && \
|
||||
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources && \
|
||||
apt-get update && apt-get install -y \
|
||||
libzip-dev \
|
||||
libfreetype6-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
libpng-dev \
|
||||
libicu-dev \
|
||||
zlib1g \
|
||||
git \
|
||||
diffutils \
|
||||
zlib1g-dev && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/* && \
|
||||
rm /etc/apt/apt.conf.d/90nocheckvalid
|
||||
RUN pecl install apcu && \
|
||||
docker-php-ext-enable apcu && \
|
||||
echo "extension=apcu.so" >> /usr/local/etc/php/php.ini && \
|
||||
echo "apc.enable_cli=1" >> /usr/local/etc/php/php.ini && \
|
||||
echo "apc.enable=1" >> /usr/local/etc/php/php.ini && \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg && \
|
||||
docker-php-ext-install -j$(nproc) gd && \
|
||||
docker-php-ext-install intl opcache
|
86
mediawiki/config/mediawiki.conf
Normal file
86
mediawiki/config/mediawiki.conf
Normal file
@ -0,0 +1,86 @@
|
||||
server {
|
||||
listen 80;
|
||||
set $base /var/www/html;
|
||||
set $data /var/www/data;
|
||||
set $php_cgi "mediawiki:9000";
|
||||
root $base;
|
||||
|
||||
resolver 127.0.0.11 ipv6=off;
|
||||
|
||||
# security headers
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
||||
add_header Content-Security-Policy "default-src 'self' http: https: ws: wss: data: blob: 'unsafe-inline' 'unsafe-eval'; frame-ancestors 'self';" always;
|
||||
add_header Permissions-Policy "interest-cohort=()" always;
|
||||
|
||||
# . files
|
||||
location ~ /\.(?!well-known) {
|
||||
deny all;
|
||||
}
|
||||
|
||||
# logging
|
||||
access_log /var/log/nginx/access.log combined buffer=512k flush=1m;
|
||||
error_log /var/log/nginx/error.log warn;
|
||||
|
||||
# index.php
|
||||
index index.php;
|
||||
|
||||
# gzip
|
||||
gzip on;
|
||||
gzip_vary on;
|
||||
gzip_proxied any;
|
||||
gzip_comp_level 6;
|
||||
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;
|
||||
|
||||
# index.php fallback
|
||||
location / {
|
||||
try_files $uri $uri/ @mediawiki;
|
||||
}
|
||||
|
||||
location @mediawiki {
|
||||
rewrite ^/(.*)$ /index.php?title=$1 last;
|
||||
}
|
||||
|
||||
# additional config
|
||||
# favicon.ico
|
||||
location = /favicon.ico {
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
# robots.txt
|
||||
location = /robots.txt {
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
# assets, media
|
||||
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
|
||||
expires 7d;
|
||||
}
|
||||
|
||||
# svg, fonts
|
||||
location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
|
||||
add_header Access-Control-Allow-Origin "*";
|
||||
expires 7d;
|
||||
}
|
||||
|
||||
# handle .php
|
||||
location ~ \.php$ {
|
||||
fastcgi_pass $php_cgi;
|
||||
# 404
|
||||
try_files $fastcgi_script_name =404;
|
||||
|
||||
# default fastcgi_params
|
||||
include fastcgi_params;
|
||||
|
||||
# fastcgi settings
|
||||
fastcgi_index index.php;
|
||||
fastcgi_buffers 8 16k;
|
||||
fastcgi_buffer_size 32k;
|
||||
|
||||
# fastcgi params
|
||||
fastcgi_param DOCUMENT_ROOT $realpath_root;
|
||||
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$base/:$data/:/usr/bin/:/usr/lib/php/:/tmp/";
|
||||
}
|
||||
}
|
41
mediawiki/docker-compose.yml
Normal file
41
mediawiki/docker-compose.yml
Normal file
@ -0,0 +1,41 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
nginx:
|
||||
container_name: mediawiki-nginx
|
||||
image: nginx:latest
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- proxy
|
||||
- mediawiki
|
||||
volumes:
|
||||
- "./config:/etc/nginx/conf.d"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "./html:/var/www/html"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=proxy"
|
||||
- "traefik.http.routers.mediawiki.Rule=Host(`www.wiki.com`)"
|
||||
- "traefik.http.routers.mediawiki.service=mediawiki"
|
||||
- "traefik.http.routers.mediawiki.entrypoints=websecure"
|
||||
- "traefik.http.services.mediawiki.loadBalancer.server.port=80"
|
||||
|
||||
mediawiki:
|
||||
container_name: mediawiki
|
||||
image: luotianyi/mediawiki-fpm:latest
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: build
|
||||
networks:
|
||||
- mediawiki
|
||||
volumes:
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "./html:/var/www/html"
|
||||
- "./data:/var/www/data"
|
||||
# - "./LocalSettings.php:/var/www/html/LocalSettings.php"
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
mediawiki:
|
||||
name: mediawiki
|
7
mediawiki/setup.sh
Normal file
7
mediawiki/setup.sh
Normal file
@ -0,0 +1,7 @@
|
||||
# https://www.mediawiki.org/wiki/Download
|
||||
curl https://releases.wikimedia.org/mediawiki/1.43/mediawiki-1.43.0.zip -o mediawiki.zip
|
||||
unzip mediawiki.zip
|
||||
mv mediawiki-1.43.0 html
|
||||
|
||||
docker-compose build
|
||||
docker-compose up -d
|
Loading…
x
Reference in New Issue
Block a user