달력

092010  이전 다음

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
  •  
##########################################################################
### 제목  : 리눅스서버의 PHP 에서  MySQL 연결시 ODBC 함수 사용하기
### 쓴때 : 2010-09-06 벌초하다가 죽을 뻔한 다음날
### 쓴이 : 카폐인 (nonots@hanmail.net)


1. 개요
 여태껏 리눅스 서버에서 PHP 로 웹프로그래밍 하면서  MySQL DBMS 에 
ODBC 로 연결해 본 적도 없고, 그렇게 할 필요도 전혀 못느꼈는데, 
어쩌다 보니 ..  그렇게 해야만 "돈준다"는 "갑"의 요청에, 
또 비장한 심정으로 삽질을 해보니 되긴 된다.
암튼 덕분에 새로운 경험이었다.


2. 서버 환경 
	- 리눅스 CentOS 4.8, 
		아파치웹서버 : 2.0, 
		PHP 5.13, 
		MySQL : 5.0


3. 설정방법

	1) php 에서 odbc 모듈이 활성화 되어야 한다. 
	만약 php 소스컴파일 당시 odbc 옵션이 없었다면 새로 컴파일 해야 할꺼다. 
	좀 짜증나는 일이다.
	만약 rpm 이나 deb 로 설치를 했다면 그냥 yum 혹은 apt-get 등으로 
	php-odbc 패키지만 설치하면 된다. 내경우 다행히  APM 이 rpm 으로 설치가 되어서 
	php-odbc 를 yum 으로 간단하게 설치했다.
	웹서버 재시작 후 phpinfo() 로 봤을 때 ODBC 항목이 제대로 나타나면 일단은 된거다.
	구체적 방법은 각자가.

	2) unixODBC 패키지를 설치한다.
	보통 서버 설치시 기본으로 설치가 되어 있을꺼다.
	안되어 있다면 역시 rpm 등으로 설치한다. 
	/etc/odbc.ini 나 /etc/odbcinst.ini 이런 파일이 존재한다면 이미 unixODBC 가
	설치되어 있다는 증거다.

	3) mysql odbc 커넥터를 설치한다.
	centos 리눅스의 경우 기본 배포디렉토리에는 없고,  
	http://ftp.neowiz.com/pub/centos/4.8/centosplus/x86_64/RPMS/ 와 같이
	cenosplus 라는 추가 배포 디렉토리에 mysql-connector-odbc-3.51 이름의 rpm이 있다.
	이걸 설치하면 된다.

		[root@home6 ~]# rpm -ql mysql-connector-odbc
		/usr/lib64/libmyodbc3-3.51.26.so
		/usr/lib64/libmyodbc3.so (요 파일경로가 아래에 사용)
		/usr/lib64/libmyodbc3_r-3.51.26.so
		/usr/lib64/libmyodbc3_r.so
		...

	아니면
	http://mysql.com/downloads/connector/odbc/ 와 같이 mysql 홈페이지에서 제공하는
	커넥터를 직접 다운 받아 설치하면 된다. 
	설치된 *.so 파일의 위치를 잘 기억해야한다.


	4) /etc/odbc.ini, /etc/odbcinst.ini 파일을 적절하게 수정한다.

		>>>>>>>
		[root@home6 ~]# cat /etc/odbc.ini 
		[ODBC Data Sources]
		myodbc3      = MySQL ODBC 3.51 Driver

		[myodbc3]
		Driver         = /usr/lib64/libmyodbc3.so
		Description  = MySQL ODBC 3.51 Driver
		Server        = localhost
		Port           = 3306
		User           = mydb_user  ( <= db 연결 아이디 적절하게 수정)
		Password    = mydb_password ( <= 적절하게 수정)
		Database    = mydb_name ( <= 적절하게 수정)
		Option        = 3   
		Socket       = /var/lib/mysql/mysql.sock ( <= 소켓파일위치 적절하게 수정)


		>>>>>>>
		[root@home6 ~]# cat /etc/odbcinst.ini 
		# Example driver definitinions
		#
		# Driver from the MyODBC package
		# Setup from the unixODBC package
		[MySQL ODBC 3.51 Driver]
		Description     = MySQL ODBC 3.51 Driver
		Driver          = /usr/lib64/libmyodbc3.so  
                                            ( 요건 mysql-connector-odbc  에서의 위치 )
		Setup           = /usr/lib64/libodbcmyS.so  
                                            ( 요건 unixODBC 에 포함된 위치, 아마 기본값)
		FileUsage       = 1
			 

		위 2 개 파일에서 db이름,아이디,비번과 mysql소켓파일을 적절하게 입력하고 
		특히, odbcinst.ini 파일에서 Driver 항목의 커넥터 so 파일의 위치를 적는다.
		이제 unixODBC 패키지 자체 포함된 isql 이라는 명령어로 odbc세팅이 잘된건지 
		아래와 같이 확인해 보자. 
		/etc/odbc.ini 에 설정한 db 와 db 아이디로 접속된다.

		[root@home6 ~]# isql -v myodbc3
		+---------------------------------------+
		| Connected!                            |
		|                                       |
		| sql-statement                         |
		| help [tablename]                      |
		| quit                                  |
		|                                       |
		+---------------------------------------+
		SQL> 
		 	

		그리고 마지막으로 위 설정파일에서 Description = MySQL ODBC 3.51 Driver 를
		잘 기억해 둔다.


4. PHP 소스에서 사용하기.
	이건 간단하다.
	아래 예제보면 금방 이해가 갈꺼다.

		<? 
		//phpinfo(); exit; 
		error_reporting(E_ALL);  // 디버깅 위한
		ini_set("display_errors",1);  // 디버깅 위한 2

		// 여기 DRIVER  부분이 /etc/odbc.ini 의 Description 부분이다. 주의한다.
		$conn = odbc_connect(
                  "DRIVER={MySQL ODBC 3.51 Driver};Server=localhost;Database=my_db_name", 
		  "my_db_user", "my_db_password"); 

		$sql = "SELECT * from users"; 
		$rs = odbc_exec($conn,$sql); 
		echo "<table><tr>"; 
		echo "<th>이름</th><th>이메일</th></tr>"; 
		while (odbc_fetch_row($rs)) 
		 { 
		 $user = odbc_result($rs,"username"); 
		 $email = odbc_result($rs,"email"); 
		 echo "<tr><td>$user</td><td>$email</td></tr>"; 
		} 
		odbc_close($conn); 
		echo "</table>"; 

		?>

	제대로 데이타를 불러오는가? 그럼 된거다. 
	이제 "을"의 설움을, 
        새로운 기술을 습득한 기쁨의 눈물로 승화시켰다고 자위하면 된다.

5. 마무리

	그런거 없다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 권기성

자연주의자의 충고

어떤 일이 일어나도
당신이 할 수 있는 최선을 다하라.

마음의 평정을 잃지 말라.
당신이 좋아하는 일을 찾으라.

집, 식사, 옷차림을 간소하게 하고 번잡스러움을 피하라.
날마다 자연과 만나고 발밑에 땅을 느껴라.

농장일이나 산책, 힘든 일을 하면서 몸을 움직여라.
근심 걱정을 떨치고 그날 그날을 살라.

날마다 다른 사람과 무엇인가 나누라.
혼자인 경우는 누군가에게 편지를 쓰고,

무엇인가 주고,
어떤 식으로든 누군가를 도우라.

삶과 세계에 대해 생각해 보는 시간을 가지라.
할 수 있는 한 생활에서 웃음을 찾으라.

모든 것 속에 들어 있는 하나의 생명을 관찰하라.
그리고 세상의 모든 것에 애정을 가지라.

헬렌 니어링, 스코드 니어링
(조화로운 삶을 실천한 유명한 자연주의자 부부)


======================================================================
흙을 밟고 싶다.
사람의 발바닥은 퇴화된 뿌리의 흔적일지도.
스스로 잘라버린 땅속 뿌리의 기억을 떠올려본다.
매정하게 등지고 떠났던 대지의 촉촉한 속살이 그리워진다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 권기성
### 내 환경 ### 
노트북 :  델 studio14, intel P8700, 4G 램
윈도7 에서 virtualbox 3.2.6 에 게스트로 mac os X  10.6(Snowleopard) 설치


1)
vmware 에서 게스트로 macosx 설치는 비교적 쉬웠는데, virtualbox 에서는 잘 안됐다.
어떤 사람은 그냥 virtualbox 기본 상태에서 막바로 다른 os 설치하듯이 쉽게
설치되었다고 하는데 내 노트북에서는 cpu 탓인지.. 아니면 내가 구한 mac 설치 시디이미지가
정품이 아니라 리테일이어서 그런지 ..  암튼 정상적으로는 안됐고..

http://tps43.tistory.com/entry/VirtualBox%EC%97%90-snow-leopard-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-2

이 글 참조 하니 됐다..
즉 부팅시 empireEFI 라는 부팅이미지로 일단 부팅하고, 맥 설치 시디 이미지로 바꿔치기해서 
설치를 하면 된단다..
간단한 순서를 보면..


2)
일단 
http://www.mediafire.com/?thd5nmo2oyn  와 같은데서 empireEFIv1085.iso 부트로더 이미지를 구한다.

empireEFIv1085.iso (  압축풀면 약 55 메가 정도 된다.) 

그리고 당연히 맥 설치 시디 이미지를 구한다.
snowleopard_macosx_10.6.iso (  6 기가 조금 넘는다. 보통 맥용 .dmg 확장자이면 툴을 통해 iso 로 변환해야한다.

그리고 더 당연히 virtualbox 3.2.6 최신 버전을 설치한다.


3) 
virtualbox 를 실행해서 Mac OS X 용으로 가상머신을 만든후,
저장소 설치 시디 이미지를 위에서 다운받은 empreEFIv1085.iso 로 지정해서 
부팅한다. 그냥 맥 설치 시디 이미지를 바로 지정해서 부팅하면 부팅도 안되더라.(내경우만 그런지)


4) 
empreEFI 부팅 끝난후.. 그상태에서  virtualbox 프로그램 메뉴에서 
장치 => CD/DVD 이미지 => 다른 CD/DVD 이미지 .. 이부분을 클릭해서 이제 empireEFIv1085 이미지를 언마운트하고
원래 맥 이미지 snowleopard_macosx_106.iso 파일을 마운트한다.
그리고 화면에서  F5 를 눌러서 설치를 진행하면.. 맥 설치가 된다.
설치는 그냥 직관적으로 알아서 한다.


5) 
설치가 다 될무렵 뭔가 에러 나오는데 그냥 신경 끈다. 
재부팅도 안되서 수동으로 강제 재부팅해야 할꺼다.  마운트된 cd 이미지가 맥설치 이미지로 바뀌었기 때문이다.


6)
다시 empireEFI 이미지로 부팅 이미지를 변경한후 부팅하면 이제 화면에 2 가지 선택이 뜨고..
조금전 디스크에 설치한 부분을 선택해서 F5 누르면 정상적으로 맥이 부팅될꺼다. 나머지 설치하면 끝난다.
감동하면 된다.


7)
이렇게 정상적으로 맥으로 부팅한 후.. 화면 오른쪽 상단에 보면.. empireEFI 시디 이미지 아이콘이 보일꺼다.
이 아이콘을 클릭해서 
Post Installation => myHack Installer(Install this first).mpkg 라는 걸 실행하면
추가적인 뭔가가 더 설치된다. 이제 진짜 설치가 다 됐다.
맥 종료하고, 마운트한 시디 이미지 다 제거하고 재부팅하면 막바로 맥이 뜰꺼다..


8)
아직 뭔가 부족하다. vmwaretool 같은게 아직 virtualbox mac os X 에는 없는 모양이다.
시스템 자동 재부팅도 안되어 강제 종료해야하고.
사운드카드 등도 아직 안된다. 아마 인터넷에서 하는 방법이 있을꺼다..

http://tps43.tistory.com/category/MacOS
여기 글 참고하면될꺼다.


9) 
vmware 에서 보다 좀 더 느린거 같기도 하고.. 좀더 완성도가 떨어진듯하다.
사용자 삽입 이미지
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 권기성
사용자 삽입 이미지

## 책의 날을 받드는 글 ##

책은 마음의 밭을 갈아 생각의 깊이를 더하고  
슬기의 높이를 돋군다.
우리는 책으로 좁은 울을 넘어서  
오랜 때와 먼 곳을 보고
뛰어난 삶과 만나며 올바른 길을 찾는다.
우리 겨레가 일찍부터 우리의 것을 지키며  
아름다움을 가꾸어 온 것은 책을 사랑하여  
그 가르침을 몸으로 살아온 얼을 이어받음으로써이며,
우리나라가 이제 밝은 빛을 좇아
먼 앞날로 바르게 나아갈 것을 믿음은  
우리 모두 책에 대한 바람을 탄탄히 다지고  
그 보람을 옳게 누릴 수 있기 때문이다.
이에 우리는 책의 가없는 뜻을 알리고  
크나큰 고마움을 기리도록 우리의 자랑인  
팔만대장경이 나온 시월 열하룻날을  
책의 날로 받든다.

일천구백팔십칠년
대한출판문화협회


===============================================================
국립중앙도서관 갔다가 커피 한잔 뽑아 건물 뒤로 가서 어슬렁거리다가
산수유 가지에 가려진 청동 동상 근처 구조물에 붙어 있는 문구를 발견했다.
..
세계 책의 날은 4 월 23일인데
우리나라에서는 10월 11일을 책의 날로 삼아 온 모양이다.
첨알게 된 사실이다. 그런데 이게 국가 공인 기념일인지 아니면 대한출판문화협회.. 단체에서
자체적으로 정한 건지는 모르겠다.
암튼 국립중앙도서관 관내에 저렇게 해 놓았으니 그냥 어설픈 단체는 아니겠지.
..
팔만대장경 운운하는 부분 때문에 아마 못마땅한 사람들도 많아서
널리 알려지지 못한 모양이다. 심지어 구글신도 금시초문이란다.
문장이 괜찮아 한번 옮겨적어봤다.


이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 권기성

1) openssl md5 * > rand.dat

2) openssl genrsa -rand rand.dat -des3 1024 > key.pem
요때 비밀번호 (pass Phrase) 를 잘 기억해둔다.

3) openssl req -new -key key.pem > csr.pem
몇가지 물어본다. 정확하게 대꾸한다.
이렇게 생성된 csr.pem 을 기관 혹은 업체에 보내서
인증서 파일을 받는다. 메일로 보내서 받거나 혹은
발행사이트에서 적절한 방법으로 인증서 파일을 자동생성해서 다운받는다.
그렇게 받은 인증서 파일이 ssl.der.cer 이라고 하자.

4) openssl rsa -in key.pem -out key_nopass.pem
웹서버 시작시 비밀번호 안물어 오게 하려면 이렇게 변환한후
key_nopass.pem 을 웹서버 설정에서 사용한다.

......

5) 아파치 웹서버 ssl 설정에서 아래와 같이 된다.
SSLCertificateFile /home/hahaha/ssl/ssl.der.cer
#SSLCertificateKeyFile /home/hahaha/ssl/key.pem
SSLCertificateKeyFile /home/hahaha/ssl/key_nopass.pem
SSLCertificateChainFile /home/hahaha/ssl/caChain.cer
SSLCACertificateFile /home/hahaha/ssl/rootca.cer


###### ###### ######
###### ###### ######
1) 인증서 파일 ssl.der.cer 의 경우
-----BEGIN CERTIFICATE-----
MIIEjaCCA3WgAwIBAgIDE4rzMA0GCSqGSIb3DQEBBQUAMFAxCzAJBgNVBAYTAktS
NTlaMIgCMQswCQYDVQQGEwJLUjEcMBoGA1UECgwTR292ZXJubWVudCBvZiBLb3Jl
...
5Y3Da/mhyRvKZwjK2m9PiXxthTK0zRB4wPihBB9XwPBf8z9Y501B0dpZKWp6ZKgk
U1kmklcOryAt1OOJBLRnDvw=
-----END CERTIFICATE-----

와 같은 형식이고..


2) 인증서 키파일 key.pem 의 경우
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-CBC,3690CB7491244693

uQLZO3L7NIDoac/VjXz6SybEfbN9QPfFbdTNV4g5FtOIIdLFQFx11RjewRMcqDAB
JXVEwtKrP9fz5Mrv6/yZ2XitaRm/wpLneAA55fG3Bi3C1yTPMfZbqLEheje90pje
..
1agZjDlg0angf3Dy1BQWNbbsCngOEnLges+ZrwnOV3naXioK0NTFBvUcBdKN42/Y
mDnByw+SVeeoKvKczafnQzGQi/KALQht+QAvAowzsnzrutjmagpjhQ==
-----END RSA PRIVATE KEY-----
이런 형식이고..


3) 비밀번호 안물어보는 인증서 키파일 key_nopass.pem 의 경우
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCrZjpXYy5K5Uosc6vjSH/4zvka7Nfy4AzVgAg9Ubz7SLyCwdTw
PoMOEbw3Deec+GuHrKe2dill/FueRgiveQfWpxAtf4CXqM56wDAbQZn+WkNenHD/
.....
CtRAycxMHrwRtE61jIkCQAvXwcCIFxByuSf9e77y/s5Q5bKEvYYBGxqWA1k1i9vt
Ao77fOekccOpIIjoI+uLcClt9U4geFEwY2dPQVNmLAc=
-----END RSA PRIVATE KEY-----

이런 형식이다.


4) 인증서 발행하기 위해 만든 csr.pem 의 경우
-----BEGIN CERTIFICATE REQUEST-----
MIIB7TCCAVYCAQAwgawxCzAJBgNVBAYTAktSMRQwEgYDVQQIEwtHeWVvbmdnaS1k
33LjusdOHwIDAQABoAAwDQYJKoZIhvcNAQEEBQADgYEAUAj0ZMWw22qjwezw2X4G
..
6PvBR6A63cy9GtoenmTOmkeVs2etkqLrI1MwkfNPL708yu5tRU11F//99R9UHHVn
eISTGjdIxoaLGXeVbFV9FuEMxg9BgrS/ekmG74B3yfMZjRhkHNW7lN2LI7FxihcA
TyJfv1wc3KZCHsT0lW2y21k=
-----END CERTIFICATE REQUEST-----
이런 형식이다. 이파일은 웹서버 ssl 설정에서 사용안한다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 권기성