系统配置:
Debian 10.5
硬盘:40G
内存:1G
特别备注:本人使用以下教程搭建的wiki: http://wiki.mosiwi.com/
一、LNMP一键安装包
注意:相比于nginx,apache比较费资源,主要表现在进程多,内存占用高,内存不释放等问题。
1、一个标准安装的 MediaWiki 除软件自身以外,还需要安装下列环境,所以使用LNMP一键安装包:
Web 服务器:用于服务客户端浏览器的请求。
数据库服务器:用于储存网站页面与数据,MySQL 5.5.8+ 或 MariaDB 5.1+。
PHP 运行环境:由于上游漏洞,MediaWiki与PHP 7.3.0 - 7.3.18和7.4.0 - 7.4.2不兼容。 请使用PHP 7.3.19+或7.4.3+代替。
也可以查看MediaWik官网i配置要求:https://www.mediawiki.org/wiki/Manual:Installation_requirements/zh
2、LNMP一键安装官网:https://lnmp.org
2.1、下载lnmp:
wget http://soft.vpser.net/lnmp/lnmp1.8.tar.gz -cO lnmp1.8.tar.gz && tar zxf lnmp1.8.tar.gz && cd lnmp1.8
2.2、开启PHP的fileinfo扩展:
LAMP安装如果没有启动fileinfo扩展,需要手动开启,否者会导致mediawiki安装出错。
修改lnmp安装包目录下的 lnmp.conf 文件,将里面的 Enable_PHP_Fileinfo=‘n’ 改成 Enable_PHP_Fileinfo=‘y’
如果是未安装过的跳过以下步骤,如果是升级PHP的执行下面步骤:
然后再执行 ./upgrade.sh phpa 就会默认安装 fileinfo 这个扩展。
更多upgrade.sh的用法查看:https://lnmp.org/faq/lnmp1-2-upgrade.html
2.3、安装lamp:
./install.sh lamp
如需要安装LNMPA或LNMP,将./install.sh 后面的参数lnmp替换为lnmpa或lnmp即可。同时也支持单独安装Nginx或数据库,命令为 ./install.sh nginx 或 ./install.sh db。如需更改网站和数据库目录、自定义Nginx参数、PHP参数模块、开启lua等需在运行./install.sh 命令前修改安装包目录下的 lnmp.conf 文件,详细可以查看lnmp.conf文件参数说明。
目前提供了较多的MySQL、MariaDB版本和不安装数据库的选项,需要注意的是MySQL 5.6,5.7及MariaDB 10必须在1G以上内存的更高配置上才能选择,运行上述LAMP安装命令后,会出现如下提示:
上一步骤选择的是MySQL,设置MySQL的root密码,如果输入有错误需要删除时,可以按住Ctrl再按Backspace键进行删除(个别情况下是只需要Backspace键):
输入后回车进入下一步,询问是否需要启用MySQL InnoDB,InnoDB引擎默认为开启,一般建议开启,直接回车或输入 y ,如果确定确实不需要该引擎可以输入 n,(MySQL 5.7+版本无法关闭InnoDB),输入完成,回车进入下一步,如下图所示:
选择PHP版本:
选择是否安装内存优化,可以选择不安装、Jemalloc或TCmalloc,输入对应序号回车,直接回车为默认为不安装。
置管理员邮箱,该邮箱会在报错时显示在错误页面上:
选择默认Apache版本:
提示"Press any key to install…or Press Ctrl+c to cancel"后,按回车键确认开始安装。
LAMP相关软件安装目录
MySQL 目录 : /usr/local/mysql/
PHP目录 : /usr/local/php/
Apache目录:/usr/local/apache/
二、安装 MediaWiki
MediaWik官网:https://www.mediawiki.org/
1、下载 MediaWiki 软件
Command line (*nix machine)
cd /home/wwwroot/
wget https://releases.wikimedia.org/mediawiki/1.36/mediawiki-1.36.2.tar.gz
2、解压安装包
tar xvzf mediawiki-*.tar.gz
3、备份default文件夹与设定mediawiki默认web目录,default为服务器默认的web目录。
mv -f default default_backup
mv -f mediawiki-1.36.2 default
4、网页输入http://IP/,启动mediawiki初始配置
设定好使用语言与前端显示语言会调到下图,然后继续下一步,出现的警告再后续再进行处理。
接着按提示填写即可。
配置完成
需要将配置文件拷贝到mediawiki的根目录下,如需重新配置请删除该文件,然后重新在浏览器输入IP进行重新配置。
进入mediawiki
三、修改配置过程的小错误
1、警告:找不到APCu或WinCache。对象缓存未启用。
需要重新安装APCu,安装包在下载的lnmp1.8安装包中。
cd /root/lnmp1.8
./addons.sh
lnmp官网查看图像处理:https://lnmp.org/faq/addons.html
选择 6 安装,并输入一个密码
2、找不到GNU diff3文字对比工具程序,您可以暂时忽略它,但可能会更频繁遇到编辑冲突。
修改mediawiki最后的生成的“LocalSettings.php”配置文件。
https://www.mediawiki.org/wiki/Manual:$wgDiff3
https://www.mediawiki.org/wiki/Manual:Configuration_settings
3、Git版本控制软件未找到,您可以暂时忽略他,另请注意Special:Version不会显示提交散列。
跳过此提示,后续安装。
四、装饰mediawiki
官网教程:https://www.mediawiki.org/wiki/Help:Contents
开启可视化编辑器
1、在mediawiki的“LocalSettings.php”配置文件末尾加入如下代码。
wfLoadExtension( 'VisualEditor' );
2、重启服务器。
sudo reboot
3、打开网页。
更改左上角的logo
官网教程:https://www.mediawiki.org/wiki/Manual:LocalSettings.php
修改“LocalSettings.php”配置文件,删除或者屏蔽掉原来的logo,新增:
$wgLogos = [ '1x' => "$wgResourceBasePath /resources/assets/xxx.png" ];
// 或者
$wgLogos = [ '1x' => "URL" ];
更改右下角的logo
官网参考:https://www.mediawiki.org/wiki/Manual:$wgFooterIcons
1、去除logo,在“LocalSettings.php”文件末尾新增如下代码:
unset( $wgFooterIcons['poweredby'] );
2、新增自定义logo,在“LocalSettings.php”文件末尾新增如下代码:
$wgFooterIcons['poweredby']['myicon'] = [
"src" => "/path/to/my/image.png",
// you may also use a direct path to the source, e.g. "http://example.com/my/custom/path/to/MyCustomLogo.png"
"url" => "http://example.com/",
"alt" => "Some text here...",
// For HiDPI support, you can specify paths to larger versions of the icon.
"srcset" =>
"/path/to/1.5x_version.png 1.5x, " .
"/path/to/2x_version.png 2x",
// If you have a non-default sized icon you can specify the size yourself.
"height" => "31",
"width" => "88",
];
修改侧边栏
在mediawiki官网的搜索框中输入“sidebar”即可查找到相关信息。
官网参考资料:https://www.mediawiki.org/wiki/Manual:Interface/Sidebar
打开修改侧边栏方法
1、在浏览器中输入“ http://yourdomain/wiki/index.php?title=MediaWiki:Sidebar&action=edit ”;
或者:“http://yourdomain/index.php/MediaWiki:Sidebar”。
2、在你wiki网站中搜索“MediaWiki:Sidebar ”。
原始代码:
* navigation
** mainpage|mainpage-description
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help-mediawiki
* TOOLBOX
* SEARCH
* LANGUAGES
示例说明:
* 一级标题
** URL |二级标题
新建页面
官网参考资料:https://www.mediawiki.org/wiki/Help:Starting_a_new_page
新手建议直接在你的wiki页面搜索框中输入你要新建页面的名称,wiki会自动新建一个空白页面,然后编辑保存即可:
编辑页面
编写页面文本格式请参考:https://www.mediawiki.org/wiki/Help:Formatting
1、隐藏与显示目录编辑
当标题大于或者等于4个的时候页面会自动生成此目录。
在浏览器中输入“http://yourdomain/index.php//MediaWiki:Common.css”,即可编辑目录格式。
官网参考资料:https://www.mediawiki.org/wiki/Manual:Table_of_contents
2、配置使能图片功能
官网资料:https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads
2.1、确保php.ini文件中:
nano中使用“Ctrl + /”查找file_uploads = On。
file_uploads = On
查找php.ini文件:
find / -name "php.ini"
2.2、确保images文件有可执行权限。
sudo chmod 777 /home/wwwroot/default/images
2.3、确认 .htaccess文件在images文件夹内,它使得images文件夹更安全。
cd /home/wwwroot/default/images
ls -al
2.4、修改LocalSettings.php文件开启图片上传功能
$wgEnableUploads = true; # Enable uploads
# $wgEnableUploads = false; # Disable uploads
2.5、LocalSettings.php文件增加以下代码,设置上传权限
# To prevent normal users from uploading files:
$wgGroupPermissions['user']['upload'] = false;
# To prevent normal users from overriding existing files:
$wgGroupPermissions['user']['reupload'] = false;
2.6、LocalSettings.php文件增加以下代码,配置允许上传文件类型
$wgFileExtensions = array ( 'png' , 'gif' , 'jpg' , 'jpeg' , 'doc' ,
'xls' , 'mpp' , 'pdf' , 'ppt' , 'tiff' , 'bmp' , ' docx' , 'xlsx' ,
'pptx' , 'ps' , 'odt' , 'ods' , 'odp' , 'odg' , 'zip', 'rar'
);
3、图片上传、查看、使用、使用站外图片
3.1、上传
官网资料:https://www.mediawiki.org/wiki/Help:Managing_files
点击侧边栏“Tools”—>“Upload file”
上传新文件后,它不会自动出现在任何页面上——甚至不会出现在您点击“上传文件”链接时所在的页面。
3.2、查看
有许多特殊页面可帮助您查看和管理已上传的文件。转到“Special pages”(在左侧的“Tools”中),然后查看…
Gallery of new files - 如果您刚刚上传了一个文件,您将在此处看到它。
File list - 显示所有文件。
Unused files - 帮助您追踪可能不需要的文件。
3.3、使用
官网资料:https://www.mediawiki.org/wiki/Help:Images
http://wiki.cokoino.com/index.php/File:CKK0008.jpg
3.4、使用站外图片
在LocalSettings.php中插入下行:
Manual:$wgAllowExternalImages = true;
直接将图片外链插入文本,不用任何修饰。比如xxx://xxx.xxx.xxx/xxx.jpg。
根据官网说的,链接要提供图片后缀,或者是自己要手动添加。 官网说明: (MediaWiki will only recognize image URLs with image file extensions; you may need to add a ‘fake’ parameter to the end of some URLs, like “&junk=junk.png” or “?.png” to force the parser to realize the Image_URL actually points to an image, so that it will embed it.)
使用教程:https://www.mediawiki.org/wiki/Manual:$wgAllowExternalImages
3.5、去除url 中index.php显示
默认的 MediaWiki URL看起来像www.example.com/index.php?title=TITLE ,这有点难看。 为了使其对搜索引擎更加友好,我们将其更改为对SEO友好的URL,例如www.example.com/TITLE 。
第1步,打开LocalSettings.php(位于MediaWiki安装根文件夹中(default))并添加以下行:
$wgArticlePath = "/$1";
第2步。MediaWiki的安装根文件夹(default)中创建一个“.htaccess”文件,并放置以下几行:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?title=$1 [NC,L,QSA]
4、分类
4.1、在侧边栏加入如下代码即可添加分类
* 侧边栏显示名称
** Category:类名|类的页面名称
.
.
.
示例:
* Category
** Category:Shield|Shield
** Category:Starter Kit|Starter Kit
** Category:Smart Car|Smart Car
** Category:Sensor|Sensor
** Category:3D Printer|3D Printer
4.2、在页面代码最底部添加如下代码即可将该页面加入类别中:
[[Category: xxx]]
4.3、进入阅读页面,点击分类即可进入所属的分类页面。
5、官网有许多常见问题解答,可以快速让搭建wiki:
https://www.mediawiki.org/wiki/Manual:FAQ#How_can_I_hide_the_table_of_contents?
占用内存过高解决方法
查看进程内存占用:
top
然后 Shift+m :
解决MYSQL占内存高
方法1(选取于网络,针对自己的服务器没起作用)
修改my.cnf参数:
cd /usr/local/mysql
sudo nano my.cnf
修改文件以下几个参数:
performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
重启mysql服务。我这里遇到的没解决,不知道其他人能够解决问题,物理 内存300M以及虚拟内存1G依旧,没改善。
方法2:(解决了当前自己遇到的问题)
要关闭 Performance Schema ,5.6默认开启的,占用内存过高可以关闭。
cd /usr/local/mysql
sudo nano my.cnf
在文件的最后添加一句:
performance_schema = OFF
HTTPD占内存过高解决
用以下方法查看MPM的工作模式:
export PATH=/usr/local/apache/bin:$PATH
httpd -V
查看得知为event模式:
按下面数值修改:
sudo nano /usr/local/apache/conf/extra/httpd-mpm.conf
# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
# before terminating
# default
# MinSpareThreads 75
# MaxSpareThreads 250
# MaxConnectionsPerChild 0
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 5
MaxSpareThreads 25
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 200
</IfModule>
优化内存脚本:
#!/bin/bash
while true
do
# Read unused memory
free_memory=`free -m | grep Mem | awk '{print $4}'`
if(($free_memory<150)); then
# Clear all caches
sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
sleep 10
# Read unused memory
free_memory=`free -m | grep Mem | awk '{print $4}'`
if(($free_memory<155)); then
echo " No memory!"
# restart apache
sudo /usr/local/apache/bin/apachectl restart
fi
fi
sleep 10
done