MediaWiki-1.31.0+PHP-LDAP安裝詳細步驟

MediaWiki-1.31.0安裝步驟

一、安裝準備的軟件及安裝環境:

1, 系統版本CentOS Linux release 7.5.1804 (Core)

2, 軟件版本:(1)httpd-2.4.6-80.el7.centos.1.x86_64 ;

     (2)Server version: 10.2.19-MariaDB MariaDB Server

     (3)PHP 7.1.23

     (4)Windows-server-2008R2 AD域控制器

3, 使用yum安裝LAMP環境,關閉防火牆和selinux,便於順利測試:

[root@mediawiki ~]# systemctl status firewalld
[root@mediawiki ~]# systemctl stop firewalld
[root@mediawiki ~]# systemctl disable firewalld
[root@mediawiki ~]#cat /etc/sysconfig/selinux
#disabled - No SELinux policy is loaded.
SELINUX=disabled

4, 配置MariaDB yum源安裝Http和MariaDB:

[root@mediawiki ~]# vim /etc/yum.repos.d/Mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
[root@mediawiki ~]#yum clean all
[root@mediawiki ~]#yum makecache all

5,安裝httpd和mariadb數據庫:

[root@mediawiki ~]# yum install httpd mariadb-server mariadb
[root@mediawiki ~]#vim /etc/httpd/conf/httpd.conf
   修改配置項如下:
   DocumentRoot "/var/www"
   <Directory "/var/www">
   <Directory "/var/www">

其他,暫沒有做修改,接下來啓動httpd服務和mariadb服務

[root@mediawiki ~]# systemctl enable mariadb
[root@mediawiki ~]# systemctl enable httpd
[root@mediawiki ~]#systemctl start httpd
[root@mediawiki ~]#systemctl start mariadb

初始化數據庫:

Enter current password for root (enter for none): Just press the Enter button
Set root password? [Y/n]: Y
New password: hwg123
Re-enter new password:hwg123
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y

進入數據庫創建數據庫:

MariaDB [(none)]> CREATE USER 'wiki'@'localhost' IDENTIFIED BY 'hwg123';
MariaDB [(none)]>  CREATE DATABASE wikidatabase;
MariaDB [(none)]>  GRANT ALL PRIVILEGES ON wikidatabase.* TO 'wiki'@'localhost';
MariaDB [(none)]>  FLUSH PRIVILEGES;
MariaDB [(none)]> show databases;
MariaDB [(none)]> SHOW GRANTS FOR 'wiki'@'localhost';

6,安裝PHP7.0:

[root@mediawiki ~]#rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
[root@mediawiki ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@mediawiki ~]# yum install -y php71w-fpm php71w-opcache php71w-cli php71w-gd php71w-imap php71w-mysqlnd php71w-mbstring php71w-mcrypt php71w-pdo php71w-pecl-apcu php71w-pecl-mongodb php71w-pecl-redis php71w-pgsql php71w-xml php71w-xmlrpc php71w-devel mod_php71w php71w-ldap

7,配置mediawiki:

[root@mediawiki ~]#cd /home
[root@mediawiki ~]#wget http://releases.wikimedia.org/mediawiki/1.31/mediawiki-1.31.0.tar.gz
[root@mediawiki ~]# cd /var/www
[root@mediawiki ~]#tar -zxf /home/mediawiki-1.31.0.tar.gz
[root@mediawiki ~]#ln -s mediawiki-1.31.0/ mediawiki
[root@mediawiki ~]#chown -R apache:apache /var/www/mediawiki-1.31.0
[root@mediawiki ~]#systemctl restart httpd

二、開始安裝MediaMewiki

1,打開瀏覽器http://IP/mediawiki/index.php,開始初始化配置:

Setup1:選擇語言版本字庫版本。

Setup2:選擇數據庫類型,這裏選擇是Mysql。

1.jpg

Setup3:設置數據庫名稱,與你在數據庫添加一致:

2.jpg

Setup4:資料庫名稱及資料庫密碼:

3.jpg

Setup5:選擇數據庫引擎爲InnoDB:

4.jpg

Setup6:設置全局名稱和添加管理員:

5.jpg

Setup7:設置管理員郵箱和快速選項:

6.jpg

Setup8:開始安裝MediaWiki:

7.jpg

Setup9:沒有出現錯誤信息,即可一下步安裝:

8.jpg

Setup10:最後下載一個LocalSettings文件放在網站的根目錄下:

9.jpg

2,最後用瀏覽器把下載的LocalSettings.php文件用工具上傳到網站的根目錄下即可,安裝到此結束。

三、使用LDAP本地賬戶登錄Mediawiki

1,先下載LDAP軟件包:https://extdist.wmflabs.org/dist/extensions/LdapAuthentication-master-662eaaf.tar.gz

使用命令解壓到/var/www/mediawiki/extensions

[root@mediawiki ~]# tar xf LdapAuthentication-master-662eaaf.tar.gz  -C /var/www/mediawiki/extensions

2,設置 LocalSettings.php

[root@mediawiki mediawiki]# vim LocalSettings.php 
在配置文件最後添加如下參數
######## LDAP Verification ####################################
require_once ("$IP/extensions/LdapAuthentication/LdapAuthentication.php");
$wgAuth = new LdapAuthenticationPlugin();
$wgLDAPDomainNames = array('getacad.com');
$wgLDAPServerNames = array('getacad.com' => '10.10.0.X');#需要成域控制器IP或者域名,我是用的IP地址
$wgLDAPPort = array('getacad.com' => 389,);
$wgLDAPBaseDNs = array('getacad.com' => 'DC=getacad,DC=com');#本地真實的域名,這個是根域,不要設置錯誤
$wgLDAPActiveDirectory = array('getacad.com'=>true);
#$wgLDAPSearchAttributes = array('getacad.com'=>'sAMAccountName');#這個參數我測試過了在AD下面有點問題 ,所以我用了下一條UID
$wgLDAPSearchAttributes = array('getacad.com'=>'uid');
$wgLDAPRetrievePrefs = array('getacad.com' => 'true');
$wgLDAPEncryptionType = array( 'getacad.com' => 'clear');
$wgLDAPSearchStrings = array('getacad.com' => '[email protected]');#這個參數值是固定的@後面是你真實的域名@前面不要變就是USER-NAME
#$wgDefaultUserOptions['editsection'] = 0;
$wgLDAPUseLocal = true;  #這個參數建議開啓,因爲當域控有問題本地賬號也可以登錄
$wgMinimalPasswordLength = 1;
$wgLDAPProxyAgent =  array('getacad.com' => 'CN=admin,OU=mis_account,OU=ma_mpk_mis,OU=ma_mpk,OU=ma_cn,OU=ma,DC=getacad,DC=com');#此參數是代理agent的授權,有些域控是設置不能搜索
$wgLDAPProxyAgentPassword = array('getacad.com' => 'youpasswd'); #agent的授權賬號密碼
$wgGroupPermissions['*']['autocreateaccount'] = true;
$wgLDAPUseLDAPGroups = array( "getacad.com"=>true );
$wgLDAPGroupNameAttribute = array( "getacad.com"=>"cn" );
$wgLDAPUpdateLDAP = false;
$wgLDAPMailPassword = false;
$wgLDAPRetrievePrefs = false;
$wgShowExceptionDetails = true;#有異常顯示網頁上面
$wgShowDBErrorBacktrace = true;#數據庫錯誤顯示
$wgShowSQLErrors = true;#數據庫連接錯誤顯示頁面上
$wgLDAPDebug = 3;
$wgDebugLogGroups["ldap"] = "/tmp/ldap.log";#這個參數可自定義,建議開啓排錯

3.重啓httpd服務

[root@mediawiki mediawiki]# systemctl restart httpd

4,禁止遊客註冊賬號,同時禁止了遊客查看和編輯內容的權限。

 [root@mediawiki mediawiki]# vim LocalSettings.php 
 $wgGroupPermissions['*']['createaccount'] = false;
 $wgGroupPermissions['*']['edit'] = false;
 $wgGroupPermissions['*']['read'] = false;

5,配置短路徑,http://wiki.getac.com.cn/wiki/首頁 

[root@mediawiki mediawiki]# vim LocalSettings.php +34
$wgScript = "$wgScriptPath/index.php";
$wgArticlePath = '/wiki/$1';
$wgUsePathInfo = true;
#$wgServer = "http://10.10.0.128";//修改成下面
$wgServer = "http://wiki.getac.com.cn";

還需要在http上配置一下,另外還需要在網站根目錄下新建.htaccess文件

[root@mediawiki conf]# vim /etc/httpd/conf/httpd.conf +151
151     AllowOverride All
[root@mediawiki www]# ls -a
.  ..  cgi-bin  .htaccess  html  mediawiki  mediawiki-1.31.0
[root@mediawiki www]# cat .htaccess 
RewriteEngine On
RewriteRule ^wiki/(.*)$ /mediawiki/index.php?title=$1 [PT,L,QSA]
RewriteRule ^wiki/*$ /mediawiki/index.php [L,QSA]
RewriteRule ^/*$ /mediawiki/index.php [L,QSA]

6,後期調試排除問題詳細說一下:

1,PHP-LDAP不能與AD通訊,訪問時網頁報錯。主要故障如下:

錯誤代碼:
[W-4@JZEW31Mx@7jbl9bOggAAAAQ] /mediawiki/index.php?title=%E7%89%B9%E6%AE%8A:%E4%BD%BF%E7%94%A8%E8%80%85%E7%99%BB%E5%85%A5&returnto=%E9%A6%96%E9%A0%81 Wikimedia\Rdbms\DBQueryError from line 1457 of /var/www/mediawiki-1.31.0/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: SELECT domain FROM `ldap_domains` WHERE user_id = '55' LIMIT 1 
Function: LdapAuthenticationPlugin::loadDomain
Error: 1146 Table 'wikidatabase.ldap_domains' doesn't exist (localhost)
Backtrace:

#0 /var/www/mediawiki-1.31.0/includes/libs/rdbms/database/Database.php(1427): Wikimedia\Rdbms\Database->makeQueryException(string, integer, string, string)
#1 /var/www/mediawiki-1.31.0/includes/libs/rdbms/database/Database.php(1200): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#2 /var/www/mediawiki-1.31.0/includes/libs/rdbms/database/Database.php(1653): Wikimedia\Rdbms\Database->query(string, string)
#3 /var/www/mediawiki-1.31.0/includes/libs/rdbms/database/Database.php(1730): Wikimedia\Rdbms\Database->select(string, array, array, string, array, array)
#4 /var/www/mediawiki-1.31.0/extensions/LdapAuthentication/LdapAuthenticationPlugin.php(2131): Wikimedia\Rdbms\Database->selectRow(string, array, array, string)
#5 /var/www/mediawiki-1.31.0/extensions/LdapAuthentication/LdapAuthenticationPlugin.php(2150): LdapAuthenticationPlugin::loadDomain(User)
#6 /var/www/mediawiki-1.31.0/extensions/LdapAuthentication/LdapAuthenticationPlugin.php(1260): LdapAuthenticationPlugin::saveDomain(User, string)
#7 /var/www/mediawiki-1.31.0/extensions/LdapAuthentication/LdapAuthenticationPlugin.php(1290): LdapAuthenticationPlugin->updateUser(User)
#8 /var/www/mediawiki-1.31.0/includes/auth/AuthPluginPrimaryAuthenticationProvider.php(422): LdapAuthenticationPlugin->initUser(User, boolean)
#9 [internal function]: MediaWiki\Auth\AuthPluginPrimaryAuthenticationProvider->autoCreatedAccount(User, string)
#10 /var/www/mediawiki-1.31.0/includes/auth/AuthManager.php(2429): call_user_func_array(array, array)
#11 /var/www/mediawiki-1.31.0/includes/auth/AuthManager.php(1726): MediaWiki\Auth\AuthManager->callMethodOnProviders(integer, string, array)
#12 /var/www/mediawiki-1.31.0/includes/auth/AuthManager.php(621): MediaWiki\Auth\AuthManager->autoCreateUser(User, string, boolean)
#13 /var/www/mediawiki-1.31.0/includes/auth/AuthManager.php(383): MediaWiki\Auth\AuthManager->continueAuthentication(array)
#14 /var/www/mediawiki-1.31.0/includes/specialpage/AuthManagerSpecialPage.php(353): MediaWiki\Auth\AuthManager->beginAuthentication(array, string)
#15 /var/www/mediawiki-1.31.0/includes/specialpage/AuthManagerSpecialPage.php(482): AuthManagerSpecialPage->performAuthenticationStep(string, array)
#16 /var/www/mediawiki-1.31.0/includes/htmlform/HTMLForm.php(660): AuthManagerSpecialPage->handleFormSubmit(array, VFormHTMLForm)
#17 /var/www/mediawiki-1.31.0/includes/specialpage/AuthManagerSpecialPage.php(416): HTMLForm->trySubmit()
#18 /var/www/mediawiki-1.31.0/includes/specialpage/LoginSignupSpecialPage.php(316): AuthManagerSpecialPage->trySubmit()
#19 /var/www/mediawiki-1.31.0/includes/specialpage/SpecialPage.php(522): LoginSignupSpecialPage->execute(NULL)
#20 /var/www/mediawiki-1.31.0/includes/specialpage/SpecialPageFactory.php(568): SpecialPage->run(NULL)
#21 /var/www/mediawiki-1.31.0/includes/MediaWiki.php(288): SpecialPageFactory::executePath(Title, RequestContext)
#22 /var/www/mediawiki-1.31.0/includes/MediaWiki.php(861): MediaWiki->performRequest()
#23 /var/www/mediawiki-1.31.0/includes/MediaWiki.php(524): MediaWiki->main()
#24 /var/www/mediawiki-1.31.0/index.php(42): MediaWiki->run()
#25 {main}

解決辦法:

1),查看php-ldap 插件是否安裝過了。

[root@mediawiki ~]# php -m |grep ldap
ldap

如果沒有顯示你需要安裝這個插件包,並開啓這個接口。

[root@mediawiki ~]# yum install -y php71w-ldap
[root@mediawiki ~]#cat /etc/php.d/ldap.ini 
; Enable ldap extension module
extension=ldap.so

2),使用ldapsearch檢查php-ldap與域控制器之前是否連接正常。

在此之前需要安裝openldap-clients,執行如下命令:
[root@mediawiki ~]#yum install openldap-clients
[root@mediawiki ~]#ldapsearch -h 10.10.0.128 -D'CN=admin,OU=mis_account,OU=ma_mpk_mis,OU=ma_mpk,OU=ma_cn,OU=ma,DC=getacad,DC=com' -w youpasswd -b "DC=getacad,DC=com" -s sub"(objectClass=employee)" givenName

如果執行下來有數據證明連接到AD是沒有問題了。

3),在網站的根目錄下面有個叫maintenance去下面找到一個叫update.php文件執行更新一下。

[root@mediawiki maintenance]# php update.php
執行是讓你先備份數據庫,因爲執行有可能會失敗,如果是新的網站可以直接執行。這樣回到主頁面調試一下發現自己的域賬號就可以登錄了。

4),之前有見到新浪上的文章說,大概意思如下:

在初次配置時出現ad賬號無法登錄,現象如下:
1、沒有註冊過本地賬號的新用戶選擇域認證,顯示無法自動創建賬號。
2、本地註冊過的用戶選擇域認證,顯示出現嚴重的數據庫錯誤。可能是存在漏洞或xxx,然後可以登錄進來。
按照這2種報錯信息無法判斷問題出現在哪裏,通過ldap日誌文件查看有通過AD認證並且有authenticate
passed的字樣,並且通過本地註冊過的用戶確實通過AD密碼可以登錄,故判斷ladp部分配置應該正確。
在網上查找mediawiki的錯誤日誌查看發現有debug功能可以打開,上面已經註明。打開後看到了具體報錯信息,是顯示沒有一個表。
3、數據庫是在mediawiki第一次部署時自動創建的,並沒有這個表,故判斷可能AD認證相關功能需要額外的表支持,mediawiki通過AD認證後獲取的用戶名自動創建到自己的user表中。所以會有賬號創建的過程,可能在此過程中需要一張表,這在網上的mediawiki集成ldap的教程中都未體現。
4、根據報錯信息在mysql中創建一個表,並創建相關字段後,使用沒有註冊過的本地賬號選擇域賬號認證後可以正常登錄。在user表中也自動創建了登錄的用戶。

針對這個問題,我想說的是更新一下LDAP插件到LdapAuthentication-master-662eaaf.tar.gz這個版本,然後在根目錄下的maintenance執行update.php基本就沒有那些問題了,我測試這個版本目前是沒有這種問題了。當然有問題還請博友告知,然後我登錄數據庫的時候發現多了一個表字段。

MariaDB [(none)]> SHOW INDEX FROM `wikidatabase`.`ldap_domains`;
+--------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table        | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| ldap_domains |          0 | PRIMARY  |            1 | domain_id   | A         |           6 |     NULL | NULL   |      | BTREE      |         |               |
| ldap_domains |          1 | user_id  |            1 | user_id     | A         |           6 |     NULL | NULL   |      | BTREE      |         |               |
+--------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)

最後要說的是查看LDAP日誌需要到/tmp/systemd-private-1aeb9eff3a37476da654dcbb0d2d7260-httpd.service-jJJF6S類似這樣的一個目錄下面的/tmp/ldap.log怎麼會這樣呢?我也說不清楚,調試時能看到動態信息,還是管用的。

四、配置首頁logo圖片

在網頁根目錄下找到/var/www/mediawiki/resources/assets並上傳做好的圖片至此處。

[root@wiki mediawiki]# cd  /var/www/mediawiki/resources/assets

五、設置網站的時區

在此設置的是上海時區修改LocalSettings.php

[root@wiki mediawiki]# vim LocalSettings.php +41
#timezone configure
$wgLocaltimezone = "Asia/Shanghai";
date_default_timezone_set( $wgLocaltimezone );

六、設置郵件地址

 [root@wiki mediawiki]# vim LocalSettings.php +56
 $wgEmergencyContact = "[email protected]";
 $wgPasswordSender = "[email protected]";

總結:

       從運維的角度來看基本的網站已經搭建好了,剩下就是來發來優化網站的一些功能了,等真正上線的時候需要給網站做個定時備份數據庫的功能,還有什麼需要補充的,請博友提提建議。

參考網站:

升級php7方法:

https://blog.csdn.net/u012569217/article/details/77506902

升級MariaDB方法:

https://www.cnblogs.com/operationhome/p/9141881.html

LDAP加載:

https://www.mediawiki.org/wiki/Extension_talk:LDAP_Authentication

https://m.mediawiki.org/wiki/Manual:Update.php

https://www.pickysysadmin.ca/2013/05/13/how-to-configure-mediawiki-to-authenticate-against-active-directory-on-centos/










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章