웹애플리케이션 만들기 – 서버와 클라이언트

지금부터 서버와 클리어언트에 대한 수업을 시작하겠습니다 서버, 클라이언트라는 이 내용은 우리 수업에서 가장 큰 체계라고 할 수 있습니다

우리는 웹을 공부하고 있지만 이 웹이라는 것은 서버와 클라이언트라는 이 체계 안에서 동작하게 되는 것이기 때문에 서버와 클라이언트는 우리 수업에서 가장 중요한 내용이라고 할수 있어요 그러면, 이 웹에 있어서 서버와 클라이언트라는 것은 어떤 의미를 갖는지를 조금 더 구체적으로 한번 살펴보겠습니다 이렇게 컴퓨터가 두대가 있어요 한대는, 왼쪽에 있는 컴퓨터는 우리가 잘쓰는 노트북이고 오른쪽에 있는 컴퓨터는 보통, 서버라고 하는 컴퓨터들은 저렇게 생겼습니다 하지만 노트북이나 일반적으로 서버라고 불리는 컴퓨터나 생긴것은 다를지언정 실제로 메커니즘은 거의 동일합니다 다만, 우리가 서버라고 하는 컴퓨터들은 안정성이 굉장히 중요하기 때문에 부품이 좀 더 안정적인 신뢰할 수 있는 부품을 쓰고있긴 하지만 여러분의 노트북도 아주 훌륭한 서버로서의 역할을 할 수 있는 컴퓨터에요 그러면 둘 다 서버가 될 수 있고 둘다 클라이언트가 될 수 있다면 어떤 컴퓨터가 서버고 어떤 컴퓨터가 클라이언트가 되는지는 이것을 통해 알 수 있습니다 웹브라우져가 설치되어 있는 컴퓨터를 우리는 클라이언트라고 부르고요 웹서버라는 소프트웨어가 설치되어 있는 컴퓨터를 서버 컴퓨터라고 부르는 거에요 그래서 여러분이 웹브라우져를 키고 웹브라우져의 주소창에다가 주소를 입력하잖아요

포털싸이트라던지 여러가지, 저희 생활코딩의 홈페이지인 opentutorialsorg 라던지 그런 주소를 입력하고 여러분들이 엔터를 "땅" 치면 어떤 일이 생기냐면 바로, 웹브라우져가 설치되어 있는 컴퓨터를 통해서 그 주소에 해당되는 서버 컴퓨터에게 요청을 하게 됩니다 뭐를 요청하냐면 여러분이 알고 싶은 정보를 담고 있는 웹페이지를 요청하는 거에요 그러면 서버컴퓨터에는 웹서버라는 소프트웨어가 설치되어 있어서 그 웹서버 소프트웨어가 그 요청을 받아서 그 서버 컴퓨터에 저장 되어 있는(하드 디스크나 이런 곳에) 저장되어 있는(웹페이지 문서가 저장되어 있을 겁니다) 그 문서를 읽어서 그것을 다시 클라이언트 컴퓨터에게 쏴주는데요 그 쏴주는 작업을 "응답한다"고 부릅니다 즉, 클라이언트는 요청하고 서버는 응답한다 라고 하는 이 관계로 인해서 요청하는 쪽을 클라이언트 응답하는 쪽을 서버라고 부르는 겁니다 클라이언트라는 말은 한국어로 얘기하면 "갑" 정도 되겠죠 "고객" 이렇게 얘기할 수 있을 것이고요 고객이 하는 것은 요청을 하는거죠 그리고 서버는 "을 " 정도 될겁니다

다른 말로는 서비스업에 종사하시는 분들 이겠죠 그리고 우리가 식당가면 "서빙한다" 라고 얘기하잖아요 그 서빙에서의 "서빙"이 "서버" 라는 말과 같은 어근, 어원을 가지고 있겠죠 그래서, 클라이언트는 요청하고 서버는 응답한다 라는 바로 이 틀의 개념을 여러분들이 이해하는 것이 굉장히 중요한 부분이고요 그리고, 웹브라우져가 설치되어 있는 컴퓨터가 클라이언트 웹서버가 설치되어 있는 컴퓨터가 서버 컴퓨터가 된다라는 것도 잘 이해하시면 좋겠습니다 그래서, 인터넷이 연결되어 있는 환경에서 동작하는 어떤 웹이나 앱이나 게임이나 이런 모든것들이 결국에는 클라이언트 , 서버라고 하는 이런 큰 틀의 체계 위에서 동작을 합니다 그렇기 때문에 여러분들이 클라이언트와 서버라고 하는 개념을 이해하신다면 이것은 꼭 우리가 지금 배우고 있는 웹에 국한된 얘기가 아니고 게임, 또는 모바일 앱 여러가지 에플리케이션들, 그 모든 분야에서 다 적용되는 개념이 바로 서버와 클라이언트라고 하는 개념입니다 그리고 우리 수업은 서버와 클라이언트라는 것을 이용해서 "웹"이라는 것이 동작하도록 하는 수업인 것이죠 그러면, 웹에 있어서 서버와 클라이언트의 관계는 웹브라우져가 클라이언트가 되고 웹서버가 서버가 되는 것이죠 그리고 여기에서 웹브라우져라고 되어 있는 저 이름은 웹 클라이언트라고 바꿔도 큰 문제는 없습니다 웹클라이언트와 웹서버가 협력해서 웹이라고 하는 것이 동작하게 된다라는 것 그것을 이해하시면 됩니다

그러면 우리가 수업을 하기 위해서는 필요한 준비물이 있습니다 뭐가 필요하냐면 첫번째는 웹브라우져가 있어야 해요 근데 여러분들이 최소한 제 수업을 보고 있다면 대부분 웹브라우져는 설치가 되어 있을 것이고 그리고 여러분들에게 웹브라우져라는 소프트웨어는 굉장히 친숙한 소프트웨어일 것입니다 특별히 설명드릴게 별로 없어요 그런데 웹서버라는 것은 프로페셔널한 웹개발자나 IT관련한 엔지니어가 아니라고 한다면 웹서버라는 말을 지금 처음들어보신분도 있을거에요 즉, 뭔가 감각적으로 가깝게 느껴지지 않을거라는 겁니다 그래서, 일단은 우리가 관심을 둘것은 웹서버 라는 것에 관심을 둘거고 바로 이 웹서버를 컴퓨터에 설치를 해야됩니다 그런데 제가 아까 말씀 드린것처럼 서버와 클라이언트는 두대의 서로 다른 컴퓨터끼리 통신을 하는거라고 말씀드렸죠 "그럼 우리 컴퓨터가 두대가 있어야 되냐" 란 생각을 하실수가 있는데 두대면 좋기는 한데 공부하는 과정에서는 한대의 컴퓨터로 충분히 가능합니다

이 한대의 컴퓨터에 웹브라우져와 웹서버를 둘다 설치를 하는거죠 그리고 웹서버와 웹브라우져가 한대의 컴퓨터 안에서 통신을 하게 하면 됩니다 이해가 안가실수 있는데 실제로 설치를 진행하면서 이 얘기는 제가 더 자세하게 할겁니다 즉, 웹브라우져에다가 여러분이 주소를 치는데 그 주소가 다른곳에 있는 컴퓨터가 아니라 바로 그 웹브라우져가 설치되어 있는 컴퓨터를 가리키게 되면 그 컴퓨터 안에, 즉 같은 컴퓨터에 설치되어 있는 웹서버가 응답해서 웹브라우져에 페이지를 보여줍니다 일종의 원맨쇼를 하는건데 이 관계는 그냥 같은 컴퓨터에서 하는 것일뿐 컴퓨터가 다르다고 해도 동일하게 작동하는 것이기 때문에 우리가 공부를 하는데는 아무런 지장이 없습니다 그리고 최종적으로 실제로 여러분들이 웹서비스를 또 웹에플리케이션을 운영하기 위해서는 다른 컴퓨터가 필요하겠지만 그건 우리 수업 끝에서 실제 상황에서 서비스를 동작시키는 방법은 우리 수업 뒤에서 나중에 살펴보게 될거니까요 지금은 일단 학습환경을 구축하는 것부터 합시다 그러면 웹서버를 설치를 해야하는데요 웹서버로는 이런것들이 있습니다

APACHE, Nginx, IIS 이런게 있는데요 이중에 Apache와 Nginx는 오픈소스 진영이고요 그리고 IIS는 마이크로소프트의 제품입니다 그래서 이런 제품들간의 현재의 경쟁구도를 좀 살펴보면 보시는것처럼 Apache는 오래전부터 한번도 일등을 놓쳐본적이 없는 웹서버 분야에서는 절대강자라고 할 수 있습니다 웹의 시작과 함께 출발한 웹서버이고 웹이라는 것이 발전하는데 있어서 굉장히 큰 공헌을 한 APACHE라고 하는 웹서버입니다 우리 수업은 APACHE를 이용해서 웹서버를 구축을 할거에요 그 다음에 마이크로 소프트, 너무나 유명한 회사이고 여기 보시면 이 그래프상으로 봤을때 2009년도에 거의 정점에 도달했죠 그래서 APACHE를 턱밑까지 쫓아 왔다가 갑자기 쇠락의 기운이 보이기 시작하는 거죠 그 다음에 보면 Nginx라고 하는 것이 2007년부터 시작이 되어서 점점 성장을 하다가 상당히 높은 퍼센트까지 올라온 것을 볼수 있습니다 그리고 조금 흥미 삼아서 볼만한 것은 여기 구글이라고 되있는거 보이시죠 이 구글은 여러분들이 알고 있는 그 구글이라는 회사가 운영하고 있는 웹서버입니다

이건 우리가 쓸순 없어요 이건 구글이 쓰는 서버인데 구글이라고 하는 단일 기업이 사용하는 자사가 만든 웹서버 하나가 이 시장에서 차지하는 비중이 이렇게 크다는건 놀라운 일이죠 얼마나 큰 회사인지 알겠죠 그 다음에 우리가 살펴 볼 것은 말슴 드린 것처럼 APACHE라는 것을 우리가 설치할거고요 APACHE를 설치 할 때는 이런 주소로 들어가셔서 실제로 설치하는 것이 정석이긴 한데 APACHE를 설치하는 것은 조금 까다로운 일이에요 직접 설치하는 것은 그리고 우리는 APACHE 즉 웹서버만 필요한 것이 아니라 나중에 제가 말씀드리겠지만 우리 수업에서는 PHP라던지 MYSQL같은 데이터베이스나 서버사이드 언어들이 필요한데요 그게 뭔지는 지금 몰라도 되지만 이런 것들도 하나하나 여러분들이 직접 설치하려고 하면 힘이 들어요 특히나 클라이언트 즉 일반적인 사용자들이 사용하는 환경의 소프트웨어는 설치하는게 어려운게 없습니다 설치하는게 어려우면 사람들은 쓰지 않기 때문에 하지만 서버쪽의 소프트웨어는 일단 굉장히 많은 기능성들이 필요해요 그리고 엔지니어들이 사용할 것이라고 감안하고 만들어진 소프트웨어이기 때문에 개발자들, 소프트웨어를 만드는 사람들의 편의보다는 그 소프트웨어를 만든 사람의 편의가 더 많이 반영되어 있기 때문에 여러분들은 이 서버쪽에서 구동되는 소프트웨어를 설치하는 것이 굉장히 어려울 겁니다

심지어 어떤것은 한달이 걸릴때도 있고 어떤것은 설치를 못하고 포기하는 경우도 있을만큼 서버쪽에서 동작하는 소프트웨어는 설치의 편의성이 대단히 나쁩니다 아파치는 좀 덜한 편이지만요 아무튼 그래서 바로 그러한 어려움이 있다는 것을 알고 그런 어려움들을 도와주는 여러가지 솔루션들이 있는데 저는 bitnami라는 것을 이용해서 apache, php, mysql 을 한번에 설치를 할겁니다 이 bitnami라는 것은 방금 말씀드린 것처럼 바로 이러한 목적 즉, 서버 소프트웨어를 여러분들이 쉽게 한방에 설치할수 있도록 도와주는 그런 도구 이고요 그리고 bitnami말고도 국내에서 만들어진 "APM SETTUP"같은 것들이 있습니다 BITNAMI를 설치하기 위해서는 각각의 운영체제마다 다른 이름의 BITNAMI버젼을 사용하셔야 되는데요 윈도우 사용자라면 여기 있는 주소로 들어가셔서 wamp라는 것을 설치하면 됩니다 w는 window, a는 apache m은 mysql이고 p는 php라는 뜻이에요 맥 사용자는 mamp를 쓰시면 되는데 m은 mac 이고 pache mysql php 입니다

리눅스를 쓰시는 분은 lamp로 접속하셔서 설치를 하시면 됩니다 그러면 우리 수업 우리 후속 수업에서는 각각의 운영체제별로 자신의 컴퓨터에 웹서버를 설치하는 방법에 대해서 짚어보겠습니다 자신의 운영체제에 맞는 사용방법을 찾아서 따라 오시면 되요

웹 애플리케이션 만들기 – 호스팅 1 : 웹호스팅 VS 서버호스팅

네, 이번 시간에는 호스팅이라고 하는 주제에 대해서 알아보겠는데요 지금까지 우리가 살펴 본 것은 자신의 컴퓨터에 여러분이 설치한 운영체제죠 그리고 거기에 PHP, MY SQL도 직접 설치했고 거기에 여러분이 만든 애플리케이션을 탑재해서 인터넷을 통해서 사용자들에게 서비스를 제공하는 것이 지금까지 우리가 했던 겁니다

다시 말해서 우리가 다 혼자서 한거에요 자, 그런데 제가 말씀 드린 것 처럼 여러가지 복잡한 이슈들이 있고 여러분의 집에서 서비스를 운영하는 것은 상당히 제한적이고 여러가지 불편한 점들이 많이 있습니다 그래서 그런 불편한 점을 대행해주는 비지니스가 있어요 그게 바로 호스팅 이라고 하는건데요 우선 HOST가 뭔지 부터 한번 살펴 보면 자, 이렇게 인터넷에 접속되어 있는 여러대의 컴퓨터들 하나 하나를 우리가 보통 호스트라고 부릅니다 자, 그런데 그 중에서 호스팅(HOSTING) 이라고 하는 것은 조금 관점이 달라요 호스팅 이라고 하는 것은 클라이언트 쪽이 아니라 보통 정보를 제공하는 사업자 즉 이쪽에 있는 저런 서버쪽 에서 사용되는 컴퓨터 또는 소프트웨어 이러한 것들을 제공하는 그런 사업자들을 우리가 호스팅이라고 보통 부릅니다 자, 그래서 이 호스팅에서는 어떤 환경을 갖추고 비지니스를 하냐면 이 사업자들이 일단 IDC 라는 것이 있습니다 IDC 는 Internet Data Center 라는 뜻이에요 그래서 이 IDC는 그냥 건물이에요

건물인데 엄청나게 크고 엄청나게 많은 컴퓨터들이 이렇게 빼곡히 자리를 잡고 있어요 즉 컴퓨터들의 집이라고 할 수 있습니다 그래서 이 IDC는 아주 안전한 곳에 또 전기가 차단되면 그 전기가 자동으로 자가발전을 시작하는 그런 인프라고 그리고 인터넷과 같은 네트워크가 아주 빵빵하게 들어와서 아주 원할하게 통신할 수 있는 그런 서버가 동작하기에 최적의 조건을 갖춘 그러한 공간을 우리가 IDC 데이터 센터(Data Center) 라고 합니다 그래서 이 데이터센터가 갖춰야될 가장 중요한 경쟁력은 일단은 안전한 보안 그리고 네트워크가 빵빵해야 된다 라는 것이죠 바로 이런 인프라를 갖춰놓고 또는 이런 인프라 안에 들어가서 사용자들에게 어떤 웹 애플리케이션을 운영하고자 하는 사람들에게 그 서버의 운영을 대행해주는 역할을 하는 곳이 바로 호스팅 사업입니다 자, 크게 대표적으로는 두가지로 웹호스팅, 그리고 서버 호스팅을 얘기할 수 있을텐데요 자 우선 웹 호스팅이라는 것은 웹이 앞에 붙어 있잖아요 그 얘기는 뭐냐면 웹 애플리케이션을 운영하기 위한 다시 말해서 웹 서버를 운영하기 위한 모든 것을 제공 하는 것을 우리가 웹 호스팅이라고 합니다 자, 그래서 기본적으로 서버, 여기서 얘기하는 서버는 하드웨어를 의미하는 것이고 또 운영체제까지 포함이 되는거죠 그리고 거기에는 당연히 빵빵한 인터넷이 연결이 되어 있어야 되죠 그리고 그러한 것들 뿐만 아니라 실제로 우리가 웹 애플리케이션을 동작하기 위해서는 이러한 것들이 필요했잖아요 데이터베이스, PHP, 웹서버 이런 것들이 필요했는데 그런 것들을 여러분들이 설치하는게 아니라 사업자가 미리 설치해 놓고 여러분들은 그냥 거기에다가 자신이 만든 애플리케이션을 업로드 하기만 하면 이제 동작하기 시작하는 것이 웹 호스팅 입니다 장점은 그냥 업로드만 하시면 되요 신경쓸게 없습니다 여러분은 자신이 만들고 있는 애플리케이션을 잘 만드는 것에 집중하면 된다는 것이고요 그리고 단점은 웹 애플리케이션을 동작하는 용도로만 사용할 수 있다는 겁니다

왜냐하면 여러분이 운영체제 레벨에서 접근해서 뭔가 할 수 있는 여지가 전혀 없기 때문에 그냥 웹사이트를 운영하는데만 사용 할 수 있어요 그리고 일반적으로 웹호스팅은 한대의 컴퓨터에 여러명의 사용자들이 들어가서 같이 한대의 컴퓨터의 자원을 공유하고 있기 때문에 만약에 이웃을 잘못 만나서 이웃이 대박이 나면 여러분한테는 슬픈 일이 오는거에요 왜냐 자신의 사이트가 느려지는거죠 바로 이러한 장점과 단점을 가지고 있는 것이 웹호스팅 입니다 하지만 가장 사용하기 쉽고 비용도 대체로 저렴하기 때문에 여러분이 자기가 직접 집에서 서버를 운영하는 것이 아니라면 제일 먼저 고려해 볼 만 한 것은 웹호스팅 입니다 자 그 다음에는 서버호스팅이라고 하는 형태의 호스팅이 있는데요 자, 이 서버 호스팅은 쉽게 생각해서 컴퓨터를 제공하는 겁니다 그리고 이 컴퓨터는 인터넷에 연결이 잘 되어 있기 때문에 여러분이 이걸 이용해서 서버의 용도로 사용할 수 있는거죠 자 그래서 이 서버 호스팅은 일단은 서버 컴퓨터를 제공합니다 예, 그런데 이 서버 컴퓨터에는 아까 우리가 (배운) 웹호스팅과는 다르게 웹서버, 미들웨어, 데이터베이스 이런 것들이 하나도 설치가 안되어 있고 그냥 컴퓨터 한대를 임대해 준거에요 그럼 여러분은 자신이 필요한 그런 것들은 직접 설치해서 운영하셔야 합니다

장점은 뭐냐면 웹호스팅과는 다르게 여러분이 컴퓨터로 할 수 있는 모든 일을 다 할 수 있어요 네, 그렇기 때문에 자유도가 높기 때문에 활용도가 높다는 장점이 있습니다 근데 단점은 직접 운영을 해야되요 자, 서비스를 직접 운영한다는거 결코 만만한 일이 아닙니다 네, 알아야 될것들이 상당히 많다는거죠 하지만 여러분의 집에서 여러분이 운영하는 것과는 다르게 서버 호스팅은 뭐, 장비라던지 어 그런 것들에 대해서는 어

업체들이 대행해 준다라는 차이가 있죠 하지만 여러분이 직접 운영하면 여러분은 자신의 장비까지 컴퓨터까지 직접 챙겨야 된다 라는 점에서 차이점이 있는거죠 지금 우리가 살펴본 호스팅의 두가지 형태 웹호스팅, 서버호스팅 이 두가지가 우리가 인터넷을 통해서 어떤 서비스를 사용자들에게 제공한다고 하면 가장 일반적으로 사용되는 가장 쉽게 여러분들이 접근해 볼 수 있는 전통적인 모델이라고 할 수 있습니다 자, 그러면 또 다른 모델이 있냐? 있습니다 클라우드 컴퓨팅 이란 것이 있는데요 이 클라우드 컴퓨팅 이라고 하는 것은 우리가 다음 영상에서 도대체 클라우드 컴퓨팅 이란 것이 무엇이고 이건 어떤 차이점이 있는지에 대해서 다음시간에 살펴보도록 하죠

웹애플리케이션 만들기 – MySQL 실습1 : PHP와 연동

우리가 이전 시간에 데이터베이스 이론 수업을 진행을 했구요 이번 시간에는 우리가 배운 그 데이터베이스를 실제로 활용해서 웹 애플리케이션을 만드는 구체적인 방법에 대해서 살펴보겠습니다

우선 복습 차원에서 예전에 우리가 작업했던 것을 다시 한 번 리뷰를 해 보죠 보시는 것 처럼 이런 구성이었어요 웹브라우저, 웹서버, PHP 그리고 데이터는 FILE에 저장되어 있는 상태가 우리가 지금까지 만들어오던 micro 한, 작은 opentutorials 예제가 이런 구성으로 현재 되어 있었다는 것이죠 그 중에서 저 FILE이라고 되어있는 부분, 데이터를 FILE에 저장하고 있었던 것을 좀 더 개선해서, FILE이 아니라 바로 MySQL이라고 하는 데이터베이스로 교체하는 작업을 이번 시간부터 우리가 진행을 할 겁니다 그래서 결과적으로 우리가 만든 애플리케이션이 동작하는 방법에는 차이가 없습니다 다만 그 내부적으로 정보를 파일에 저장하느냐 데이터베이스에 저장하느냐의 차이가 생겼을 뿐이구요

그런 맥락에서 이 PHP라고 하는 것은, 이 파일에 데이터 저장하고 읽고 이랬던 역할에서, 보시는 것처럼 이 데이터베이스 시스템과 또 웹서버 사이에서 이렇게 중계자와 같은 역할을 하게 됩니다 즉 사용자가 요청한 aphp를 웹서버가 처리할 수가 없기 때문에 PHP에게 위임을 하는데 그 aphp에 데이터베이스에 있는 정보를 가져와서 웹페이지로 만들라는 코드가 들어가 있다면 이 PHP가 중간에서 데이터베이스에 있는 정보를 가져와서 웹페이지를 만들어내는 일종의 중계자와 같은 역할을 한다는 것이죠 그런 맥락에서 이런 PHP 애플리케이션을 우리가 미들웨어라고도 부릅니다

그럼 PHP가 그런 일을 하기 위해서 무엇을 우리가 사용을 해야 되고 어떻게 프로그래밍을 해야 되냐면, 바로 “mysqli”라고 하는 이 PHP에 내장되어 있는 API를 사용을 해서 우리가 그런 목적을 달성할 수가 있습니다 그러면 지금부터 우리가 일단 실습 환경을 좀 구축을 해 보죠 실습 환경은 이미 다 구축이 되어있어요 우리가 기존에 indexphp라는 파일을 이용해서 샘플을 만들었죠

그리고 이 파일 내부적으로는 8개 콘텐츠, 즉 파일을 읽어드릴 때 사용하는 API를 사용을 해서 구축이 되어 있었습니다 바로 이런 부분들을 우리가 PHP로 데이터베이스를 핸들링 할 때 사용하는 mysqli로 교체 하려고 하는 겁니다 그 때 사용하는 것은 일단은 제일 위 쪽에 이렇게 PHP를 입력할 수 있는 부분을 만들어주시고요 여기에 제가 지금부터 설명 드리는 내용을 추가하시면 됩니다 그런데 데이터베이스를 핸들링하는 데이터베이스를 다루는 코드는 꽤 복잡하고 다양한 이 문제 상황들이 발생할 수가 있기 때문에, 여러분들이 어떤 문제가 발생했는지를 알고 계셔야 됩니다

그냥 보시면 화면에 아무것도 표시가 안 될 거기 때문에, 그래서 제가 예전에 여러분들에게 말씀 드렸던게 기억나실지 모르겠는데, 이 디버그라는 수업에서 문제가 발생했을 때 어떤 문제가 발생했는지를 알 수 있는 파일이 있다고 말씀을 드렸습니다 그 파일을 열어놓고 실습을 진행하셔야 돼요 그러면 그 파일을 찾는 법을 다시 한 번 remind를 시켜줄게요 우선 “FILE”에서 “Open File”을 선택하시구요 “Bitnami”디렉토리에서 “ampstack”으로 들어가신 후에, 그 중에서 “apache”로 들어 가시고, “logs”라고 되어있는 곳으로 들어가시면, “error

log”라는 파일이 있습니다 저 파일을 열어보시면 이렇게 생긴 화면이 뜨는데요 바로 여기에 에러가 있을 경우에 그 에러 내용이 여기에 표시가 됩니다 그 내용을 보시고 어디에서 문제가 생겼는지를 추적하시면 되구요 또는 다른 사람에게 질문할 때 이 에러 메시지를 다른 사람에게 보여주는 것을 통해서 문제 해결에 도움을 받을 수 있을 겁니다

그러면 이제부터 이곳에 들어가야 될 코드들을 우리가 하나씩 하나씩 살펴보도록 하죠 제가 표를 하나 준비 했는데요, 여기 보시면 이 MySQL monitor가 왼쪽에 있고요, 그 오른쪽에는 PHP에서 데이터베이스를 사용하기 위해서 PHP가 제공하는 내장 함수 API인 mysqli가 이렇게 있습니다 그리고 왼쪽 끝에 보시면 “서버접속”, “DB 선택”, “조회”, “출력” 이라고 되어 있는데요, 이것은 우리가 이 데이터베이스 클라이언트가 베이터베이스 서버에 접속해서 어떤 일을 처리할 때 일어나는 작업들을 순차적으로 나열한 것 입니다 그래서 우리가 이미 MySQL monitor를 사용을 해 봤잖아요 그리고 이제부터 사용할 것은 mysqli인데, 이 두 가지 모두 이 데이터베이스 서버 입장에서는 그 서버에게 무언가를 요청하는 클라이언트이기 때문에 본질적으로 하는 일이나 또는 그것을 조작하는 방법은 사실 같습니다

하나는 일반적인 프로그램이고 그리고 또 하나는 API라고 하는 그런 차이가 조금 있을 뿐 이예요 그래서 익숙한 MySQL monitor를 통해서 그것에 대응되는 이 mysqli의 사용 방법을 짚어보도록 하겠습니다 우선 제일 먼저 MySQL monitor를 사용할 때 우리가 제일 먼저 하는 일은 뭐예요? 이런 명령을 운영체제에서 입력하죠? 이 명령이 의미하는 것은, localhost에 존재하는 데이터베이스 서버에 접속할 때, 아이디 값은 “root”고, 비밀번호는 “111111”인 사용자의 명의로 접속을 하겠다 라는 뜻이죠 그것과 대응되는 mysqli의 명령은 이렇게 됩니다 여기 보시면 “mysqli_connect()” 이렇게 되어 있습니다

그것은 뭐냐면 mysqli_connect가 바로 함수라는 거죠 그런데 저 함수는 여러분이 만든 적이 없기 때문에 기본적으로 PHP에서 내장되어있는 함수예요 실제로 데이터베이스를 핸들링하는 작업은 아주 복잡한 로직들에 의해서 이뤄지기 때문에 mysqli_connect 라고 하는 저 함수의 실제적인 내용은 상당히 복잡할 겁니다 그런데 단지 우리가 저 mysqli_connect 그리고 입력 값들을 주는 것을 통해서 데이터베이스에 아주 쉽게 접속할 수 있다는 거예요 처음 보셨을 때는 이것도 복잡하겠지만, 사실이 코드 한 줄이 함의하고 있는 복잡한 메커니즘을 생각한다면 우리가 얼마나 편하게 이 데이터베이스를 사용할 수 있는 것인지 여러분들이 상상은 하실 수 있을 것 같다는 생각을 합니다

아무튼 mysqli_connect라고 하는 저 함수의 메뉴얼을 살펴보면 그 첫 번째 입력 값으로는 host, 즉 접속하려고 하는 서버의 주소가 와야 된다고 되어 있구요 바로 그것이 MySQL monitor로 치면 이 부분이라고 할 수 있습니다 그리고 두 번째 입력 값은 사용자의 아이디 여기에 해당 되구요 마지막으로는 사용자의 비밀번호를 입력하라고 메뉴얼에 적혀있어요 “순서대로 입력해야 된다”라고 적혀있습니다 그것은 마지막 것은 이것이 되겠죠? 그래서 여러분이 이 코드를 실행을 시키면, 내부적으로 우리 눈에 보이지 않는 메커니즘에 의해서 데이터베이스 서버에 PHP가 접속을 하게 됩니다

그리고 접속에 성공하게 되면, 접속 결과를 “conn”connect를 줄여서 쓴 거예요 “conn” 변수에 입력 값으로 변수의 값으로 이렇게 이것이 출력을 해주는 것이죠 그럼 우리는 이 “$conn”라는 변수를 통해서 우리가 접속한 바로 이 정보에 의해서 접속된 서버를 제어할 수 있게 됩니다 이 코드를 실제 PHP 애플리케이션 코드에 반영하도록 하죠 PHP 코드가 시작되는 여기에 저렇게 하고서, 우선 “mysqli_connect(‘localhost’” -큰따옴표 작은 따옴표 상관 없습니다- 그 다음에 우리는 “root” 아이디이니까 아이디를 “root”를 적고요, 그 다음에 비밀번호는 “111111”이라고 적고 “;”을 합니다

그러면 저 함수가 실행된 결과는 “conn” 변수라고 할게요, “conn” 변수에 담기게 돼요 그 다음에 우리가 MySQL monitor를 사용할 때는 생각해보면, 서버에 접속한 다음에 그 다음에 뭘 했나요? 잘 기억 안 나실 수도 있는데 바로 데이터베이스를 선택했습니다 그때 사용하는 명령은 “use opentutorials” 였죠? 이 중에서 “use”라는 것은 명령어예요 그리고 “opentutorials”라는 것은 우리가 만든 데이터베이스의 이름인데요 “opentutorials”라는 데이터베이스를 이제부터 사용하겠다라고, MySQL monitor에서 명령을 내린거죠

그러면 그것에 해당되는 mysqli API는 무엇이 있을까요? 이것입니다 보시는 것 처럼 이 함수는 “mysqli_select_db“ 라고 하고, 첫 번째 인자로는 “$conn” 변수를 주셔야 됩니다 conn 변수라는 것은 mysqli_connect라고 하는 것을 통해서 접속에 성공했고 그 접속된 정보를 이 “conn”이라고 하는 변수에 담은 건데요 그 정보를 “mysqli_select_db“ 의 첫 번째 인자로 전달해 주도록 약속되어 있기 때문에 그대로 쓰시면 되는 겁니다 그 다음에는 우리가 사용하려고 하는 데이터베이스인 opentutorials를, 이렇게 그 다음 줄에 적어주시면 DB를 선택하는 것까지 끝난 것이 돼요 그러면 우리 코드에 반영해 보죠

우선 “mysqli_select_db”, “db”데이터베이스 약자입니다 그 다음에 첫 번째 입력 값으로 “conn”을 주시구요 그 다음에 두 번째로는 “opentutorials ”라고 이렇게 코딩을 하시면 됩니다 이렇게 해서 우리가 데이터베이스에 접속하고 데이터베이스를 선택하는 것 까지 우리가 알아 봤어요 그런데 시간이 좀 많이 됐고 우리가 할 이야기가 좀 더 많이 있기 때문에 실제로 테이블에 접근해서 그 테이블에 있는 정보를 가져온 후에 그것을 웹페이지로 만드는 우리 수업의 정말 클라이막스는 다음 시간에 다음 영상에서 살펴볼게요