From 45bc22b56f28029bfd9bf8e868e5b97780d1d906 Mon Sep 17 00:00:00 2001 From: okxlin Date: Tue, 5 Nov 2024 01:37:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0mediawiki=E5=88=B0?= =?UTF-8?q?=E5=88=97=E8=A1=A8#1961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mediawiki/1.42.3/.env.sample | 6 + apps/mediawiki/1.42.3/data.yml | 38 ++++ apps/mediawiki/1.42.3/data/LocalSettings.php | 172 +++++++++++++++++++ apps/mediawiki/1.42.3/data/data/.gitkeep | 0 apps/mediawiki/1.42.3/data/images/.gitkeep | 0 apps/mediawiki/1.42.3/docker-compose.yml | 20 +++ apps/mediawiki/1.42.3/scripts/init.sh | 3 + apps/mediawiki/README.md | 25 +++ apps/mediawiki/data.yml | 19 ++ apps/mediawiki/latest/.env.sample | 6 + apps/mediawiki/latest/data.yml | 38 ++++ apps/mediawiki/latest/data/LocalSettings.php | 172 +++++++++++++++++++ apps/mediawiki/latest/data/data/.gitkeep | 0 apps/mediawiki/latest/data/images/.gitkeep | 0 apps/mediawiki/latest/docker-compose.yml | 20 +++ apps/mediawiki/latest/scripts/init.sh | 3 + apps/mediawiki/logo.png | Bin 0 -> 7424 bytes 17 files changed, 522 insertions(+) create mode 100644 apps/mediawiki/1.42.3/.env.sample create mode 100644 apps/mediawiki/1.42.3/data.yml create mode 100644 apps/mediawiki/1.42.3/data/LocalSettings.php create mode 100644 apps/mediawiki/1.42.3/data/data/.gitkeep create mode 100644 apps/mediawiki/1.42.3/data/images/.gitkeep create mode 100644 apps/mediawiki/1.42.3/docker-compose.yml create mode 100644 apps/mediawiki/1.42.3/scripts/init.sh create mode 100644 apps/mediawiki/README.md create mode 100644 apps/mediawiki/data.yml create mode 100644 apps/mediawiki/latest/.env.sample create mode 100644 apps/mediawiki/latest/data.yml create mode 100644 apps/mediawiki/latest/data/LocalSettings.php create mode 100644 apps/mediawiki/latest/data/data/.gitkeep create mode 100644 apps/mediawiki/latest/data/images/.gitkeep create mode 100644 apps/mediawiki/latest/docker-compose.yml create mode 100644 apps/mediawiki/latest/scripts/init.sh create mode 100644 apps/mediawiki/logo.png diff --git a/apps/mediawiki/1.42.3/.env.sample b/apps/mediawiki/1.42.3/.env.sample new file mode 100644 index 00000000..044ada88 --- /dev/null +++ b/apps/mediawiki/1.42.3/.env.sample @@ -0,0 +1,6 @@ +CONTAINER_NAME="mediawiki" +INTERNAL_DATA_PATH="/var/www/data" +LOCAL_SETTINGS_PATH="./data/LocalSettings.php" +MEDIAWIKI_DATA_PATH="./data/data" +MEDIAWIKI_IMAGES_PATH="./data/images" +PANEL_APP_PORT_HTTP=40315 diff --git a/apps/mediawiki/1.42.3/data.yml b/apps/mediawiki/1.42.3/data.yml new file mode 100644 index 00000000..3cffd2a1 --- /dev/null +++ b/apps/mediawiki/1.42.3/data.yml @@ -0,0 +1,38 @@ +additionalProperties: + formFields: + - default: "40315" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "./data/images" + disabled: true + envKey: MEDIAWIKI_IMAGES_PATH + labelEn: MediaWiki Images Path + labelZh: MediaWiki 图片路径 + required: true + type: text + - default: "./data/data" + disabled: true + envKey: MEDIAWIKI_DATA_PATH + labelEn: MediaWiki Data Path + labelZh: MediaWiki 数据路径 + required: true + type: text + - default: "/var/www/data" + edit: true + envKey: INTERNAL_DATA_PATH + labelEn: Internal container data paths + labelZh: 容器内部数据路径 + required: true + type: text + - default: "./data/LocalSettings.php" + disabled: true + envKey: LOCAL_SETTINGS_PATH + labelEn: LocalSettings.php Path ([necessary] Edit compose.yml to close the mapping to regenerate the configuration file) + labelZh: LocalSettings.php 路径 (【必要】编辑 compose.yml 关闭映射可重新生成配置文件) + required: true + type: text diff --git a/apps/mediawiki/1.42.3/data/LocalSettings.php b/apps/mediawiki/1.42.3/data/LocalSettings.php new file mode 100644 index 00000000..685813a0 --- /dev/null +++ b/apps/mediawiki/1.42.3/data/LocalSettings.php @@ -0,0 +1,172 @@ + "$wgResourceBasePath/resources/assets/change-your-logo.svg", + 'icon' => "$wgResourceBasePath/resources/assets/change-your-logo.svg", +]; + +## UPO means: this is also a user preference option + +$wgEnableEmail = false; +$wgEnableUserEmail = true; # UPO + +$wgEmergencyContact = ''; +$wgPasswordSender = ''; + +$wgEnotifUserTalk = false; # UPO +$wgEnotifWatchlist = false; # UPO +$wgEmailAuthentication = true; + +## Database settings +$wgDBtype = 'sqlite'; +$wgDBserver = ''; +$wgDBname = 'my_wiki'; +$wgDBuser = ''; +$wgDBpassword = ''; + +# SQLite-specific settings +$wgSQLiteDataDir = "/var/www/data"; +$wgObjectCaches[CACHE_DB] = [ + 'class' => SqlBagOStuff::class, + 'loggroup' => 'SQLBagOStuff', + 'server' => [ + 'type' => 'sqlite', + 'dbname' => 'wikicache', + 'tablePrefix' => '', + 'variables' => [ 'synchronous' => 'NORMAL' ], + 'dbDirectory' => $wgSQLiteDataDir, + 'trxMode' => 'IMMEDIATE', + 'flags' => 0 + ] +]; +$wgLocalisationCacheConf['storeServer'] = [ + 'type' => 'sqlite', + 'dbname' => "{$wgDBname}_l10n_cache", + 'tablePrefix' => '', + 'variables' => [ 'synchronous' => 'NORMAL' ], + 'dbDirectory' => $wgSQLiteDataDir, + 'trxMode' => 'IMMEDIATE', + 'flags' => 0 +]; +$wgJobTypeConf['default'] = [ + 'class' => 'JobQueueDB', + 'claimTTL' => 3600, + 'server' => [ + 'type' => 'sqlite', + 'dbname' => "{$wgDBname}_jobqueue", + 'tablePrefix' => '', + 'variables' => [ 'synchronous' => 'NORMAL' ], + 'dbDirectory' => $wgSQLiteDataDir, + 'trxMode' => 'IMMEDIATE', + 'flags' => 0 + ] +]; +$wgResourceLoaderUseObjectCacheForDeps = true; + +# Shared database table +# This has no effect unless $wgSharedDB is also set. +$wgSharedTables[] = "actor"; + +## Shared memory settings +$wgMainCacheType = CACHE_ACCEL; +$wgMemCachedServers = []; + +## To enable image uploads, make sure the 'images' directory +## is writable, then set this to true: +$wgEnableUploads = false; +$wgUseImageMagick = true; +$wgImageMagickConvertCommand = '/usr/bin/convert'; + +# InstantCommons allows wiki to use images from https://commons.wikimedia.org +$wgUseInstantCommons = false; + +# Periodically send a pingback to https://www.mediawiki.org/ with basic data +# about this MediaWiki instance. The Wikimedia Foundation shares this data +# with MediaWiki developers to help guide future development efforts. +$wgPingback = false; + +# Site language code, should be one of the list in ./includes/languages/data/Names.php +$wgLanguageCode = 'zh-cn'; + +# Time zone +$wgLocaltimezone = 'UTC'; + +## Set $wgCacheDirectory to a writable directory on the web server +## to make your wiki go slightly faster. The directory should not +## be publicly accessible from the web. +#$wgCacheDirectory = "$IP/cache"; + +$wgSecretKey = '45717985f5d8fff577d2d27da22b37bd1541ad6047585f44bdc14fb9e53568da'; + +# Changing this will log out all existing sessions. +$wgAuthenticationTokenVersion = '1'; + +# Site upgrade key. Must be set to a string (default provided) to turn on the +# web installer while LocalSettings.php is in place +$wgUpgradeKey = 'f05f42e60810b946'; + +## For attaching licensing metadata to pages, and displaying an +## appropriate copyright notice / icon. GNU Free Documentation +## License and Creative Commons licenses are supported so far. +$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright +$wgRightsUrl = ''; +$wgRightsText = ''; +$wgRightsIcon = ""; + +# Path to the GNU diff3 utility. Used for conflict resolution. +$wgDiff3 = '/usr/bin/diff3'; + +## Default skin: you can change the default skin. Use the internal symbolic +## names, e.g. 'vector' or 'monobook': +$wgDefaultSkin = 'vector'; + +# Enabled skins. +# The following skins were automatically enabled: +wfLoadSkin( 'MinervaNeue' ); +wfLoadSkin( 'MonoBook' ); +wfLoadSkin( 'Timeless' ); +wfLoadSkin( 'Vector' ); + + +# End of automatically generated settings. +# Add more configuration options below. + diff --git a/apps/mediawiki/1.42.3/data/data/.gitkeep b/apps/mediawiki/1.42.3/data/data/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/mediawiki/1.42.3/data/images/.gitkeep b/apps/mediawiki/1.42.3/data/images/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/mediawiki/1.42.3/docker-compose.yml b/apps/mediawiki/1.42.3/docker-compose.yml new file mode 100644 index 00000000..a530d031 --- /dev/null +++ b/apps/mediawiki/1.42.3/docker-compose.yml @@ -0,0 +1,20 @@ +services: + mediawiki: + image: "mediawiki:1.42.3" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:80" + volumes: + - ${MEDIAWIKI_IMAGES_PATH}:/var/www/html/images + - ${MEDIAWIKI_DATA_PATH}:${INTERNAL_DATA_PATH} + # 以下行前添加#号表示关闭映射,可进行初始化配置生成 + - ${LOCAL_SETTINGS_PATH}:/var/www/html/LocalSettings.php + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/mediawiki/1.42.3/scripts/init.sh b/apps/mediawiki/1.42.3/scripts/init.sh new file mode 100644 index 00000000..e6226d6f --- /dev/null +++ b/apps/mediawiki/1.42.3/scripts/init.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +chown -R www-data:www-data data \ No newline at end of file diff --git a/apps/mediawiki/README.md b/apps/mediawiki/README.md new file mode 100644 index 00000000..df57b9ee --- /dev/null +++ b/apps/mediawiki/README.md @@ -0,0 +1,25 @@ +# MediaWiki + +**MediaWiki** 是一个免费、开源的 Wiki 软件包,由 PHP 编写。它是 Wikipedia 及其他 Wikimedia 项目的基础平台,每月有数亿人使用。MediaWiki 支持超过 350 种语言,凭借其可靠性和强大的功能集,拥有庞大而活跃的第三方用户和开发者社区。 + +## 使用说明 + +- 1. 数据库连接信息及更多的设置通过`LocalSettings.php`文件进行设置, + +- 2. 通过取消`LocalSettings.php`文件的映射来重新初始化,并获取配置文件。**【必要】** + +- 3. 然后修改并重新映射`LocalSettings.php`文件到容器内来使新设置生效。 + +- 4. 需要将配置文件正确放置,文件路径大概如下:`/opt/1panel/apps/local/mediawiki/mediawiki/data/LocalSettings.php`,按需修改。 + +- 5. **具体:安装应用/修改应用参数时,点击`高级设置`>`编辑 compose 文件`,通过修改对`LocalSettings.php`文件的映射与否,获取新配置文件/启用配置文件。** + +- 6. 在`高级设置`>`编辑 compose 文件`时,可通过按需修改编排的以下部分,然后确认重建应用生效,此步骤即是修改配置文件的映射。 + +``` + volumes: + - ${MEDIAWIKI_IMAGES_PATH}:/var/www/html/images + - ${MEDIAWIKI_DATA_PATH}:${INTERNAL_DATA_PATH} + # 删除以下行前的#号表示启用 + #- ${LOCAL_SETTINGS_PATH}:/var/www/html/LocalSettings.php # 映射到容器内的配置文件 +``` \ No newline at end of file diff --git a/apps/mediawiki/data.yml b/apps/mediawiki/data.yml new file mode 100644 index 00000000..648ac2e0 --- /dev/null +++ b/apps/mediawiki/data.yml @@ -0,0 +1,19 @@ +name: MediaWiki +tags: + - 建站 +title: 开源百科引擎 +description: 开源百科引擎 +additionalProperties: + key: mediawiki + name: MediaWiki + tags: + - WebSite + shortDescZh: 开源百科引擎 + shortDescEn: Open-source wiki engine + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://www.mediawiki.org + github: https://github.com/wikimedia/mediawiki + document: https://www.mediawiki.org/wiki/Manual:Installation_guide diff --git a/apps/mediawiki/latest/.env.sample b/apps/mediawiki/latest/.env.sample new file mode 100644 index 00000000..044ada88 --- /dev/null +++ b/apps/mediawiki/latest/.env.sample @@ -0,0 +1,6 @@ +CONTAINER_NAME="mediawiki" +INTERNAL_DATA_PATH="/var/www/data" +LOCAL_SETTINGS_PATH="./data/LocalSettings.php" +MEDIAWIKI_DATA_PATH="./data/data" +MEDIAWIKI_IMAGES_PATH="./data/images" +PANEL_APP_PORT_HTTP=40315 diff --git a/apps/mediawiki/latest/data.yml b/apps/mediawiki/latest/data.yml new file mode 100644 index 00000000..3cffd2a1 --- /dev/null +++ b/apps/mediawiki/latest/data.yml @@ -0,0 +1,38 @@ +additionalProperties: + formFields: + - default: "40315" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "./data/images" + disabled: true + envKey: MEDIAWIKI_IMAGES_PATH + labelEn: MediaWiki Images Path + labelZh: MediaWiki 图片路径 + required: true + type: text + - default: "./data/data" + disabled: true + envKey: MEDIAWIKI_DATA_PATH + labelEn: MediaWiki Data Path + labelZh: MediaWiki 数据路径 + required: true + type: text + - default: "/var/www/data" + edit: true + envKey: INTERNAL_DATA_PATH + labelEn: Internal container data paths + labelZh: 容器内部数据路径 + required: true + type: text + - default: "./data/LocalSettings.php" + disabled: true + envKey: LOCAL_SETTINGS_PATH + labelEn: LocalSettings.php Path ([necessary] Edit compose.yml to close the mapping to regenerate the configuration file) + labelZh: LocalSettings.php 路径 (【必要】编辑 compose.yml 关闭映射可重新生成配置文件) + required: true + type: text diff --git a/apps/mediawiki/latest/data/LocalSettings.php b/apps/mediawiki/latest/data/LocalSettings.php new file mode 100644 index 00000000..685813a0 --- /dev/null +++ b/apps/mediawiki/latest/data/LocalSettings.php @@ -0,0 +1,172 @@ + "$wgResourceBasePath/resources/assets/change-your-logo.svg", + 'icon' => "$wgResourceBasePath/resources/assets/change-your-logo.svg", +]; + +## UPO means: this is also a user preference option + +$wgEnableEmail = false; +$wgEnableUserEmail = true; # UPO + +$wgEmergencyContact = ''; +$wgPasswordSender = ''; + +$wgEnotifUserTalk = false; # UPO +$wgEnotifWatchlist = false; # UPO +$wgEmailAuthentication = true; + +## Database settings +$wgDBtype = 'sqlite'; +$wgDBserver = ''; +$wgDBname = 'my_wiki'; +$wgDBuser = ''; +$wgDBpassword = ''; + +# SQLite-specific settings +$wgSQLiteDataDir = "/var/www/data"; +$wgObjectCaches[CACHE_DB] = [ + 'class' => SqlBagOStuff::class, + 'loggroup' => 'SQLBagOStuff', + 'server' => [ + 'type' => 'sqlite', + 'dbname' => 'wikicache', + 'tablePrefix' => '', + 'variables' => [ 'synchronous' => 'NORMAL' ], + 'dbDirectory' => $wgSQLiteDataDir, + 'trxMode' => 'IMMEDIATE', + 'flags' => 0 + ] +]; +$wgLocalisationCacheConf['storeServer'] = [ + 'type' => 'sqlite', + 'dbname' => "{$wgDBname}_l10n_cache", + 'tablePrefix' => '', + 'variables' => [ 'synchronous' => 'NORMAL' ], + 'dbDirectory' => $wgSQLiteDataDir, + 'trxMode' => 'IMMEDIATE', + 'flags' => 0 +]; +$wgJobTypeConf['default'] = [ + 'class' => 'JobQueueDB', + 'claimTTL' => 3600, + 'server' => [ + 'type' => 'sqlite', + 'dbname' => "{$wgDBname}_jobqueue", + 'tablePrefix' => '', + 'variables' => [ 'synchronous' => 'NORMAL' ], + 'dbDirectory' => $wgSQLiteDataDir, + 'trxMode' => 'IMMEDIATE', + 'flags' => 0 + ] +]; +$wgResourceLoaderUseObjectCacheForDeps = true; + +# Shared database table +# This has no effect unless $wgSharedDB is also set. +$wgSharedTables[] = "actor"; + +## Shared memory settings +$wgMainCacheType = CACHE_ACCEL; +$wgMemCachedServers = []; + +## To enable image uploads, make sure the 'images' directory +## is writable, then set this to true: +$wgEnableUploads = false; +$wgUseImageMagick = true; +$wgImageMagickConvertCommand = '/usr/bin/convert'; + +# InstantCommons allows wiki to use images from https://commons.wikimedia.org +$wgUseInstantCommons = false; + +# Periodically send a pingback to https://www.mediawiki.org/ with basic data +# about this MediaWiki instance. The Wikimedia Foundation shares this data +# with MediaWiki developers to help guide future development efforts. +$wgPingback = false; + +# Site language code, should be one of the list in ./includes/languages/data/Names.php +$wgLanguageCode = 'zh-cn'; + +# Time zone +$wgLocaltimezone = 'UTC'; + +## Set $wgCacheDirectory to a writable directory on the web server +## to make your wiki go slightly faster. The directory should not +## be publicly accessible from the web. +#$wgCacheDirectory = "$IP/cache"; + +$wgSecretKey = '45717985f5d8fff577d2d27da22b37bd1541ad6047585f44bdc14fb9e53568da'; + +# Changing this will log out all existing sessions. +$wgAuthenticationTokenVersion = '1'; + +# Site upgrade key. Must be set to a string (default provided) to turn on the +# web installer while LocalSettings.php is in place +$wgUpgradeKey = 'f05f42e60810b946'; + +## For attaching licensing metadata to pages, and displaying an +## appropriate copyright notice / icon. GNU Free Documentation +## License and Creative Commons licenses are supported so far. +$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright +$wgRightsUrl = ''; +$wgRightsText = ''; +$wgRightsIcon = ""; + +# Path to the GNU diff3 utility. Used for conflict resolution. +$wgDiff3 = '/usr/bin/diff3'; + +## Default skin: you can change the default skin. Use the internal symbolic +## names, e.g. 'vector' or 'monobook': +$wgDefaultSkin = 'vector'; + +# Enabled skins. +# The following skins were automatically enabled: +wfLoadSkin( 'MinervaNeue' ); +wfLoadSkin( 'MonoBook' ); +wfLoadSkin( 'Timeless' ); +wfLoadSkin( 'Vector' ); + + +# End of automatically generated settings. +# Add more configuration options below. + diff --git a/apps/mediawiki/latest/data/data/.gitkeep b/apps/mediawiki/latest/data/data/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/mediawiki/latest/data/images/.gitkeep b/apps/mediawiki/latest/data/images/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/mediawiki/latest/docker-compose.yml b/apps/mediawiki/latest/docker-compose.yml new file mode 100644 index 00000000..abe2e22e --- /dev/null +++ b/apps/mediawiki/latest/docker-compose.yml @@ -0,0 +1,20 @@ +services: + mediawiki: + image: "mediawiki:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:80" + volumes: + - ${MEDIAWIKI_IMAGES_PATH}:/var/www/html/images + - ${MEDIAWIKI_DATA_PATH}:${INTERNAL_DATA_PATH} + # 以下行前添加#号表示关闭映射,可进行初始化配置生成 + - ${LOCAL_SETTINGS_PATH}:/var/www/html/LocalSettings.php + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/mediawiki/latest/scripts/init.sh b/apps/mediawiki/latest/scripts/init.sh new file mode 100644 index 00000000..e6226d6f --- /dev/null +++ b/apps/mediawiki/latest/scripts/init.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +chown -R www-data:www-data data \ No newline at end of file diff --git a/apps/mediawiki/logo.png b/apps/mediawiki/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f9409aedd2c35aaf366aba0a3f5e38c2431b7e88 GIT binary patch literal 7424 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 literal 0 HcmV?d00001