Docker 安装mediawiki

来自linux中国网wiki
跳到导航 跳到搜索

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

# 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
    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'


wiki configure

web安装过程 

Database host:

192.168.88.52 #反正是内网IP
 dbip也可以登录容器 mariadb进去ip add


多问我一些问题吧
 那里还在要求可以填写缓存什么的

编辑者
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;

备份还原

* 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 参数指南中文版

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

Docker使用MariaDB

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

Docker mysql

nginx

on docker

Docker_nginx 域名配置

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 
[[email protected] 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;
    #}
}


Docker nginx

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


Docker 安装 Memcached

trouble

mysql8 err

[df278b0f908ad5e5f2653f4e] /mw-config/index.php?page=Install Wikimedia\Rdbms\DBQueryError from line 1506 of /var/www/html/includes/libs/rdbms/database/Database.php: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading? 
Query: CREATE DATABASE `my_wiki`CHARACTER SET utf8
Function: MysqlInstaller::setupDatabase
Error: 1044 Access denied for user 'evan'@'%' to database 'my_wiki' (192.168.88.21)
Backtrace:

#0 /var/www/html/includes/libs/rdbms/database/Database.php(1476): Wikimedia\Rdbms\Database->makeQueryException(string, integer, string, string)
#1 /var/www/html/includes/libs/rdbms/database/Database.php(1236): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#2 /var/www/html/includes/installer/MysqlInstaller.php(491): Wikimedia\Rdbms\Database->query(string, string)
#3 /var/www/html/includes/installer/Installer.php(1601): MysqlInstaller->setupDatabase(MysqlInstaller)
#4 /var/www/html/includes/installer/WebInstallerInstall.php(44): Installer->performInstallation(array, array)
#5 /var/www/html/includes/installer/WebInstaller.php(272): WebInstallerInstall->execute()
#6 /var/www/html/mw-config/index.php(79): WebInstaller->execute(array)
#7 /var/www/html/mw-config/index.php(38): wfInstallerMain()
#8 {main}

see also

https://www.mediawiki.org/wiki/Comparison_of_distribution_options

good使用Docker部署MediaWiki

docker搭建mediawiki

使用 Docker 搭建你的Wiki(TiddlyWiki)

Docker使用MariaDB



那些不错的mediawiki插件 树莓派docker搭建lnmp环境

使用 Docker 搭建你的Wiki(MediaWiki)

Docker for mediawiki

https://hub.docker.com/_/mediawiki/

使用 Docker 部署 MediaWiki

docker安装mediawiki教程

使用 Docker 部署 MediaWiki

Docker 安装 Memcached

Docker 实践 3:fig 搭建 mediawiki