'2014/05'에 해당되는 글 8건
- 2014.05.23 Eclipse Color Theme Plugin
- 2014.05.22 리눅스 PHP PDO dblib FreeTDS 사용 (MSSQL)
- 2014.05.22 리눅스 unixODBC FreeTDS 설치 (MSSQL)
- 2014.05.22 Linux uninxODBC SQL Server Native Client 11.0 한글문제 2
- 2014.05.21 unixODBC SQL Server Native Client 11.0 설치 (MSSQL)
- 2014.05.21 PHP5.3/5.4/5.5 Yum 설치 / 소스컴파일 php-fpm
- 2014.05.21 [Nginx] 간단한 yum 설치
- 2014.05.21 미디어위키 썸네일(mediawiki thumbnail) 기능 추가
Linux uninxODBC SQL Server Native Client 11.0 한글문제 - http://www.opens.kr/35
※ SQL Server Native bind 처리도 문제있는 듯하다 ㅠㅠ
※ FreeTDS bindValue 쓰면 되는 것 처럼 보이는 데
실제 SQL Server Profiler 해보면 prepare statement bind 안되어서 들어온다ㅠㅠ;;
PHP5.3/5.4/5.5 Yum 설치 - http://www.opens.kr/33 으로 PHP 설치 사용했다면
그냥 yum install php55w-mssql 만 설치하면 자동으로 설치가 다 된다.
1) 설치
$ yum install php55w-mssql ================================================================================== Package Arch Version Repository Size ================================================================================== Installing: php55w-mssql x86_64 5.5.12-1.w6 Installing for dependencies: freetds x86_64 0.91-2.el6 php55w-pdo x86_64 5.5.12-1.w6 unixODBC x86_64 2.2.14-12.el6_3 Transaction Summary ================================================================================== Install 4 Package(s)
2) 접속 테스트 아래 링크에 tsql / isql 이용해서 하면된다.
리눅스 unixODBC FreeTDS 설치 (MSSQL) - http://www.opens.kr/36
3) 글로벌 설정
$ vi /etc/freetds.conf ------------------------ [global] tds version = 8.0 client charset = UTF-8 text size = 64512 timeout = 10 connect timeout = 10 ------------------------
※ TDS protocol 버전정보와 자세한 옵션 정보는 아래 freetds 사이트 가이드 참조하면 된다.
http://www.freetds.org/userguide/choosingtdsprotocol.htm
http://www.freetds.org/userguide/
4) PHP PDO에서 접속예시
$dsn = 'dblib:host=192.168.0.0;dbname=DBNAME'; $user = "user_id"; $password = "user_password"; try { $dbh = new PDO($dsn, $user, $password); } catch (PDOException $e) { echo $e->getMessage(); } $sQuery = "select * from sysobjects where xtype = 'U'"; $sth = $dbh->prepare($sQuery); $sth->execute(); $result = $sth->fetchAll(PDO::FETCH_ASSOC); print_r($result);
리눅스에서 MSSQL 서버 접근할려고 MS에서 제공해주는 라이브러리 설치했지만 이래저래
문제가 많아서 FreeTDS를 사용하기로 결정했다.
리눅스 SQL Server(MSSQL) ODBC 설치 - http://www.opens.kr/34
Linux uninxODBC SQL Server Native Client 11.0 한글문제 - http://www.opens.kr/35
FreeTDS Yum 간단 설치 방법
1) 저장소 등록 ( 다른곳을 이용해도 무관함 )
$ rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
2) Yum 설치
$ yum install freetds unixODBC
=================================================================================================================
Package Arch Version Repository Size
=================================================================================================================
Installing:
freetds x86_64 0.91-2.el6 webtatic 567 k
unixODBC x86_64 2.2.14-12.el6_3 base 378 k
Installing for dependencies:
libtool-ltdl x86_64 2.2.6-15.5.el6 base 44 k
Transaction Summary
=================================================================================================================
Install 3 Package(s)
3) tsql을 이용한 접속테스트
$ tsql -H 192.168.0.0 -p 1433 -U username -P userpassword
참조 가이드 : http://www.freetds.org/userguide/confirminstall.htm
4) ODBC에 FreeTDS등록
vi /etc/odbcinst.ini
----------------------------------
[FreeTDS]
Description = FreeTDS Driver
Driver = /usr/lib64/libtdsodbc.so.0
Setup = /usr/lib64/libtdsS.so.2
FileUsage = 1
CPTimeout = 5
CRReuse = 5
----------------------------------
5) isql을 이용한 접속 테스트
vi /etc/odbc.ini
----------------------------------
[MSSQLTEST]
driver=FreeTDS
server=192.168.0.0
port=1433
database=DBNAME
client_charset = UTF-8
tds_version = 8.0
----------------------------------
$ isql -v MSSQLTEST username userpassword
+---------------------------------------+
| Connected!
|
| sql-statement
| help [tablename]
| quit
|
+---------------------------------------+
※ ODBC 정보확인은 아래와 같이
$ odbcinst -j
unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
※ PHP PDO나 타 개발언어에서 사용시
$ vi /etc/freetds.conf의 [global]에 기본 tds_version 버젼과 client_charset 지정해주는 게 좋을 듯하다.
-------------------------------
[global]
tds version = 8.0
client charset = UTF-8
text size = 64512
-------------------------------
※ 리눅스 PHP PDO dblib FreeTDS 사용 (MSSQL) - http://www.opens.kr/37
MSSQL에서 UTF-8 텍스트를 데이터를 넣을때 NVARCHAR타입으로 해서
INSERT INTO table ( text ) value ( N'한글테스트' ) 이런식으러 넣는 다
그런데 리눅스에서 PDO에서 uninxODBC SQL Server Native Client 11.0 넣으면 제대로 들어가지 않고 깨진다
그래서 아래 처럼 UTF-16LE로 변환해서 hexcode로 넣으니까 잘된다..
$sName = iconv('utf-8','UTF-16LE',$sName); $sName = bin2hex($sName); $sQuery = "INSERT INTO table (name) VALUES ( 0x{$sName} )";
그리고 값을 가져올때 가끔식 일부데이터는 문제가 또 발생한다 ㅠㅠ
그래서 CAST 로 한번 변환해주니까 잘된다..
참가로 NVARCHAR(MAX)로 하니까 글이 전혀 나오지 않아서 그냥 NTEXT로 꽁수를 부렸다..
$sQuery = "SELECT CAST(name AS NTEXT) AS name FROM table ";
그리고 참고로 PHP5.3.3 버전에서 PDO ODBC nvarchar(max)데이터 어느 정도 이상되면 깨지는 현상이 나오는듯하다.
그래서 PHP5.5.12 / PHP5.4.28 / PHP5.3.28에서는 CAST해서 하면 큰 문제가 없다.
아무튼 Linux uninxODBC SQL Server Native Client 11.0 이래저래 문제가 좀 있는듯하다.
그래서 개인적으로는 Linux에서 MSSQL 연결하는 경우 SQL Server Native Client 보다는 FreeTDS를 사용을 권하고 싶다.
MS사이트 : http://www.microsoft.com/en-us/download/details.aspx?id=28160
1) 파일다운로드 ( centos6 64bit의 경우 Linux6을 선택 다운로드 안될때 MS사이트 URL확인 )
2) 압축풀고 build_dm실행
$ tar xvfz sqlncli-11.0.1790.0.tar.gz
$ cd sqlncli-11.0.1790.0
$ ./build_dm.sh //실행후 나오는 디렉토리 기준으로 make 실행
Enter 'YES' to have this script continue: YES
Verifying processor and operating system ................................... OK
Verifying wget is installed ................................................ OK
Verifying tar is installed ................................................. OK
Verifying make is installed ................................................ OK
Downloading unixODBC 2.3.0 DriverManager ................................... OK
Unpacking unixODBC 2.3.0 DriverManager ..................................... OK
Configuring unixODBC 2.3.0 DriverManager ................................... OK
Building unixODBC 2.3.0 DriverManager
...................................... OK
Build of the unixODBC 2.3.0 DriverManager complete.
Run the command 'cd /tmp/unixODBC.32631.28583.22057/unixODBC-2.3.0; make install' to install the driver manager.
PLEASE NOTE THAT THIS WILL POTENTIALLY INSTALL THE NEW DRIVER MANAGER OVER ANY
EXISTING UNIXODBC DRIVER MANAGER. IF YOU HAVE ANOTHER COPY OF UNIXODBC INSTALLED,
THIS MAY POTENTIALLY OVERWRITE THAT COPY.
3) 위에 tmp 경로에서 make install 실행
$ cd /tmp/unixODBC.32631.28583.22057/unixODBC-2.3.0
$ make install
touch /etc/odbcinst.ini
touch /etc/odbc.ini
mkdir -p /etc/ODBCDataSources
/usr/bin/odbc_config --header > /usr/include/unixodbc_conf.h
make[2]: Leaving directory `/tmp/unixODBC.32631.28583.22057/unixODBC-2.3.0'
make[1]: Leaving directory `/tmp/unixODBC.32631.28583.22057/unixODBC-2.3.0'
4) install 실행
$ cd /root/sqlncli-11.0.1790.0
$ ./install.sh verify
Microsoft SQL Server ODBC Driver V1.0 for Linux Installation Script
Copyright Microsoft Corp.
Starting install for Microsoft SQL Server ODBC Driver V1.0 for Linux
Checking for 64 bit Linux compatible OS ..................................... OK
Checking required libs are installed ........................................ OK
unixODBC utilities (odbc_config and odbcinst) installed ..................... OK
unixODBC Driver Manager version 2.3.0 installed ............................. OK
unixODBC Driver Manager configuration correct .............................. OK*
Microsoft SQL Server ODBC Driver V1.0 for Linux already installed .... NOT FOUND
Install log created at /tmp/sqlncli.18759.30552.14202/install.log.
One or more steps may have an *. See README for more information regarding
these steps.
$ ./install.sh install
Enter YES to accept the license or anything else to terminate the installation: YES
Checking for 64 bit Linux compatible OS ..................................... OK
Checking required libs are installed ........................................ OK
unixODBC utilities (odbc_config and odbcinst) installed ..................... OK
unixODBC Driver Manager version 2.3.0 installed ............................. OK
unixODBC Driver Manager configuration correct .............................. OK*
Microsoft SQL Server ODBC Driver V1.0 for Linux already installed .... NOT FOUND
Microsoft SQL Server ODBC Driver V1.0 for Linux files copied ................ OK
Symbolic links for bcp and sqlcmd created ................................... OK
Microsoft SQL Server ODBC Driver V1.0 for Linux registered ........... INSTALLED
Install log created at /tmp/sqlncli.27629.13209.11572/install.log.
One or more steps may have an *. See README for more information regarding
these steps.
$ vi /etc/odbcinst.ini //odbc추가확인
[SQL Server Native Client 11.0]
Description=Microsoft SQL Server ODBC Driver V1.0 for Linux
Driver=/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0
Threading=1
UsageCount=1
5) 최종 설치 결과확인
$ ./install.sh verify
Microsoft SQL Server ODBC Driver V1.0 for Linux Installation Script
Copyright Microsoft Corp.
Starting install for Microsoft SQL Server ODBC Driver V1.0 for Linux
Checking for 64 bit Linux compatible OS ..................................... OK
Checking required libs are installed ........................................ OK
unixODBC utilities (odbc_config and odbcinst) installed ..................... OK
unixODBC Driver Manager version 2.3.0 installed ............................. OK
unixODBC Driver Manager configuration correct .............................. OK*
Microsoft SQL Server ODBC Driver V1.0 for Linux already installed .... INSTALLED
6) isql 이용한 접속테스트
$ vi /etc/odbc.ini
-------------------------
[MSSQLTEST]
driver=SQL Server Native Client 11.0
server=192.168.0.0
port=1433
database=DBNAME
-------------------------
$ isql -v MSSQLTEST userid userpassword
+---------------------------------------+
| Connected!
|
| sql-statement
| help [tablename]
| quit
|
+---------------------------------------+
※ PHP에는 PDO ODBC에는 odbcinst.ini에 등록된 이름으로 odbc.ini처럼 지정해주면됨
=> odbc:DRIVER=SQL Server Native Client 11.0;Server=192.168.0.0;port=1433;database=dbname;
※ C컴파일에러시 gcc설치할것!!
view /tmp/unixODBC.19411.11370.8462/build_dm.log
yum install gcc
※ ODBC 정보확인은 아래와 같이
$ odbcinst -j
unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
PHP Yum 설치 http://webtatic.com/
버젼별 설치 방법
http://webtatic.com/packages/php53/
http://webtatic.com/packages/php54/
http://webtatic.com/packages/php55/
http://webtatic.com/packages/php56/
1) 저장소 등록( PHP5.5기준 / Centos6 )
$ rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
$ ll /etc/yum.repos.d
-rw-r--r-- 1 root root 888 Jul 8 2013 webtatic-archive.repo
-rw-r--r-- 1 root root 790 Jul 8 2013 webtatic.repo
-rw-r--r-- 1 root root 888 Jul 8 2013 webtatic-testing.repo
2) php패키지 확인
$ yum search php55w
3) PHP 설치
$ yum install php55w php55w-fpm php55w-mysqlnd php55w-odbc php55w-opcache php55w-pdo php55w-mcrypt php55w-mbstring
$ php -v
PHP 5.5.12 (cli) (built: May 1 2014 20:34:46)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
4) 웹서버에 PHP 적용
Apache : httpd.conf 에 PHP Module 추가
Nginx : php-fpm (/etc/init.d/php-fpm start) 실행 후 conf.d의 conf파일에 FastCGI server listening 설정
PHP 소스설치
1) 파일 다운로드
http://www.php.net/downloads.php
2) php net에 웹서버별 메뉴얼 참조
http://www.php.net/manual/en/install.unix.php
3) 필요한 라이브러리 경우 각 라이브러리 메뉴얼 참조해서 컴파일 옵션에 추가
예시) pdo odbc의 경우 http://us.php.net/manual/en/ref.pdo-odbc.php
./configure --with-pdo-odbc=unixODBC,/usr/local
위와 같이 unixODBC librarie 경로 지정 해줘야됨 yum으로 보통 /usr/lib or /usr/lib64이므로 아래와 같이하면됨
./configure --with-pdo-odbc=unixODBC,/usr
기타 기본 탑재 라이브러리는 --enable-mbstring --enable-fpm 형태로 적용하면됨
Nginx yum install( CentOS6 )
1) nginx 에서 제공해주는 저장소 등록
$ rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
Retrieving http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
warning: /var/tmp/rpm-tmp.U4wAT5: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing... ########################################### [100%]
1:nginx-release-centos ########################################### [100%]
$ ll /etc/yum.repos.d/
-rw-r--r-- 1 root root 113 Oct 14 2011 nginx.repo
$ yum repolist
nginx nginx repo 56
===================================================================================================
CentOS 5.x :
wget http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm
rpm -Uvh nginx-release-centos-5-0.el5.ngx.noarch.rpm
CentOS 6.x :
wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
rpm -Uvh nginx-release-centos-6-0.el6.ngx.noarch.rpm
===================================================================================================
2) yum install
$ yum install nginx
=================================================================================================================
Package Arch Version Repository Size
=================================================================================================================
Installing:
nginx x86_64 1.6.0-1.el6.ngx nginx 335 k
3) conf 설정파일
$ vi /etc/nginx/nginx.conf
$ vi /etc/nginx/conf.d/default.conf
4) Nginx 실행 및 명령어
$ /etc/init.d/nginx
Usage: nginx {start|stop|restart|condrestart|try-restart|force-reload|upgrade|reload|status|help|configtest}
$ /etc/init.d/nginx start
Starting nginx: [ OK ]
$ ps aux | grep nginx
root 30106 0.0 0.0 45040 1124 ? Ss 14:52 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 30107 0.0 0.0 45412 1732 ? S 14:52 0:00 nginx: worker process
※ 소스설치
소스파일 다운로드 : http://nginx.org/en/download.html
컴파일 옵션 참조 : http://wiki.nginx.org/InstallOptions
미디어 위키 갤러리페이지 보니까 너무 느려서 답답하고 브라우져가 뻗음......
확인결과 썸네일 기능이 전혀 사용하지 않아서 원본이미지가......ㄷㄷㄷ
그래서 찾아보니 썸네일 기능을 제공하는 듯하다
http://www.mediawiki.org/wiki/Manual:Installing_third-party_tools
Image thumbnailing
Image thumbnailing requires either ImageMagick or GD library. ImageMagick is recommended since it produces better quality thumbnails. It can be downloaded from http://www.imagemagick.org. GD can be downloaded fromhttp://boutell.com/gd.
ImageMagick
MediaWiki can be configured to use ImageMagick to do dynamic resizing and thumbnailing of images. ImageMagick is available for Windows, Unix, Mac OS, and Linux from http://www.imagemagick.org/script/index.php. Once ImageMagick is installed, you must enable ImageMagick and point MediaWiki to the convert
or convert.exe
program on your computer in LocalSettings.php like this:
$wgUseImageMagick = true; #$wgImageMagickConvertCommand = 'C:/ImageMagick/convert.exe'; # for windows $wgImageMagickConvertCommand = '/usr/bin/convert'; # for linux
For information on configuring MediaWiki for images in general see Manual:Image Administration and Manual:Configuration settings#Images. For information on installing ImageMagick on Windows, see Manual:Newcomers guide to installing on Windows#ImageMagick.
보니까 ImageMagick 깔려있어야되는 듯함
※ 설치과정
1) ImageMagick 설치
yum install ImageMagick
========================================================================================================= Package Arch Version Repository Size
=========================================================================================================
Installing:
ImageMagick x86_64 6.5.4.7-7.el6_5 updates 1.7 M
=========================================================================================================
2) 홈디렉토리에 LocalSettings.php 설정파일에서 썸네일 기능 활성화 주석제거
$wgUseImageMagick = true; $wgImageMagickConvertCommand = "/usr/bin/convert";
//리눅스 프로세스 리스트 보니까....썸네일 자체가 백엔드에서 Shell 로 돌는듯하다.
//window서버의 경우 위에 for windows 참조
3) 썸네일 불가 에러 발생 이미지 용량 너무큼.. thumbnail Shell 처리시 사이즈가 설정 메모리 용량 초과
$wgMaxShellMemory라는 게 있다!! 아래 링크참조
http://www.mediawiki.org/wiki/Manual:$wgMaxShellMemory
그래서 LocalSettings.php 에 아래 MaxShellMemory 변수값 추가함
$wgMaxShellMemory = 1024000;
//Note: 102400 KB = 100 MB, 307200 KB = 300 MB, etc.
//나 같은 경우 MaxUploadSize 와 동일하게 맞추어주었다
//회사 내부적이나 공개용이 아닌 일부 소수 사용자간에 사용되는 위키라면 넉넉하게 설정해 놓는 게 좋을듯함