워드프레스를 설치하기 전에  꼭 알아야 할 기본 지식을 설명합니다.

1.서버와 클라이언트의 관계

install-wordpress-server-client_02

( 그림 1 )

홈페이지는 인터넷공간에서 존재 합니다.
간단한 그림 하나 그리겠습니다.

(A) 는 클라이언트 (Client :의뢰인 이란뜻) 입니다. 인터넷을 검색하고 있는 ‘나’ (= 바로 이 글을 읽고있는 여러분) 입니다.
그리고 인터넷의 입장에서 볼때는 여러분들이 지금 들여다 보고 있는(내가 검색하고 클릭해서 보고있는) 웹 브라우저가 클라이언트 입니다.

웹브라우저란,pc에서 보고 있다면, 익스플로러 일수도 있고, 파이어폭스 일수도 있고, 구글 크롬 일수도 있고,스마트 폰에서 보고있다면 , 네이버검색 어플이 될수도 있고, 사파리일수도 있고, 등등 어떤 수단이든…..네이버나 유튜브나 다음등의 웹 사이트에 접속할수 있는 도구이고이것이 바로 클라이언트 입니다.

(B) 는 서버 (Server : 제공자 ) 입니다. 여러분이 보고있는 사이트, 보고싶은 사이트, 검색사이트,사진사이트, 음악사이트 등등 무었이든 인터넷에 존재하면서 여러분들이 검색해주길 바라고,클릭해주길 바라며, 보여지길 바라는 모든 정보,자료를 담고 있는것들이 서버 입니다.

(가) 는 클라이언트가 넓고 넓은 인터넷의 세계 속에서 특정 서버를 찾아그 서버에게 무엇인가를 요청하는 것입니다.

예)
1. 컴퓨터를 켜고 바탕화면에 인터넷을 하고 싶어서, 익스플로로버튼을 더블 클릭하면 자동으로 맨 처음에 뜨는 화면이 뭔가요?
만약 네이버 라면, 여러분 PC의 인터넷 익스플로러는 버튼을 처음누를때 자동으로 네이버의서버를 찾아서 보여달라고 설정된대로 요청하는것 입니다.

2. 네이버의 화면 검색창에서 ‘쇼핑몰’을 검색 하셨나요? 검색하는 그 순간.. 여러분은클라이언트인 익스플로러 를 통해서 넓고 넓은 인터넷의 세계에 ‘쇼핑몰’과 연관이 있는사이트, 자료, 그림, 음악 등을 찾아 달라고 네이버의 서버에 요청을 한겁니다.

3. 인터넷익스플로러의 맨 위에 잇는 주소 표시줄에 www.daum.net 이라고 써넣고 엔터를누르면, 클라이언트인 익스플로러를 통해, 넓고 넓은 인터넷에게 www.daum.net 이라는도메인을 사용하는 서버를 찾아서 정보를 달라고 요청 하는 겁니다.

(나) 는 서버가 클라이언트의 요청에 대답하는 것입니다.

예)
1. PC를 켜고 인터넷 익스플로러 버튼을 누른 클라이언트의 요청에 따라서 어디에 있는지모르는 (분당에 있나요 ?) 네이버의 서버가 반응을 합니다.그리고 그 순간에 검색순위와 날씨, 뉴스 등등의 정보가 담긴 첫 화면을 클라이언트에게보내 줍니다.그러면 클라이언트의 pc에 네이버 화면이 뜹니다.

2. 누군가의 요청에 의해 네이버 서버는 ‘쇼핑몰’과 연관된 이런 저런 자료를 모은 화면을클라이 언트에게 보여 줍니다.

3. 다음 (www.daum.net ) 서버는 일도 없이 놀고 있다가 한 클라이언트의 요청에 의해이것저것 챙겨서(날씨,이메일,뉴스,증권정보 등등) , 그 클라이언트의 웹브라우저 화면에보여 줍니다.

홈페이지 만든다는것은 서버속에 나의 홈페이지자료를 집어 넣어서…다른 사람들(다른 클라이언트) 의 요청에 반응하겠다는 의미 입니다.

( 그림 1 ) 에서 (A)는 클라이언트이고 바로 이 글을 보고 있는 ‘나’ 바로…’여러분’ = ‘여러분의 웹 브라우저’ 라고 했습니다.그럼 이 (A) 웹 브라우저가 도대체 뭔지 알면 …홈페이지를 만들때 무엇이 필요한지 알수 있겠죠?

웹 브라우저 (인터넷익스프로러, 사파리 , 파이어폭스, 크롬 …..) 는 웹 페이지를 볼수 있게 해주는프로그램입니다.(알씨는 사진(jpg)파일을 보여주는, 한글은 hwp파일을 보여주고 편집할수있는 …. 것과 같은 의미 입니다.)
그럼 웹 페이지는 뭐냐? 확장자가 html ( HyperText Markup Language ) 이 붙는 파일 입니다.

잠깐 설명을 하자면 최초에 인터넷이라는걸 만들고 설계한 머리좋은 여러 사람들이 ‘내 pc에서 다른사람pc 로 서로 정보를 주고받으려면 어떻게 하는것이 좋을까 ?’ 하고 생각을 합니다.
일단 정보를 담는 그릇은 하이퍼텍스트(책을 순서대로 읽는것과같은 일반 text가 아니고,여기 읽었다가 저기읽고, 또 저기 클릭하고, 그림도 있고 , 이리넘어가고 하는 텍스트) 의 모양을 취하기로하고,그릇 과 내용물을 만드는 도구(프로그래밍 언어)로 HTML 이라는 언어를 만듭니다.
이 언어를 사용해서 xxx.html 이라는 형식을가진 정보덩어리를 만들어냅니다.(메모장이나 텍스트 편집기로 만듭니다.) 또 이 그릇에 담긴 내용물을 볼수 있게 하기위해서 ‘웹브라우저’라는 도구를 만듭니다.
이렇게 만든 파일이 우리가 웹 브라우저에서 보고 있는 모든 화면입니다.
이 파일을 kt 나 sk브로드밴드, lg u+ 등의 인터넷 회선을 이용해서 나(여러분) 에게 보내 달라고 요청하는것이웹 브라우저 (클라이언트)이고 , 보내 주는 것이 서버 이며, 받은것을 여러분이 볼수있게 보여주는것이 또한 여러분의 웹브라우저 입니다.그리고 이 파일을 주고 받을때 (위 그림의 (가),(나) 에 해당) 어떻게 주고 받을것인지 규칙을 정한 것이 바로 HTTP 입니다.(ex. http://www.naver.com ) (* HyperText Transfer Protocol : 하이퍼텍스트를 전송할때의 규칙 )

결론은 웹브라우저는 컴퓨터 상호간에 정보를 주고 받기 위해서 사용하는 html 언어로 만든 파일을국제적인 약속에 따라서 보내고 , 받고, 보여주는 프로그램 (어플) 입니다..

다시 ( 그림 1 )에서 (A) 클라이언트 를 담당하는 웹 브라우저는 HTML언어를 해석해서 브라우저의 화면에 보여주는 프로그램입니다.

이 HTML 은 <태그> ~ </태그> 형식을 사용하는 프로그래밍 언어 입니다.

그리고, 이 HTML 형식의 파일 (ex. index.html , header.html 등등 ) 은 서버에(멀리 어딘가에있는)있든,내 pc의 어느 폴더속에 있든, 브라우저로 불러 오면 (ex. a.html이라는 파일이 친구가 운영하는 웹사이트의 한 페이지 이거나, 같은 파일이 나의 pc c드라이브의 abc폴더에 있더라도 , 웨브라우저로 불러오면) 실행이 됩니다.
그리고 이와같은 속성을 지닌 언어가 자바스크립트, css 등입니다.

다시말하면 html, 자바스크립트,css 를 이용해서 내 홈페이지를 코딩을 하면 그 결과가 에러가 있는지 없는지를 웹브라우저에서 바로 확인할수 있다는 겁니다. (서버에 올려서확인하지 않고도 바로 알수있다는 뜻 = 클라이언트 프로그래밍 언어 , 어디선가 들어본적있는 PHP, ASP, JSP 등의 웹 언어 들은 웹브라우저가 이해를 못합니다. = 서버쪽 프로그래밍 언어)

2.서버의 구성요소

맨 위의 ( 그림 1) 에서 (가)와 (나)는 html 코드로 작성된 문서들이 오고가는 구간입니다.클라이언트의 요청으로 서버가 보내주는 문서는 클라이언트가 해석할수있는 코드 이어야 하기 때문입니다.그런데, 이 html 코드 만으로는 웹사이트를 운영하는데 문제가 있습니다.
동적인 사이트를 작성할수 없다는 것이죠…

동적인 사이트라함은 매일매일 내용이 업데이트되거나, 상황에 따라서 내용이 바뀌게 되는 사이트를 말합니다.( html 코드로만 작성된 페이지들은 정적인 내용을 담게 되어서 1일전이나 1달전이나 1년전인 페이지의 모양이나 디자인, 내용등을 일부러 업데이트 하기전에는 바뀌지 않게 됩니다. 방문자는 그저 게시된 내용을 읽을수 있을뿐 참여는 할수 없습니다. )

예를 들면 카페의 글이나 워드프레스의 포스트( 글 )도 동적인 페이지가 됩니다.
글 작성자가 내용을 적고 싶을때는 언제나 페이지를 작성하고, 날자 ,시간이 기록되며, 누군가 와서 보고 댓글을 작성할수도 있고 , 그 댓글에 대답을 할수도 있게 되고 , 그 기록들이 시시각각 변하고, 변한것을 바로바로 확인할수 있고 , 다음 방문자가 최신의 상태의 글을 볼수 있게 되는…..

또는 게시판이 있어서 방문자가 얼마든지 글을 올릴수 있고 , 거기에 다른 방문자가 답글달고, 토론하고, 등등… 이런 동적인 페이지를 작성하는데.. 한게시물당 하나의 페이지를 일일이 만들고 업데이트하고,또 만들고 업데이트하고 할수는 없는 노릇입니다.

또한 일일이 만든다고 할지라도, 1번게시물 페이지의 상부디자인 (헤더), 하부디자인(푸터),메뉴바, 사이드바 와 2번 게시물의 상부디자인 (헤더),하부디자인(푸터),메뉴바,사이드바 등은 똑같고 그 가운데의 내용만 다른데… 모든 요소를 동일하게 만들어서 서버를 채우면… 그야말로 저장공간을 낭비하는 일이 됩니다.

그래서 서버에게 꼭 필요한 친구들이 있습니다.

1. 먼저 데이터 베이스가 필요합니다. 데이터 베이스는 저장공간을 일정한 규칙으로 쪼개어서 각각의 항목별로 저장하여 보관하고 필요한순간에는 꺼내주는 역할을 하는 곳입니다.

어떤 게시판을 예로 들면 게시판의 글들은 데이터 베이스에 아래와 같은 형식으로 저장이 될것입니다.

게시물 번호 작성자 날자 시간 내용 조회수
1 홍길동 13-07-15 13-20 어제 못된 마을 수령을 혼내줬어요너무 통괘했어요……. 852
2 전우치 13-09-25 11-10 안녕하세요…저오늘 회원가입했어요잘부탁합니다. 12
3 콜롬보 14-01-02 10-25 1월1일에 일어난사건에대한 기록이 조금부족한것같아… 중략…
그러므로 …
중략 ….
도움이 되시면 좋겠고…
450
4 다빈치 14-01-05 19-35 그림 그리기는 너무 힘들어 흐흐흑 45

그러다가 어떤 방문자가 이 게시판에 들어와서 주욱 살펴보다가 3번 콜롬보의 글을 클릭하게 되면

이 데이터 베이스의 내용들이 주루룩 출동하여 (3번의 작성자,날자, 시간, 내용, 조회수), 한장의 웹페이지를 작성(이미 정해진 틀(템플릿) 대로 헤더,푸터, 사이드바 등은 똑같이 , 내부의 내용 ( contents )만 데이터 베이스에서 가져온 위와 같은 항목들을 조립 ) 하게되고, 이 페이지를 서버는 클라이언트에게 보내주게 ( 맨위 그림에서 (나) ) 되는 것입니다.

그러면 그것을 받은 우리의 브라우저는 우리에게 잘 만들어진 한장의 페이지를 보여주는 겁니다.
이렇게 서버 내부에서 데이터 베이스를 만들고 운영하려면 프로그램이 필요한데, Oracle, dbm, Filepro, MySQL, PostgreSQL 등이 있습니다.

2. 서버내에서 파일들이 들어있는 공간 (루트폴더= document 루트폴더 = 서버사이트 = 리모트 사이트)과 데이터 베이스 사이를 오가면서 최종적으로 클라이언트가 요구하는 동적인 웹페이지 (html형식의) 를 만들어주는 역할을 할 무엇인 가가 필요합니다.

바로 서버쪽의 프로그래밍언어입니다.

이 프로그래밍 언어가 매시간마다 방문객이 클릭하고 나가면 조회수를 갱신해서 데이터베이스에 저장도하고,필요하면 데이터베이스에 새로운 기록도하고, 데이터베이스의 자료를 가져와서 클라이언트가 필요로하는
페이지도 만들어서 보내주고, 웹메일도 보내주고, 주문서도접수하고, 주문끝나면 감사하다고 반응도하고, 기상청의 날씨정보가 1시간 전과 다르다면 다른 정보를 자동으로 업데이트하고,증권가격의 변동도 실시간으로
바꾸고.. 등등의 일을합니다.

다시 그림을 그리면

install-wordpress-server-client_02

( 그림 2 )

이렇게 되고 여기서 파란선이 서버이며 서버 프로그래밍 언어의 영역입니다. PHP, ASP, JSP 가 여기에 속하는 언어입니다.

(ex. 워드프레스 코어파일은 다운받아서 살펴보시면 알겠지만 대부분 PHP 파일입니다. 코딩 대부분이 PHP 언어로 되어있지요. 기본으로 속해있는 2013테마속의 index.php 파일은

[ wordpress/wp-content/themes/twentythirteen/index.php ] 주석을 빼고 실제 코드가 16줄 밖에 되지 않습니다. 그러나 서버에 설치후에 접속(위 그림에서 (가) = 워드프레스를 설치를 끝내고 2013테마를 선택한후 메인 화면(Hello world! 화면)) 시키면 돌아온 페이지(나)는 html,css,자바스크립트 로 만들어진 140줄의 소스가 보일겁니다. PHP해석기가 서버내의 index.php 파일을 웹브라우저가 이해할수 있게 만들어서 보내주는거죠 )

이제, 워드프레스를 설치하기 위한 기본 준비는 끝이 났습니다.
다음 글에서는 워드프레스를 직접 설치 하도록 하겠습니다.

3.서버 구하기

홈페이지를 만들기 위해서는 나의 홈페이지에 방문할 사람(클라이언트) 들에게 제공할 내용이 담긴 웹 페이지들을 인터넷의 세상에 올려놓을 서버가 있어야 합니다.

사실 서버라는 개념은 지금 내가 사용하고있는 PC와 다를것이 없습니다.

똑같은 CPU와 메인보드, 하드디스크, 파워, 램 메모리 등으로 만들어진 컴퓨터에 서버역할을 할 수 있게 프로그램만 가동하면 됩니다.

예를 들면 여러분들의 컴퓨터에 ‘아파치’ 라는 프로그램을 설치해서 실행시키면 여러분의 컴퓨터는 서버의 역할을 할수 있고,일정한 폴더에 html 형식의 파일을 올려 놓으면 바로 여러분의 PC가 서버가 되는 겁니다. 외부에서 접속도 할수 있고 구글이나, 네이버 같은 검색사이트의 검색결과 에도 뜰수 있고..

하지만 여기에는 몇가지 제약이 따르고, 전문적인 지식도 필요하며 번거롭기도 하여 맘편하게 전문 호스팅 업체에 의뢰 하여 웹 호스팅 서비스를 받게 됩니다.

내 컴퓨터가 아닌 어딘가에 있는 서버역할만 하게끔 만들어지고, 다듬어지고, 관리 되는 PC에 일정한 요금을 지불하고 임대를 받는 겁니다.

업체를 선정하고 (안정적으로 서버를 관리하는 업체인지…. 요금은 비싸지않은지 등등…… ) 그 업체의 사이트에 들어가 보면, 상품이 여러가지 존재 합니다.

* 여기서 짚어볼것이 있습니다.

서버 pc든, 클라이언트 pc든, 애플 pc든 어떤 pc든 운영체제가 필요합니다. 운영체제는 cpu, 메인보드 ,램메모리, 파워, 하드디스크의 조합일 뿐인 기계덩어리에 생명을 불어넣는 일을합니다. 그래서 만들기도 어렵고 비싸죠.

여러분도 아다시피 개인용 pc는 거의 마이크로 소프트가 독점을 하게되고, 우리는 대부분 윈도우 xp, 윈도우7등 ms의 운영체제를 사용합니다. (그 덕분에 빌게이츠는 세계최고 갑부가 되고요… ^^)

이 운영체제(MS)를 이용한 pc에 어울리는 서버 프로그램과 데이터 베이스프로그램, 서버스크립트언어프로그램을 상업적으로 이용하려면 비용이 많이 듭니다.

그래서 가격이 싸거나 , 무료 이면서 ms 의 소프트웨어에 경쟁이가능한 운영체제를 찾게 됩니다. 바로 Linux 죠

바보멍텅구리 기계덩어리에 LINUX 를 설치해서 쓸만한 놈으로 만들고, 여기에 서버역할을 할수 있게하는 공짜 프로그램인 ‘아파치‘를 설치해서 컴퓨터를 ‘서버’ 로 만듭니다.그리고 ‘리눅스’-‘아파치’ 조합에 잘 어울리는 데이터 베이스 프로그램으로 공짜인 ‘MySQL‘ 을 선택합니다.

마지막으로 ‘리눅스’ 운영체제에서 ‘아파치’와 ‘MySQL’ 조합에 잘 어울리는 서버쪽 스크립트 언어로 ‘PHP‘를 선택합니다. 공짜이면서 강력한 성능을 자랑하거든요.

리눅스 – 아파치 – Mysql – PHP

사실 이 조합을 만들기 까지 오래전부터 지금까지 그리고 지금이순간에도 여러 선구적 개발자들이 노력하고 있다는 것은 정말 행운이 아닐수 없습니다.

이런 조합은 적은 비용이 든다는 이유로,또 자유롭게 사용이 가능하다는 (라이센스의 제한이 작음) 이유로 널리사용되면서,발전하게 됩니다. (워드프레스를 비롯해서 우리가 쉽게 접할수 있는 프로그램인 제로보드, 그누보드 등등의 소프트웨어들이 위의조합을 기준으로 만들어진 것들입니다. )

웹호스팅(서버를 임대해주는일) 업체의 사이트에 들어가서

호스팅 상품을 검색해보면 (ex. 고도몰 호스팅)

서버 구하기 예제 이미지-고도몰

( 그림 2 )


(ㄱ)의 리눅스 웹호스팅 선택후

(ㄴ) 의 상품중 트래픽을 고려해서 선택 (사실 가장 싸거나 한달 무료 체험으로 시작해도 됩니다…충분합니다.)

(ㄴ)의 아래쪽으로 주욱내려가서 (ㄷ)을 보면 원하는 설정이 표시되어 있습니다.
(서버타입신청시 캐릭터셋은 UTF-8(워드프레스 표준캐릭터셋)을 선택합니다.)

이렇게 신청하게 되면 인터넷의 세상에 얼마간의 내 공간이 생기게 되는것입니다.

이때 호스팅 업체 사이트의 접속정보인①로그인 ID②비밀번호 (호스팅업체 회원가입시 만들어진) 뿐만 아니라, 임대받은 내 서버의 ③호스트네임 , ④서버 사용자명 , ⑤서버 접속 비밀번호를 알아야 하며 (위 그림2 에서 (B) 에 접속하기 위함)

자동으로 동시에 설치되는 데이터 베이스 공간인 MySQL의 ⑥데이터베이스 이름, ⑦관리자이름, ⑧접속 비밀번호를 알아야 합니다. (위 그림2에서 (C)에 접속하기 위함)

(물론 사이트에 들어가서 나의 관리창에 가면 다 있습니다만, 한장으로 모두 적어서 관리하신다면 편할겁니다. (분실위험만없다면…))