FILE & LINK

미디어위키에 CKEditor(위지윅 에디터) 익스텐션 + LDAP 익스텐션 연동시키려면 버전 조합에 신경써야 한다.
왜냐하면 CKEditor의 경우 아래 링크에서 확인할 수 있듯이 연동을 지원하는 미디어위키 버전이 제한적이며(CKEditor는 브라우저 호환성 썩 좋지 않다)...
http://www.mediawiki.org/wiki/Extension:WYSIWYG
브라우저별 CKEditor 테스트 결과(스마트폰, 태블릿 류는 안 되는 듯)
Desktop
IE 10 - O
Firefox 26 - O
Chrome - O
Mobile
iPhone 5 Safari - X
iPad 4 Safari - X
Galaxy 2 - X
LDAP 모듈의 경우 2014년 1월 현재 최신버전인 1.22.0(2013-12-06)을 지원하는 LDAP extension이 없다. ㅋ
http://www.mediawiki.org/wiki/Extension:LDAP_Authentication
MediaWiki 1.14 [2]
MediaWiki 1.15 [2]
MediaWiki 1.16 [2]
MediaWiki 1.17.3
MediaWiki 1.18.6
MediaWiki 1.19.1
MediaWiki 1.20.3
MediaWiki 1.21.1
그래서 아래 조합으로 설치
OS : RHEL 6.5 x86_64
Apache : 2.2.20
PHP : 5.4.8
MySQL : 5.5.13
Mediawiki : 1.21.1
Extension:WYSIWYG (ckeditor) : WYSIWYG_MW_v1.20.2.zip
Extension:LDAP : 2.0c-31-g300d43f
http://test.asenjo.nl/index.php/Mediawiki_ipa
1. PHP 5.4.8 컴파일 설치
① 64bit RHEL의 경우(RHEL 6.4 x86_64)의 경우 openldap-devel 패키지의 /usr/lib64/libldap.so 를 /usr/lib에 심볼릭링크한다. 안 해주면 php 컴파일 시 ldap 헤더를 못 찾는다고 나오기 때문
[root@wiki php-5.2.11]# ln -s /usr/lib64/libldap.so /usr/lib/
② PHP 컴파일 ("--with-ldap", "--with-ldap-sasl" 옵션 포함)
[root@wiki php-5.2.11]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --enable-mod-charset --with-config-file-path=/usr/local/apache/conf --enable-sigchild --with-libxml-dir --with-openssl --with-zlib --with-zlib-dir --with-bz2 --enable-calendar --with-curl --enable-dba --with-gdbm --enable-exif --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-gd-native-ttf --with-gettext --with-imap --with-imap-ssl --with-kerberos --enable-mbstring --with-mhash --with-mcrypt --with-mysql=/usr/local/mysql --enable-sockets --with-regex=php --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-ldap --with-ldap-sasl
Generating files
updating cache ./config.cache
creating ./config.status
creating php5.spec
creating main/build-defs.h
creating scripts/phpize
creating scripts/man1/phpize.1
creating scripts/php-config
creating scripts/man1/php-config.1
creating sapi/cli/php.1
creating main/php_config.h
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
[root@wiki php-5.2.11]# make && make install
2. PHP 가속기 설치
※ 참고링크
http://jmnote.com/wiki/Cannot_find_config.m4.
http://blog.keypointer.co.kr/?p=137
[root@wiki www]# /usr/local/php/bin/pecl version
PEAR Version: 1.9.4
PHP Version: 5.4.8
Zend Engine Version: 2.4.0
Running on: Linux wiki.idc-lds.co.kr 2.6.32-431.1.2.el6.x86_64 #1 SMP Sun Nov 24 09:37:37 EST 2013 x86_64
[root@wiki www]#
[root@wiki oci8]# pwd
/usr/local/src/APM/php-5.4.8/ext/oci8
[root@wiki oci8]#
[root@wiki oci8]# /usr/local/php/bin/pecl install apc
downloading APC-3.1.13.tgz ...
Starting to download APC-3.1.13.tgz (171,591 bytes)
.....................................done: 171,591 bytes
55 source files, building
WARNING: php_bin /usr/local/php/bin/php appears to have a suffix /bin/php, but config variable php_suffix does not match
running: phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
ERROR: `phpize' failed
[root@wiki oci8]#
[root@wiki oci8]# vi /tmp/patch-pear-builder.txt
--- Builder.php 2009-05-05 09:41:01.000000000 -0700
+++ Builder.php 2009-05-05 08:43:28.000000000 -0700
@@ -457,7 +457,16 @@
$callback[0]->debug = $olddbg;
}
- $exitcode = is_resource($pp) ? pclose($pp) : -1;
+ if (is_resource($pp)) {
+ $exitcode = pclose($pp);
+ // If PHP was compiled with --enable-sigchild, pclose() return
+ // values cannot be trusted. (See http://bugs.php.net/bug.php?id=29123)
+ if ($this->_hasConfigureSetting('enable-sigchild') && $exitcode == -1) {
+ $exitcode = 0;
+ }
+ } else {
+ $exitcode = -1;
+ }
return ($exitcode == 0);
}
@@ -471,4 +480,35 @@
}
return PEAR_Common::log($level, $msg);
}
+
+ /**
+ * See if PHP was built with the particular configuration setting.
+ * Useful for checking whether --enable-sigchild is active; if it
+ * is, pclose() return values can't be trusted.
+ *
+ * @param string $setting the setting to check for. Will automatically
+ * have any leading dashes stripped.
+ *
+ * @return bool whether the setting is present
+ */
+
+ function _hasConfigureSetting($setting) {
+ $setting = preg_replace("/^-+/", '', $setting);
+
+ ob_start();
+ phpinfo(1);
+ $cc = ob_get_clean();
+ foreach (explode("\n", $cc) as $line) {
+ if (array_shift(explode(' => ', $line)) == "Configure Command") {
+ $config = explode('___', preg_replace("/'\s+'/", "'___'", array_pop(explode(' => ', $line, 2))));
+ break;
+ }
+ }
+ foreach ($config as $opt) {
+ if (false !== strpos($opt, $setting)) {
+ return true;
+ }
+ }
+ return false;
+ }
}
\ No newline at end of file
[root@wiki oci8]# cd /usr/local/php/lib/php/PEAR
[root@wiki PEAR]# cp Builder.php Builder.php.bak
[root@wiki PEAR]# patch -p0 < /tmp/patch-pear-builder.txt
patching file Builder.php
Hunk #1 succeeded at 472 (offset 15 lines).
Hunk #2 succeeded at 495 (offset 15 lines).
[root@wiki PEAR]# cd /usr/local/src/APM/php-5.4.8/ext/oci8
[root@wiki oci8]# /usr/local/php/bin/pecl install apc
(중략)
Build process completed successfully
Installing '/usr/local/php/include/php/ext/apc/apc_serializer.h'
Installing '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/apc.so'
install ok: channel://pecl.php.net/APC-3.1.13
configuration option "php_ini" is not set to php.ini location
You should add "extension=apc.so" to php.ini
[root@wiki oci8]#
▼ php.ini에 아래 내용 추가
[apc]
extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/apc.so"
여기까지 했으면 아파치 재시작하여 APC 적용
3. Mediawiki 설치 후 Mediawiki용 LDAP extension 설치
① extensions 디렉토리에 아래 tar.gz 파일 압축 풀고 디렉토리명을 LdapAuthentication 로 변경
wikimedia-mediawiki-extensions-LdapAuthentication-2.0c-31-g300d43f.tar.gz
② extension 설치하면 아래 명령어로 데이터베이스 업데이트
[root@wiki www]# /usr/local/php/bin/php ./maintenance/update.php
③ Mediawiki의 LocalSettings.php 파일에 아래 내용 추가
require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" );
$wgAuth = new LdapAuthenticationPlugin();
# Domain name
$wgLDAPDomainNames = array(
"idc-lds.co.kr",
);
$wgLDAPServerNames = array( "idc-lds.co.kr" => "ns.idc-lds.co.kr" );
$wgLDAPSearchStrings = array(
"idc-lds.co.kr" => "uid=USER-NAME,cn=users,cn=accounts,dc=idc-lds,dc=co,dc=kr"
);
$wgLDAPEncryptionType = array(
"idc-lds.co.kr" => "ssl"
);
# user and password for proxy agent. Use unprivileged user!!!
$wgLDAPProxyAgent = array(
"idc-lds.co.kr"=>"uid=mediawikiuser,cn=users,cn=accounts,dc=idc-lds,dc=co,dc=kr"
);
$wgLDAPProxyAgentPassword = array(
"idc-lds.co.kr"=>"mediawikiuserpassword"
);