May 21

개인적으로 사용 중인  OpenVPN 의 Mac용 클라이언트 프로그램의 Tunnelblick의 한글 번역이 잘 못 되었는 것을 변경하여 보냈는데, 오늘 r79에 추가되었다고 이메일로 답변을 받았다.

내가 잘 못 번역했을 지 모르지만 앞으로 기존 배포 본 처럼 독일어와 한국어가 섞어있진 않을 것이다.

참고

Mar 20

또 다른 Google Analytics라는 거대한 목표를 잡고 있는 Open Source Web Analytics 툴 Piwik !

아직 버전이 0.2.32지만 동작 방식이 궁금하여 MacBook에 Piwik를 설치하여 테스트를 해보았다.

처음 다운로드 받아보니 설치 단계를 진행하려고 보니 MacBook에는 PHP용 GD, PDO_MySQL이 설치되어 있지 않았다.

GD, PDO_MySQL을 컴파일하여 실행해보았으나

Piwik 설치 단계 중 데이터베이스 설정하는 부분에서 빈 페이지가 출력되었다.

Crash 로그 파일을 보니 다음과 같다

Process:         httpd [468]
Path:            /usr/sbin/httpd
Identifier:      httpd
Version:         ??? (???)
Code Type:       X86-64 (Native)
Parent Process:  httpd [467]

Date/Time:       2009-03-20 00:31:41.986 +0900
OS Version:      Mac OS X 10.5.6 (9G55)
Report Version:  6

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000008
Crashed Thread:  0

Application Specific Information:
*** single-threaded process forked ***

Thread 0 Crashed:
0   libphp5.so                    	0x00000001012e27df mysql_send_query + 95
1   libmysqlclient.16.dylib       	0x0000000101f3a1bc mysql_real_query + 17
2   pdo_mysql.so                  	0x0000000101f0cc82 pdo_mysql_stmt_execute + 1852
3   libphp5.so                    	0x00000001010d383c zim_PDOStatement_execute + 593

PHP와 MySQL, PDO_MySQL에서 문제가 발생되는 상태였다.

여러가지를 해보아도 동일한 상태였기 때문에 i386 (32-bit) 모드 재구성을 해보기로 했다.

다행하게도(?) 32-bit에서는 정상적으로 동작을 했다.

테스트된 환경은 다음과 같다.

Mac OS X 10.5.6

Apache 2.2.6 (OS 번들)

PHP 5.2.6 (번들)

MySQL 5.0.67 (별도 설치한 binary tar)

1. 컴파일 및 설치

MySQL 32-bit를 받아서 /usr/local/mysql에 설치했다.

그리고 GD 라이브러리를 32-bit 모드로 컴파일하고 설치했다.

barney-macbook: barney$ sudo -i
barney-macbook: root# mkdir source
barney-macbook: root# wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
barney-macbook: root# wget http://www.libgd.org/releases/gd-2.0.35.tar.gz
barney-macbook: root# cd source
barney-macbook: root# tar xzpf ../jpegsrc.v6b.tar.gz
barney-macbook: root# tar xzpf ../gd-2.0.35.tar.gz
barney-macbook: root# cd jpeg-6b
barney-macbook: root# ./configure --enable-shared
barney-macbook: root# make
barney-macbook: root# make test
barney-macbook: root# make install
barney-macbook: root# cd ../gd-2.0.35
barney-macbook: root# ./configure --disable-dependency-tracking
barney-macbook: root# make
barney-macbook: root# make test
barney-macbook: root# make install

PHP용 GD, PDO_MySQL 확장 모듈을 컴파일하기 위해 해당 소스를 받아 컴파일 했다.

barney-macbook: root# cd ..
barney-macbook: root# wget http://www.opensource.apple.com/darwinsource/10.5.6/apache_mod_php-44.1/php-5.2.6.tar.bz2
barney-macbook: root# tar xjf php-5.2.6.tar.bz2
barney-macbook: root# cd php-5.2.6/ext/gd
barney-macbook: root# phpize
barney-macbook: root# ./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/bin --with-png-dir=/usr/X11R6 --with-freetypedir=/usr/X11R6 --with-xpm-dir=/usr/X11R6
barney-macbook: root# make
barney-macbook: root# make test
barney-macbook: root# make install
barney-macbook: root# cd ../pdo_mysql
barney-macbook: root# ./configure --with-zlib-dir=/usr --with-pdo-mysql=/usr/local/mysql
barney-macbook: root# make
barney-macbook: root# make test
barney-macbook: root# make install
barney-macbook: root# ls `php-config --extension-dir`
gd.so pdo_mysql.so phpcups.so

이제 만들어진 PHP 확장 모듈을 사용하기 위해서 php.ini을 설정한다.

barney-macbook: root# cp /etc/php.ini.default /etc/php.ini
barney-macbook: root# vi /etc/php.ini
; 확장 모듈 디렉토리 주석 처리
;extension_dir = "./"
; 확장 모듈 활성화
extension=gd.so
extension=pdo_mysql.so

2. Apache 32-bit용 생성

이제 PHP는 준비가 되었으므로 Apache를 32-bit로 동작시키기 위해 변경작업을 한다

barney-macbook: root# apachectl stop
barney-macbook: root# mv /usr/sbin/httpd /usr/sbin/httpd.x86_64
barney-macbook: root# lipo -thin i386 /usr/sbin/httpd.x86_64 -output /usr/sbin/httpd.i386
barney-macbook: root# ln -s /usr/sbin/httpd.i386 /usr/sbin/httpd
barney-macbook: root# apachectl start

3. 참고

Sep 04

보안을 위해 SSH Tunnel을 사용하도록 설정된 환경에서 Mac OS X를 사용해야 했다.

Windows 환경이라면 SecureCRT 등과 같은 툴을 통해 쉽게 설정할 수 있다.

하지만 Mac OS X에서는 잘 되지 않았다.

먼저 터미널에서 SSH를 통해 Oracle을 포트를 시도해보았다.

$ ssh -L 127.0.0.1:1521:target-server:1521 user@ssh-server
user@ssh-server's password: user-password
user@ssh-server /home/user>

SSH 터널링이 잘된 것 같아서 터미널 창을 하나 더 띄우고 Oracle 접속을 테스트 했다.

$ sqlplus dbuser@db-server
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Oct 1 05:51:16 2008
Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
Enter password: db-password
ERROR:
ORA-12537: TNS:connection closed

이렇게 나오더니 SSH Tunnel을 만들었던 터미널에 다음과 같이 오류 메시지가 출력되었다.

channel 2: open failed: administratively prohibited: open failed

이 오류 메시지에 대해 해결 방안을 찾아 여러가지 시도해보았지만 잘 되지 않았다.
그리던 중 MacBook을 사용하는 다른 분에게 문의하니 한 소프트웨어를 소개해주었다.
바로 SSH Tunnel Manager 이다.
무료 소프트웨어이며 소스까지 공개되어있다.
이 소프트웨어를 사용하니 쉽게 SSH Tunnel 이 동작했다.

참고