Docker 安装mediawiki:修订间差异
| 第162行: | 第162行: | ||
- "11211:11211" | - "11211:11211" | ||
#优化 | |||
cat mpm_prefork.conf | |||
# prefork MPM | |||
# StartServers: number of server processes to start | |||
# MinSpareServers: minimum number of server processes which are kept spare | |||
# MaxSpareServers: maximum number of server processes which are kept spare | |||
# MaxRequestWorkers: maximum number of server processes allowed to start | |||
# MaxConnectionsPerChild: maximum number of requests a server process serves | |||
StartServers 1 | |||
MinSpareServers 1 | |||
MaxSpareServers 1 | |||
MaxRequestWorkers 3 | |||
MaxConnectionsPerChild 0 | |||
</pre> | </pre> | ||
2025年6月24日 (二) 02:25的版本
pre
debian docker
apt update #on vps apt install docker.io docker-compose -y sudo usermod -aG docker $USER
** nginx
apt install nginx
#
upstream dockerwiki {
server 10.138.132.61:8080 weight=5;
keepalive 64;
}
server{
listen 80;
server_name wiki.linuxchina.net;
location / {
proxy_pass http://dockerwiki; #或者直接写ip啦
proxy_http_version 1.1;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /var/log/nginx/wiki.linuxaccess.log;
}
有时 80不通 重启机器后好了 应该 是firewalld 导致
https://blog.csdn.net/yinlongfei_love/article/details/81085761 解决 413 Request Entity Too Large
Docker 安装 Memcached
install and config
201910
mariadb 要注意的
密码太简单改了一下 在dockercomps 文件里面改是没用的 要登录root mysql 再用上面 的授权 然后 改 wiki的配置文件 不然 Original exception: [c1fa6e2877bda66dceebe4ab] 2019-10-16 02:25:03: Fatal exception of type "Wikimedia\Rdbms\DBConnectionError"
mariadb for wordpress
用宿主机的内网IP就行了 登录到wordpress 容器 /** MySQL database username */ define( 'DB_USER', 'evan'); /** MySQL database password */ define( 'DB_PASSWORD', 'evan'); /** MySQL hostname */ define( 'DB_HOST', '172.18.0.2:3306'); /** Database Charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8'); mysql -uevan -pevan -h127.0.0.1 用物理机的 内网IP mysql -uevan -pevan -h 10.138.132.61 apt install mariadb-client
docker-compose 安装mediawiki
2025
https://hub.docker.com/_/mediawiki
docker4wiki# cat docker-compose.yml
# MediaWiki with MariaDB
#
# Access via "http://localhost:8080"
# (or "http://$(docker-machine ip):8080" if using docker-machine)
#version: '3'
services:
mediawiki:
image: mediawiki:lts
container_name: mediawiki
restart: always
ports:
- "127.0.0.1:8080:80"
#- 8080:80
links:
- db
- memcached
volumes:
#- mediawiki_data:/data/www/wiki
# After initial setup, download LocalSettings.php to the same directory as
# this yaml and uncomment the following line and use compose to restart
# the mediawiki service
#- ./mediawiki_data/html:/var/www/html
#- ./mediawiki_data/images:/var/www/html/images
- .images:/var/www/html/images
# 注意看官方 文档 ,这里下行是先不打开的,安装mediawiki 后上传了php配置文件才打开,和 docker volume create images
- ./LocalSettings.php:/var/www/html/LocalSettings.php
depends_on:
- db
- memcached
db:
image: mariadb:11.8
container_name: mariadb
restart: always
ports:
- "127.0.0.1:3306:3306"
#- 3306:3306 #上面的写法安全点
environment:
# @see https://phabricator.wikimedia.org/source/mediawiki/browse/master/includes/DefaultSettings.php
# random root pasword 注意
MYSQL_ROOT_PASSWORD: 'evan281FreeBsdrTyt'
MYSQL_DATABASE: my_wiki
MYSQL_USER: evan
#successed root 密码 docker logs id 查看 if random
MYSQL_PASSWORD: 'evanTxxx'
#MYSQL_RANDOM_ROOT_PASSWORD: 'yes' #其实这个更加安全
volumes:
- ./db_data:/var/lib/mysql
# 资源限制(适用于 docker-compose)
deploy:
resources:
limits:
cpus: '0.2'
memory: 200M
memcached:
image: memcached:1.6.38-alpine
container_name: memcached
restart: always
ports:
- "127.0.0.1:11211:11211"
##下面这个试过有问题 会话问题 暂时不用 有空再理
memcached:
image: bitnami/memcached:1.6.38
container_name: memcached
restart: always
environment:
- MEMCACHED_USERNAME=mediawiki
- MEMCACHED_PASSWORD=sen230oolairetpTss
ports:
- "11211:11211"
#优化
cat mpm_prefork.conf
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of requests a server process serves
StartServers 1
MinSpareServers 1
MaxSpareServers 1
MaxRequestWorkers 3
MaxConnectionsPerChild 0
old
# MediaWiki with MariaDB 这里不用再另外安装db了
#
# Access via "http://localhost:8080"
# (or "http://$(docker-machine ip):8080" if using docker-machine)
version: '3'
services:
mediawiki:
image: mediawiki:lts
restart: always
ports:
- 8080:80
links:
- database
volumes:
- /var/www/html/images
# After initial setup, download LocalSettings.php to the same directory as
# this yaml and uncomment the following line and use compose to restart
# the mediawiki service
- ./LocalSettings.php:/var/www/html/LocalSettings.php
database:
image: mariadb
restart: always
ports:
- 3306:3306
environment:
# @see https://phabricator.wikimedia.org/source/mediawiki/browse/master/includes/DefaultSettings.php
MYSQL_DATABASE: wiki
MYSQL_USER: evan
MYSQL_PASSWORD: eva555 这要尽量难一点
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
https://www.mediawiki.org/wiki/MediaWiki-Docker/zh
缓存配置
less LocalSettings.php
#apcu
## Shared memory settings
$wgMainCacheType = CACHE_ACCEL;
$wgMemCachedServers = [];
#memcache 但是登录会有会话问题 有空再处理
memcaced:11211:user:passwod
总结一句话:
APCu 是“最快的本地缓存”,Redis 是“最灵活的共享缓存”。
如果你在部署 MediaWiki、WordPress、Laravel 这类应用,可以搭配使用:
APCu 本地缓存用于加速热点数据;
Redis 用作共享缓存和 session 后端。
wiki configure
web安装过程
Database host:
1.db 用这个地址
links:
- database
2. 192.168.88.52 #反正是内网IP
dbip也可以登录容器 mariadb进去ip add
密码查看用 docker logs msyqlid
多问我一些问题吧
那里还在要求可以填写缓存什么的
编辑者
CodeEditor(需要WikiEditor)
其实皮肤可以只要一个
** 添加定时备份 html目录 没有-v
** 备份目录 备份容器 手工导出为4个
**
安装时是要密码的 然后改为 可以看
# The following permissions were set based on your choice in the installer
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = true;
备份还原
请见这个Mediawiki备份迁移 sql的不好,在不同版本中容易出问题
* crontab 知识点
man 5 crontab
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
* on xps
#!/bin/bash
#01 13 * * 1-5 /home/evan/wikitran
rm -f /home/evan/wiki/wiki.sql
rsync -avz --progress linuxsa.org:/tmp/wiki.sql /home/evan/wiki/wiki.sql
* on vps
cat /data/mon/mybak.sh
#!/bin/bash
#01 13 * * 1-5 /home/evan/wikitran
rm -f /tmp/wiki.sql
mysqldump -uevan -pidfdf44reeBsdrT9J36UHNgyt -h127.0.0.1 wiki >/tmp/wiki.sql
还原
新搞一下mediawiki 导入 sql文件就行了 不要再用下面的这个页面的导出了 太low
mediawiki页面的导出和导入
特殊:所有页面
复制页面列表内容,整理成一行一个页面名称的文本列表
出来就是一行一个的啦
现在看起来 只有 800个文章呢
到 导出页面
把所有文件 复制进去
老是报文件太大 最终把所有文章分为三次,300左右一个, 成功 以后可能要分成4次吧 前缀随便写就行了
php 上传大小
容器里面 apt update ; apt install vim
nginx 出现413 Request Entity Too Large问题的解决方法
在http{}段中加入 client_max_body_size 20m; 20m为允许最大上传的大小
打开php.ini,把 upload_max_filesize 和 post_max_size 修改为20M,然后重启。
/usr/local/etc/php/php.ini-development
/usr/local/etc/php/php.ini-production
post_max_size = 8M
upload_max_filesize = 8M
第二步,要对mediawiki的includes目录中的DefaultSettings.php中的$wgMaxUploadSize、$wgUploadSizeWarning两个参数设置成我们想要的值。$wgUploadSizeWarning的设置不是必须的,而是去除系统的警告
$wgMaxUploadSize = 1024 * 1024 * 1000; # 1000M
导入失败:没有提供跨wiki前缀 我随便写一个就行 ?
wiki学习
Mediawiki LocalSettings.php 参数指南中文版
k8s install mediawiki
grok -->k8s mediawiki step by step or k8s mediawiki
see also
如何在Kubernetes集群中創建Mediawiki的多個實例
mediawiki 更新
https://www.mediawiki.org/wiki/Manual:Upgrading
https://gerrit.wikimedia.org/g/mediawiki/core/%2B/REL1_37/UPGRADE
mediawiki skins皮肤
https://www.mediawiki.org/wiki/Category:All_skins
https://www.mediawiki.org/wiki/Skin:Tweeki
https://www.mediawiki.org/wiki/Skin:Vector/zh
https://www.jianshu.com/p/050920914109
https://tweeki.kollabor.at/wiki/Welcome
扩展
old
db
pre
#在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启: $docker run --restart=always #如果已经启动了则可以使用如下命令: $docker update --restart=always <CONTAINER ID> mysql什么的也可以rpm 但是尽量docker
mariadb
#在sra pi上好象是没有的 docker pull mariadb:latest docker run -p 3307:3306 --restart 策略名称 -v 宿主机数据目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID docker run --name mymariadb -p 3306:3306 --restart always -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=2240881 -d 54514d54a4a5 docker run --name mymariadb -p 3307:3306 --restart always -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=2240881 -d mariadb #同上 开启远程访问用户和密码 echo 'mymariadb 192.168.10.105' >>/etc/hosts mysql -uroot -p2240881 -h 192.168.10.105 -P3307 #连接
mysql
docker pull mysql:5.7 #config and run docker run -p 3307:3306 --restart 策略名称 -v 宿主机数据目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID docker run --name mymysql -p 3306:3306 --restart always -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=2240881 -d 54514d54a4a5 mysql8 docker run --name mymysql8 -e MYSQL_ROOT_PASSWORD=evan2240881 -p3306:3306 -d mysql:8 #开启远程访问 create user 'evan'@'%' identified by 'evan2240881';
Installing and using MariaDB via Docker
wiki
#前提 得开启mysql远程访问 直接登录到mysql 容器里面进去 用一开始运行mysql容器的那个用户和密码,再添加远程用户和密码 docker pull mediawiki docker run --name mymediawiki -p 88:80 --link mymariadb:mysql -d mediawiki #is good docker cp LocalSettings.php 3c0002c21a6a:/var/www/html/LocalSettings.php --net=host #如果是使用mysql docker run --name mymediawiki -p 88:80 --link mymysql:mysql -d mediawiki mediawiki 这个不会自启动 docker run --name mymediawiki --link mymariadb:mysql -d wikimedia/mediawiki #起来 这个感觉不对
#is old docker pull mediawiki #还是指定目录比较好 但是现在 官方的好像不支持 -v了 docker run --restart=always --name mediawiki -p 8080:80 -v /data/mediawiki -d 8d721d068c81 #2018 但是没办法直接数据交互 下面的用了有问题呢 #mysql 填写 192.168.0.10:3307 docker run --name mediawiki -p 8080:80 -v /data/mediawiki:/var/www/html/ -d id #docker run --name mediawiki -p 8080:80 -v /data/mediawiki:/var/www/html/ -d mediawiki docker cp /data/LocalSettings.php mediawiki:/var/www/html/LocalSettings.php 默认上传目录 /var/www/html/images/ #解说 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。 docker run --name mynginx -d nginx:latest #交互 sudo docker exec -it facethink-mediawiki /bin/bash #开机自启动 #在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启: $docker run --restart=always #如果已经启动了则可以使用如下命令: $docker update --restart=always <CONTAINER ID> #上次就是这样解决了重启后nginx问题
mysql
nginx
on docker
no docker
#这个在内网其实可以不用呢
server {
listen 80;
server_name wiki.linuxsa.org;
charset utf-8;
#access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://192.168.50.206:8080;
root /usr/share/nginx/html;
index index.html index.htm;
}
docker cp default.conf nginx:/etc/nginx/conf.d/default.conf
#手工的nginx
[root@localhost conf.d]# cat default.conf
server {
listen 80;
server_name wiki.linuxsa.org;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://192.168.88.52:88;
#root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
}
Memcached
安装过程会提示缓存软件为memcached
除去上面这个原因 以前是我使用mc的原因
情况三:由于网络模型的差异,redis可能会因为CPU计算影响IO调度memcache使用非阻塞IO复用模型,redis也是使用非阻塞IO复用模型。但由于redis还提供一些非KV存储之外的排序,聚合功能,在执行这些功能时,复杂的CPU计算,会阻塞整个IO调度。从这一点上,由于redis提供的功能较多,mc会更快一些。 情况四:由于线程模型的差异,redis难 以利用多核特效提升性能memcache使用多线程,主线程监听,worker子线程接受请求,执行读写,这个过程中,可能存在锁冲突。redis使用单线程,虽无锁冲突,但难以利用多核的特性提升整体吞吐量。从这一点上,mc会快一些。
https://juejin.im/post/5e1db75ee51d4557e632e399
trouble
记得加limit 不然低配置vps hold 不住的 ,不加上 load 动不动就 100+
这行最后的 80记得不要 不然重定向太多次了
proxy_set_header Host $host:80;
server {
listen 80;
server_name blog.linuxchina.net;
return 301 https://$server_name$request_uri;
}
server{
#listen 80;
server_name blog.linuxchina.net;
listen 443 default ssl;
ssl_certificate /etc/letsencrypt/live/blog.linuxchina.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.linuxchina.net/privkey.pem;
location / {
#proxy_pass http://dockerwiki;
proxy_pass http://127.0.0.1:800;
proxy_http_version 1.1;
proxy_set_header Host $host;
#proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /var/log/nginx/wiki.linuxablog.log;
}
https://wiki.linuxsa.org/index.php/
记得https 是可以的 ,不然可以会话问题 你懂的
see also
https://www.mediawiki.org/wiki/Comparison_of_distribution_options
Installing and Using MariaDB via Docker
使用 Docker 搭建你的Wiki(TiddlyWiki)
那些不错的mediawiki插件
树莓派docker搭建lnmp环境