打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

帮助:MediaWiki 安装:修订间差异

来自陋室
删除的内容 添加的内容
XP-jia留言 | 贡献
new
 
XP-jia留言 | 贡献
完成
第1行: 第1行:
这个页面介绍了本站的 MediaWiki 的安装笔记.
这个页面介绍了本站的 MediaWiki 的安装笔记.
== 基本环境的安装 ==
== 服务器配置 ==
'''服务器提供商''': 腾讯云-轻量云(轻量应用服务器)
=== 系统 ===
==== 系统版本 ====
<code>cat /etc/os-release # 显示发行版的详细信息</code>


'''地域和可用区''': 新加坡 | 新加坡一区
<code>PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"</code>
==== 系统更新 ====
<code>sudo apt update # 更新包索引</code>


'''实例规格''':
<code>sudo apt upgrade # sudo apt upgrade</code>
* '''CPU''': 2核
=== 宝塔面板 ===
* '''内存''': 2GB
Linux面板安装脚本,正式版:9.4.0
* '''系统盘''': SSD云硬盘 50GB
* '''流量包''': 1024GB/月(峰值带宽 30Mbps)


== 服务器环境 ==
<code>wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && bash install_panel.sh ed8484bec</code>
=== 环境 ===
=== 操作系统 ===
'''镜像名称''': Debian
==== PHP ====
<code>php -v</code>


'''操作系统''': Debian 12.0 64bit
<code>PHP 8.2.26 (cli) (built: Nov 25 2024 17:21:51) (NTS)</code>
<syntaxhighlight lang="bash">
cat /etc/os-release
sudo apt update
sudo apt upgrade
</syntaxhighlight>


=== 服务器软件 ===
<code>which php</code>
* '''宝塔Linux面板''': 正式版9.4.0
<syntaxhighlight lang="bash">
wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && bash install_panel.sh ed8484bec
</syntaxhighlight>
* '''Apache 2.4.62 (PHP+fpm)'''
<syntaxhighlight lang="bash">
which apache2
apache2 -v
</syntaxhighlight>
* '''MySQL 5.7.44'''(MediaWiki最低要求5.7,官方推荐MongoDB)
<syntaxhighlight lang="bash">
which mysql
systemctl status mysql
</syntaxhighlight>
* '''PHP 8.2.27'''(MediaWiki最低要求8.1)
<syntaxhighlight lang="bash">
which php
php -v
</syntaxhighlight>
* '''phpMyAdmin 5.2'''(可通过宝塔安装)
* '''ffmpeg 6.1'''(可通过宝塔安装)
<syntaxhighlight lang="bash">
which ffmpeg
ffmpeg -version
</syntaxhighlight>


=== 依赖软件安装 ===
<code>/usr/bin/php</code>
==== php-wikidiff2 ====
<syntaxhighlight lang="bash">
apt-get install php-wikidiff2
find /usr/lib/ -name wikidiff2.so
nano /www/server/php/82/etc/php.ini
extension=/usr/lib/php/20220829/wikidiff2.so
php -m | grep wikidiff2
</syntaxhighlight>
<syntaxhighlight lang="php">
$wgDiffEngine = "wikidiff2";
$wgDiff3 = "/usr/bin/diff3";
</syntaxhighlight>


==== 标题文本 ====
==== LilyPond ====
<syntaxhighlight lang="bash">
sudo apt update
sudo apt install lilypond
lilypond --version
</syntaxhighlight>
<syntaxhighlight lang="php">
wfLoadExtension( 'Score' );
$wgScoreTrim = true;
$wgImageMagickConvertCommand = '/usr/bin/convert';
$wgScoreSafeMode = false;
</syntaxhighlight>

==== Ghostscript ====
<syntaxhighlight lang="bash">
sudo apt update
sudo apt install ghostscript
gs --version
</syntaxhighlight>

==== FluidSynth ====
<syntaxhighlight lang="bash">
sudo apt update
sudo apt install fluidsynth
fluidsynth --version
</syntaxhighlight>

==== LAME ====
<syntaxhighlight lang="bash">
sudo apt update
sudo apt install lame
lame --version
</syntaxhighlight>
<syntaxhighlight lang="php">
$wgScoreLame = '/usr/bin/lame';
</syntaxhighlight>

==== php-luasandbox ====
<syntaxhighlight lang="bash">
sudo apt update
sudo apt install php-luasandbox -y
find /usr/lib/php/ -name "luasandbox.so"
nano /www/server/php/82/etc/php.ini
extension=/usr/lib/php/20220829/luasandbox.so
php -m | grep luasandbox
</syntaxhighlight>
<syntaxhighlight lang="php">
wfLoadExtension( 'Scribunto' );
$wgScribuntoEngineConf['luasandbox']['memoryLimit'] = 50 * 1024 * 1024;
</syntaxhighlight>

==== Composer ====
<syntaxhighlight lang="bash">
composer update --no-dev
</syntaxhighlight>

== 服务器配置 ==
=== Apache相关 ===
'''禁用防跨站攻击 (open_basedir)'''
'''启用HTTPS防窜站'''
'''TLS 1.0和1.1禁用'''
'''伪静态配置'''
<syntaxhighlight lang="apache">
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|less)$ [NC]
RewriteCond %{REQUEST_URI} !^/load.php [NC]
RewriteCond %{REQUEST_URI} !^/api.php [NC]
RewriteRule ^w/(.*)$ /index.php?title=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L,QSA]
</syntaxhighlight>
<syntaxhighlight lang="php">
wfLoadExtension( 'UrlShortener' );

$wgUrlShortenerTemplate = '/r/$1';
$wgUrlShortenerServer = "false";
$wgUrlShortenerEnableQrCode = true;
$wgUrlShortenerQrCodeShortenLimit = 200;

$actions = [
'view',
'edit',
'watch',
'unwatch',
'delete',
'revert',
'rollback',
'protect',
'unprotect',
'markpatrolled',
'render',
'submit',
'history',
'purge',
'info',
];

foreach ($actions as $action) {
$wgActionPaths[$action] = "/w/$action/$1";
}

$wgActionPaths['view'] = "/w/$1";
$wgArticlePath = $wgActionPaths['view'];
</syntaxhighlight>

=== SSL ===

=== Apache安全配置 ===
<syntaxhighlight lang="apache">
<Directory /www/wwwroot/lib/images/>
Options -ExecCGI -Indexes
AllowOverride None
<FilesMatch "\.(php|php5|pl|py|jsp|asp|htm|html|cgi|sh)$">
Require all denied
</FilesMatch>
Header always set X-Content-Type-Options "nosniff"
</Directory>
</syntaxhighlight>

=== MySQL相关 ===
'''官方建议''':
* 将所有表转为 InnoDB
* 将所有表转为 utf8mb4

=== PHP相关 ===
'''需要启用的插件'''(部分已默认启用)
<syntaxhighlight lang="bash">
php -m
</syntaxhighlight>

<syntaxhighlight lang="php">
Core date libxml openssl pcre sqlite3 zlib bcmath ctype curl dom filter ftp gd gettext hash iconv intl json mbstring SPL session pcntl standard mysqlnd PDO pdo_mysql pdo_sqlite Phar posix random Reflection mysqli shmop SimpleXML soap sockets sodium sysvsem tokenizer xml xmlreader xmlwriter wikidiff2 luasandbox zip imagick fileinfo apcu exif calendar
</syntaxhighlight>

'''需要解除禁用的函数'''
<syntaxhighlight lang="php">
proc_open
popen
putenv
</syntaxhighlight>

== 站点配置 ==
=== 数据库信息安全 ===
'''LocalSettings.php'''
<syntaxhighlight lang="php">
include('/www/wwwroot/lib.php');
</syntaxhighlight>

'''lib.php'''
<syntaxhighlight lang="php">
<?php
$wgDBserver = 'localhost';
$wgDBname = '';
$wgDBuser = '';
$wgDBpassword = '';
?>
</syntaxhighlight>

=== 网站Logo ===
<syntaxhighlight lang="php">
$wgLogos = [
'1x' => "$wgResourceBasePath/Libary-4l.png",
'icon' => "$wgResourceBasePath/Libary-4l.png",
];

$wgFavicon = "$wgResourceBasePath/images/logos/Libary-4l.png";
$wgAppleTouchIcon = "$wgResourceBasePath/images/logos/Libary-4l.png";

$wgFooterIcons['logo'] = [
'yourcustomicon' => [
'src' => '/images/logos/Libary-1ll.png ',
'url' => $wgServer,
'alt' => 'Logo',
'height' => '31',
'width' => '68',
],
];
</syntaxhighlight>

=== 移动端皮肤 ===
<syntaxhighlight lang="php">
$wgDefaultMobileSkin = 'citizen';
</syntaxhighlight>

=== MediaWiki维护脚本 ===
<syntaxhighlight lang="bash">
php maintenance/run.php update.php --quick && \
php maintenance/run.php rebuildrecentchanges.php && \
php maintenance/run.php rebuildall.php && \
php maintenance/run.php rebuildtextindex.php && \
php maintenance/run.php refreshLinks.php && \
php maintenance/run.php cleanupTitles.php --dry-run
</syntaxhighlight>

== 参见 ==
[https://www.mediawiki.org/wiki/Download/zh]
[https://www.bt.cn/new/download.html]
[https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5]
[https://www.mediawiki.org/wiki/Help:Formatting/zh]
[https://www.mediawiki.org/wiki/Help:Magic_words/zh]
[https://www.mediawiki.org/wiki/Help:Contents/zh]
[https://www.mediawiki.org/wiki/Manual:Contents/zh]
[https://www.huijiwiki.com/wiki/CommunityCenter]