IT이야기/웹서버구축2017. 6. 16. 14:52

-윈도우에서 APM(Apache, Php, Mysql) 웹서버를 설치해 봅시다.


버추얼박스를 쓴다거나 아마존이나 구글클라우드 같은 것을 이용하지 않는다면 보통 한국에서는 윈도우 환경에서 작업을 하시리라 생각됩니다.

리눅스에서는 명령어 몇번이면 주루루룩 설치가 다되던데, 윈도우에서는 어떻게 해야 할까요?


윈도우용으로 편리하게 더블클릭하고 예 예 몇번 누르면서 설치한번에 웹서버를 구축할수 있는 패키지들이 존재합니다.아파치는 아무래도 리눅스 베이스로 만들어진 프로그램이다보니 윈도우에서는 제 속도가 나오지 않는다고 합니다. 보통 이 프로그램들은 리눅스 서버 입문자의 디버깅 환경 구축용 혹은 PHP+MySQL 연습용 정도로 쓰는 분들이 많다고 하네요. 거기다 윈도우 서버에는 MS가 자체적으로 만든 인터넷 정보 서비스(IIS)가 있기 때문에, IIS에 FastCGI 모듈로 PHP를 연결시켜서 돌리는 것이 보통이라고 합니다. 이 때문에 PHP의 윈도우 버전은 IIS용과 Apache용이 따로 나옵니다.

그래도 일단 집에서 mysql 가지고 놀고, php뛰워서 쿼리날리고 화면 뛰우는정도 연습하려면 아주 유용하게 쓰입니다.

그리고 공유기 포트 열어서 외부에서 접속하는것도 가능합니다. 유동아이피라 다시 접속할때 바뀔수도 있지만요.



-Autoset


홈페이지 링크

홈페이지에 있는 설명을 발췌하였습니다.


오토셋을 이용하면, 개발/운영을 위한 웹 서버(Apache HTTP Server)와 PHP, MySQL, CUBRID 설치를 위해 투자하는 시간을 절약하실 수 있습니다.

오토셋은 신속하게 기반 시스템을 설치 할 수 있도록 패키지가 구성되어 있으며, 사용자가 선택적으로 필요한 요소를 설치할 수 있도록 제공하고 있습니다.

3분만 투자하세요. 그러면 초보도 내 컴퓨터에서 홈페이지를 만들고, 운영 할 수 있는 환경이 만들어 집니다.

오토셋 매니저는 텍스트 파일로 구성되어 있는 Apache HTTP Server, PHP, MySQL, CUBRID의 주요 설정 파일을 GUI 기반으로 쉽고 간편하게 변경 할 수 있도록

다양한 기능을 제공합니다. 각 서버별로 가지고 있는 설정 방법, 내용을 외우고 있을 필요가 없습니다.



-apmsetup


홈페이지 링크

공식 홈페이지는 현재 문이 닫혀있습니다. 

아마 제가 제일 처음으로 써본 윈도우용 apm 패키지일것입니다. 10여년도 전에 사용했었군요.

apmsetup7이 올라온지 엄청 오래된 버전인데. 어느센가 업데이트도 안되더니 결국 사이트도 문을 닫았더군요.

내 컴퓨터를 웹서버로 활용 할수 있도록 Apache, PHP, MySQL, Perl을 자동 설치 및 설정해주는 프로그램입니다.

그래도 아직 네이버 자료실에 올라온게 있어서 다운받을수는 있습니다.

블로그에 글들을 보면 php5.6 버전으로 업그레이드 할수도 있다고 본거같은데, 일단 옛날버전에 64bit 컴퓨터에 설치하려면 불가능은 아니지만 번거롭습니다.

자료실링크


-홈페이지 접속시 매드사이언티스 같은 캐릭터가 보이는군요.


-wampserver

홈페이지 링크

외국 사이트인데, 요즘 윈도우용 웹서버 구동할때 많이 사용한다고 들었습니다.

사이트에서 발췌한 프로그램 설명입니다.


WampServer installs automatically all you need to start developing web applications and is very intuitive to use. 

You will be able to tune your server without even touching the setting files.

WampServer는 웹 애플리케이션 개발을 시작하는 데 필요한 모든 것을 자동으로 설치하며 사용하기가 매우 쉽습니다. 설정 파일을 터치하지 않고도 서버를 조정할 수 있습니다.



-xampp

홈페이지 링크

다른 프로그램들도 유명하지만 xampp의 경우, 위키피디아에 등제될만큼 유명한 프로그램입니다.

그리고 주기적으로도 계속 업데이트 되고 있고, php7 시리즈도 지원되는군요.


XAMPP는 크로스 플랫폼 웹 서버 자유 소프트웨어 꾸러미이다. 

아파치 웹 서버 MySQL, PHP, 펄을 포함하고 있다. 

GNU 일반 공중 사용 허가서로 배포되며 자유롭고 쓰기 쉬운 웹 서버이다. 

마이크로소프트 윈도, 리눅스, 솔라리스, 맥 오에스 텐 등에서 동작하며 주로 웹 개발에 사용된다.

XAMPP는 설치 환경에 따라 zip 또는 tar 형식의 압축 파일이나 EXE 실행 파일, 맥 오에스 텐 패키지 등의 실행으로 바로 작동되며 설정이 거의 필요없다. 

정기적으로 구성물을 최신으로 유지한다. 오픈SSL과 phpMyAdmin 등도 포함한다.

XAMPP를 설치하는 것은 각각의 구성물을 설치하는 것에 비해 훨씬 시간을 적게 소비한다.

한 컴퓨터에 자기 자신을 포함해 여러개의 구현물이 있을 수 있고, 다른 컴퓨터로 바로 복사할 수도 있다.

가볍게 만들어진 작은 버전도 있다.


위 프로그램들을 이용하여 손쉽게 윈도우에서 웹서버 환경을 구축해볼수 있습니다.

Posted by Joseph514
IT이야기/입코딩2017. 6. 7. 17:55

-[용어정의]서버(Server)


서버(Server)란 클라이언트에게 네트워크를 통해 서비스하는 컴퓨터입니다.


나무위키에 있는 서버에 대한 내용을 발췌해 보겠습니다.

인터넷은 수많은 서버들이 거미줄처럼 얽혀서 형성된다고 합니다. 

홈페이지를 운영하려면 서버가 반드시 필요하며, 온라인 게임이나 웹게임들도 서버를 통해서 서비스를 하고 있습니다. 보통 어느정도 규모가 있는 기관에서는 데이터베이스, 웹 어플리케이션 서버 등등에 방화벽, 라우터등이 붙어 네트워크를 형성합니다.

구글 데이터센터의 서버들처럼 랙 안에 설치되어 항온항습기를 사용해 온도/습도가 유지되는 환경에서 보관되어 지는 경우에서 부터, 그냥 일반적인 PC를 사용하여 서비스를 제공하는 경우까지 매우 다양합니다. 

물론, 전문적으로 서비스를 제공하는 업체에서는 전용의 장비를 사용하는 것이 일반적입니다.

서비스 규모가 커질수록 서버의 규모도 크고 아름다워지기 때문에 구글이나 페이스북같은 경우 자체적으로 인터넷 데이터 센터를 운영합니다. 

국내에서도 2013년 6월 네이버에서 데이터 센터를 완공하여 운영하기 시작했는데 구글데이터센터나 네이버 데이터 센터 그리고 페이스북 데이터 센터를 보고있자면 이게 서버인지 우주기지인지 구분이 안될 정도로 엄청난 것을 알 수 있습니다. 

접속량이 많을 수록 서버의 부담도 많아지기 때문에 규모에 따라서 운영하는 서버의 성능과 대수가 다릅니다. 

온라인게임들이 주기적으로 점검을 하는것도 바로 서버점검을 하기 위함이며, 사용자가 몰려서 게임이 제대로 안돌아간다면 바로 이 서버가 감당하지 못해서 생기는 현상입니다. 

법적으로, 인터넷 컨텐츠를 수사할 경우 서버의 소재 국가에 따라서 어느 나라 법을 적용하느냐가 달라지며 이것도 속지주의의 일종입니다. 

나무위키는 서버가 해외에 위치해 있어 대한민국 법률이 적용되지 않습니다. 하지만 작성자가 대한민국에 있다면 제한적으로 적용될 수 있습니다.

VPS 호스팅 업체에서는 가상서버라는 것을 임대해 줍니다. 

물리적 서버를 분할하여 root권한을 가진 서버를 가질 수 있습니다. 

가상서버 한개를 임대하면 웹서버를 포트를 정하여 여러개 운영할수 있습니다. 이론적으로 사용 가능한 포트 번호는 0~65535 사이이나, 이 중 상당수의 포트는 이미 예약되어 있다고 합니다. 

1024 이하의 포트는 정해진 프로토콜 이외에는 함부로 사용하지 않는 것이 좋습니다.



뭔가 굉장히 어렵게 설명되어 있지만 딱 잘라 말해서 서버도 컴퓨터입니다. 


우리가 쓰는 컴퓨터와 똑같은 종류의 부품을 사용하기 때문에 가정에서 쓰이는 평범한 컴퓨터를 서버로 쓸 수도 있습니다. 

다만 안정성을 높이기 위해 좀 더 비싼 고급 부품을 쓰고 하드디스크와 전원장치는 2개 이상씩을 달아 서버를 끄지 않는 상태에서도 교체가 가능한 비싼 컴퓨터를 사용합니다. 

가정용 컴퓨터는 나만 필요할 때 쓰고 끄면 되지만 서버의 경우는 다른 사람들이 접속하여 사용하는 셈이므로 특별한 일이 없다면 24시간 내내 돌리게 됩니다. 

그래서 굳이 RAID 확장카드 달고 하드디스크도 3~4개씩 꽂아서 RAID로 묶습니다. 

일반적으로 쓰는 (옛날은 EIDE지만)SATA같은 인터페이스가 아닌 SCSI나 SAS를 이용합니다. 

이들은 컨트롤러가 제어하는 인터페이스여서 CPU랑 독립적으로 돌아가기 때문에 CPU 점유율이 낮아서 안정성을 요구하는 서버에 잘 맞는 인터페이스지만, 상당히 가격이 비싸며 컨트롤러 카드도 가격이 비쌉니다.

개인이 운영하는 웹사이트/웹게임 정도는 개인용 컴퓨터로도 홈서버로 서비스에는 무리가 없지만, 가정용 회선으로는 부족할 수도 있습니다. 

보통 DDoS 테러를 한다고 하면 타겟이 되는것이 바로 이 서버들이라고 하더군요. 접속량을 과도하게 늘리면 서버가 감당하지 못하다 뻗어버림으로써 사이트가 마비 됩니다.

서버 컴퓨터용 OS도 따로 있습니다. 사용하기 보다는 서버용으로 돌리는게 목적이므로 일반용과는 차이가 많습니다. 

유닉스, 리눅스 계열 서버운영체제는 대부분 CUI인 경우가 많지만 macOS 서버나 윈도우 서버의 경우는 가정용과 인터페이스 차이가 거의 없습니다. 

또 하드디스크의 가격하락과 유무선공유기의 보급덕에 집에서 NAS나 애플의 맥 미니를 이용해 개인용 서버를 운영하는 경우가 늘어나고 있습니다. 

NAS에는 주로 시놀로지 DSM OMV free4nas Cent OS라는 리눅스계열 운영체제가 탑재되는 경우가 보통이며 애플의 맥 미니에는 옵션으로 macOS Server가 들어갑니다. 

과거 애플은 서버컴퓨터인 Xserve도 내놓았지만 단종되었다고 하네요. 

맥 사이에서 써야 빛을 내는데 애초에 그런 환경이 당시 드물었고, 가성비까지 별로라 단종되었다고 합니다.현재 맥 프로와 맥 미니로 대체되있으며, 랙마운트 어댑터도 구매할 수 있습니다. 


서버에 종류에 대해서 한번 알아보겠습니다.

보통 서버를 돌리려는 이유는 마인크래프트 등의 게임 서버, 블로그 서버, 파일 서버 등이 있습니다.


-FTP 서버

대용량 파일 전송을 위한 프로토콜입니다. FTP서버는 HTTP서버 다음으로 해킹 표적이 되는 서비스입니다. 

파일 배포 서비스가 필요한 것이 아니라면, SSH 환경에서 실행할 수 있는 SFTP를 이용하는 것으로 충분합니다. 

윈도우 환경에서는 FileZilla등의 FTP클라이언트가 sftp서비스를 지원합니다.

만약 제어 콘솔(PC)도 리눅스라면 sshfs패키지를 설치해서 서버를 원격 마운트할 수 있습니다. 

참고로 sshfs는 samba와 달리 라우터를 자유롭게 넘어다닌다고 합니다. 

지구 반대편에서도 서버를 원격 마운트할 수 있습니다. 다만 윈도우에는 없는 패키지라서 윈도우 사용자는 가상머신을 이용해야 합니다.


-웹 서버

대표적으로 Apache2, lighttpd, nginx등이 있습니다. 

범용성은 apache2가 가장 우월하나 동접자가 늘어날수록 메모리를 많이 먹고 속도도 조금 느립니다. 

nginx는 동접자가 늘어도 추가 메모리를 거의 필요로 하지 않으며 가장 속도가 빠르나 .htaccess를 읽어들이지 못하는 것 등으로 인하여 설정이 번거롭다고 합니다. 

lighttpd는 nginx와 같은 비동기식 웹 서버라 성능 면에서도 괜찮고 .htaccess 파일 또한 읽어들일 수 있기 때문에 nginx에 비해서 설정이 간단합니다. 

다만 .htaccess는 모든 요청을 처리 할 때마다 읽기 때문에 정적 서버에서 권장하지 않는다고 합니다.그리고 참고할 문서가 적은 게 흠이라고 합니다.


-데이터베이스 서버

데이터베이스를 구동하는 서버입니다. 개인이 취미로 돌리는 웹 서버 정도에선 애플리케이션 서버와 같은 서버에서 돌아가는 것이 대부분일 것입니다. 

하지만 대형 서비스로 간다면 독립된 DB서버를 구동하는 것을 심심찮게 볼 수 있습니다. 

서비스 규모가 커질수록 DB부담이 수직상승하기 때문입니다. 

보통 기업 보유 자산 중 가장 빠르고 가장 메모리가 많고 SSD로 도배한 서버로, 제일 성능이 좋은 서버가 DB서버로 사용됩니다.

소규모 개인 서비스에서 쓰이는 것은 대부분 MySQL, MariaDB 또는 SQLite 정도입니다. 다만 PHP와 달리 MySQL과 마리아DB는 대형 서비스에도 쓰이는 강력한 데이터베이스 엔진입니다.

개인이나 SOHO 레벨이면 APM(Apache + PHP + MySQL)이 점유율의 대부분을 차지하지만, 대한민국 정부, 즉 관(官)에서 주관하는 중대규모 사업은 JSP/Tomcat + ORACLE이 사실상 표준입니다.


-기타

토렌트 서버, 게임 서버등이 있습니다.

토렌트 서버를 만들고 싶다면 "transmission-daemon" 또는 "uTorrent for Linux"를 설치합니다. 

근데 토렌트 서버는 네트워크 대역폭을 엄청 빨아먹으므로 민폐가 될 수 있다고 합니다.

게임서버란 인터넷 상에서 여러 플레이어가 같이 게임을 할 수 있게 하기 위한 프로그램이나 해당 프로그램을 기동중인 컴퓨터를 말합니다.



버추얼박스로 리눅스 하나 깔아서, putty로 접속하고 서버 돌려보는것도 나름 재미있네요.

사실 서버 전문가들은 SE 라고 웹개발자와는 직군이 좀 다른것 같습니다만, 혼자서 개발환경정도는 세팅할수 있게, 간단하게 데이터베이스 깔고, 파일서버 만들고, svn에서 공유하고 하는정도는 스킬을 익혀두는게 좋겠더군요.

Posted by Joseph514
IT이야기/입코딩2017. 5. 8. 21:14


인터넷에서 많이 쓰이는 호스팅이라는 용어에 대해서 알아보겠습니다.


전 처음 블로그를 시작하려고 했을때, 나름 웹개발자라서 AWS 서버 구축해서 직접 제작한 블로그를 쓰던가 못해도 워드프레스 같은 cms 를 직접 제작해서 관리해보려는 생각을했습니다.

그러다 무료 호스팅을 신청해서 1년정도 개인홈페이지나 블로그도 만들어봤구요.

그런데, 느껴진게 귀차니즘의 압박으로 네이버 블로그나 티스토리 블로그로 갈아탔네요. 언젠가 가능하다면 개인 호스팅에 사이트를 운영해 보고싶기도 합니다.

일단 호스팅(hosting)이란 뜻을 정의해보면, 서버 컴퓨터의 전체 또는 일정 공간을 이용할 수 있도록 임대해 주는 서비스를 말합니다.

co.kr 이나 .net 같은 도메인과는 좀 개념이 다릅니다. 도메인(domain)이란 문자로 표시한 인터넷 주소입니다. 모를 때는 카페24같은 호스팅업체에서 도메인도 서비스하기에 같은 개념인줄알았습니다.

집에서 아무리 만들고 가지고 놀아도 외부에서 사람들이 보려면 본인의 컴퓨터를 서버로 쓰거나 간단한 작업정도는 쓸수 있겠지만 호스팅이 있어야 겠지요.

인터넷에 연결된 웹 사이트를 운영하기 위해서는 1일 24시간, 1년 365일 항상 인터넷에 연결된 서버 컴퓨터를 운영해야 합니다. 

학부생 시절에 동아리방 구석에 모니터와 키보드 없이 본체만 켜져있는 리눅스 서버를 돌려서 푸티로 접속하고 가지고 놀았던 기억이 있는데요.

만약 집에서 했다면 전기세, 인터넷 트레픽 때문에 눈치가 이만저만 아니겠지요. 개인학습이나 소수 인원이 쓰기엔 노는 데스크탑이나 노트북으로 서버환경 구성해서 사용해도 문제는 안됩니다만, 회원이 몇십명만 넘어가도 부화가 걸려서 버벅거리는게 느껴지더군요.

개인이나 기업 또는 단체가 이런 서버 컴퓨터를 독자적으로 구축하여 운영하기 위해서는 막대한 비용이 필요로 합니다.

이러한 문제를 해결하기 위해 전문 호스팅 업체가 미리 여러 대의 서버 컴퓨터를 구축한 뒤, 그 공간 중 일정 부분을 이용자들에게 임대해 주고 그 대가를 받는 서비스가 생겨났는데, 그것이 호스팅 서비스입니다.

유명한 카페24나 phpschool 같은 경우는 단돈몇백원에 한달의 호스팅을 제공해 주기도 합니다. 물론 사이트의 규모가 커지면 사용자수도 늘어나고 용량도 늘어나서 유지비가 많이 들겠죠.

호스팅 서비스에는 웹 호스팅과 서버 호스팅, 메일 호스팅 등 다양한 종류가 있습니다. 

-웹 호스팅 혹은 공유 호스팅(shared hosting)

개별 홈페이지를 운영하는 사용자를 위해 서버 컴퓨터의 일부 공간을 임대해 주는 서비스입니다. 

웹호스팅은 하나의 서버에서 여러 사용자의 사이트를 띄워주기 때문에 한 사용자가 서버자원을 과도하게 사용하게 되면 서버내 다른 사용자 페이지 처리속도에 영향을 끼쳐 업체마다 정해진 조치를 취합니다. 

물론 사용자측에서는 서버부하가 보이는 것도 아니고, 억울할 수도 있으나 아무래도 다른 서비스에 비해 저렴한 서비스라 감수해야하고, 조금 더 비싼 단독웹 호스팅은 어차피 혼자쓰기 때문에 중요한 사이트라면 돈을 더 내더라도 단독웹이나 서버호스팅을 쓰는게 낫다고 합니다. 

장점

저렴한 가격도 있지만 서버관리에 대해 신경쓸 필요가 없다는게 큰 장점입니다. 

단독웹 호스팅과 서버호스팅은 혼자쓴다는 점은 같지만, 웹호스팅은 서버에 손 댈 필요가 없습니다. 서버 호스팅에는 가상 서버(virtual private server) 호스팅과 단독 서버(dedicated server) 호스팅으로 나뉘는데, 가상 서버 호스팅은 서버의 일정한 공간을 KVM, Xen, OpenVZ 등의 가상화 기술을 이용하여 한대의 서버처럼 나눠주는 서비스이며 단독 서버 호스팅은 서버 한대를 전부 임대해 주는 서비스로서 일정 비용을 납부해야 합니다. 


-메일 호스팅

이메일 혹은 웹메일 계정과 공간을 임대해 주는 서비스입니다. 

기타 이외에도 쇼핑몰 호스팅, 리셀러 호스팅 등이 있습니다. 웹호스팅을 구매하면 해당 옵션에 메일 몇개씩 메일 호스팅은 기본으로 포함되어 있더군요.

호스팅 서비스는 스토리지에 따라서 SSD, HDD로 나뉘고, 운영체제에 따라서 리눅스(Linux) 호스팅, 윈도우즈(Windows) 호스팅로 나누기도 합니다.

하지만 해당 호스팅이 웹 호스팅일경우, 혹은 꼭 웹 호스팅이 아니라도 그냥 저렴한 리눅스 호스팅을 쓰는게 나은 경우가 있습니다.

많은 사람이 간과하는 부분이 있는데, 일부 호스팅 업체는 서버에 부담을 준다는 이유로 검색엔진 봇(구글봇, 네이버 봇 등)을 막아버리는 경우가 있습니다. 개인 자료관리용이라면 상관없겠으나 그렇지 않은 경우라면 아무리 열심히 홈페이지를 운영해도 방문자가 들어오지 않을수 있습니다. 검색에 민감한 홈페이지를 운영할 계획이라면 호스팅을 신청하기 전 검색엔진 봇을 차단해 두는지 여부 등을 미리 물어보도록 하거나 안전하게 단독형 호스팅을 사용하는 게 좋다고 합니다.


호스팅을 구매하기전 팁

워드프레스 같은 CMS 도구나 미디어위키같은 위키엔진을 설치하고자 할 경우, 서버 환경이 UTF-8기반에 PHP와 MySQL 버전이 최신으로 세팅 되어 있는지 꼭 확인하는게 좋습니다. 

PHP, Mysql 양쪽다 5 이상이면 괜찮다습니다. 단, 워드프레스나 미디어위키, XE 최신버전은 PHP 5.3 이상을 요구합니다. 

SSH 지원 여부도 중요한데. 호스팅에 따라 SSH가 지원되지 않는 경우가 생기면 홈페이지 관리가 불편해집니다.

제 실력이 짧아서 그런지 모르겠지만 php 라라벨 프레임워크 같은경우는 설정을 안해주면 아에 하지를 못하는경우가 생기더군요.

SSH가 지원되는 호스팅을 고르고 그렇지 않다면 cPanel 같은 관리자 툴이 제공되는지 꼭 알아보아야 할것입니다.

마지막으로 가장 중요한 것은 역시 비용입니다. 한국을 포함한 아시아권 서버의 비용은 전반적으로 비싼 반면 구미권 서버비는 상당히 싸다고 합니다. 저는 한국것만 써봤는데, 영어를 더 익혀서 북미에 미국호스팅이나 캐나다 호스팅도 한번 사용해봐야겠군요.


출처 : 나무위키, 본인생각

Posted by Joseph514