Tunnelblick

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

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

참고

Piwik 설치

또 다른 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. 참고

Mac OS X에서 SSH Tunnel 사용하기

보안을 위해 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 이 동작했다.

참고