웹사이트 구축 1
웹사이트 구축 - ASP.NET 웹 서버
C#으로 ASP.NET 웹 프로그램을 만든 후 이를 실제 웹서버에 올려 Production 시스템으로 만드는 과정을 소개한다.
실제 라이브 웹사이트를 만들기 위해서는 크게 2가지 일을 해야 하는데,
(1) ASP.NET 웹 프로그램을 윈도우즈 IIS 웹서버에 올리는 작업과
(2) 자신의 도메인을 웹서버 IP에 할당하는 설정 작업을 진행해야 한다.
참고로 ASP.NET Core의 경우 리눅스 등에 설치할 수 있는데, 아직 초기 단계라 할 수 있다(개인적인 의견)
ASP.NET 웹 서버 구축
ASP.NET 웹 프로그램은 일반적으로 윈도우즈 IIS 웹서버에 올려 호스팅하게 된다.
이를 위해 먼저 자신이 사용할 웹 서버를 준비해야 하는데, 여기에는 여러 가지 방법들이 있다.
전통적인 방법으로는 자신의 개인 서버나 회사 서버에 올리는 방법이 있고,
외부 서버를 대여해서 사용하는 웹호스팅, VPS, 클라우드 등의 방법이 있는데 이를 간략히 살펴보자.
웹호스팅
먼저 가장 단순하게 웹호스팅 업체로부터 웹 서버를 대여 받아 사용하는 방법이 있는데, 국내 업체를
예를 들면 카페24의 윈도우 광호스트이나 가비아 웹호스팅 등이 있다.
해외 ASP.NET 웹호스팅 업체로는 윈도우즈 호스팅에 포커스하는 Winhost, Arvixe, DiscountASP.NET 등이 있다.
한가지 주의할 점은 웹호스팅은 기본으로 리눅스를 많이 사용하기 때문에, 옵션에서 윈도우즈 호스팅을 주의해서 선택해야 한다는 것이다.
VPS
웹호스팅은 해당 업체가 이미 셋업된 웹서버와 DB를 제공하기 때문에 쉽고 빠르게 웹사이트를 구축할 수 있다는 장점이 있지만,
서버를 다른 사람들과 공유해서 사용해야 하고, OS나 웹서버 혹은 DB 서버 레벨에서 어떤 셋업이나 작업을 진행할 수 없다는 단점이 있다.
즉, 그만큼 기능상의 제약을 받을 수 있고, 새로운 기술을 그때 그때 적용해 볼 수 없는 단점이 있다.
이러한 단점을 극복하는 방법으로 VPS 호스팅을 생각해 볼 수 있다. VPS (Virtual Private Server)는 가상 서버로 물리적인 한 머신에
여러 대의 가상서버들을 만들어 제공하는 것으로 사용자 입장에서는 마치 하나의 서버를 부여받는 것과 같다. 즉, IIS 서버 및 DB 서버를
자신이 셋업하고 .NET 버전 업그레이드 등과 같은 시스템 작업을 쉽게 수행할 수 있다. 다만, 이를 위해 사용자가 이러한 시스템 제어 및
관리를 수행해야 한다는 점이 경우에 따라 단점이 될 수도 있다.
VPS 서비스를 제공하는 국내 업체로는 스마일서브, 카페24 등이 있으며,
해외 VPS 업체로는 Atlantic.Net, Digital Ocean, Vultr 등이 있다.
일반적으로 해외 VPS 업체가 국내 VPS 업체보다 더 저렴하며, 웹호스팅 업체도 해외가 더 저렴하다.
클라우드
다음으로 요즘 많이 사용되고 있는 또 다른 방법으로 마이크로소프트 Azure 나 아마존 AWS (Amazon Web Services), Rackspace 같은 클라우드 서비스를 사용할 수 있다.
이들 클라우드 서비스는 기본적으로 VPS 처럼 Virtual Machine 을 제공하는데, 사용자가 필요에 따라 서버를 늘리거나 줄이는 일을 쉽게 할 수 있다.
즉, 웹사이트 유저가 급격히 증가하는 때는 서버를 추가로 늘렸다가 유저 트래픽이 줄어들면 서버를 줄이는 기능을 가지고 있다.
이러한 Virtual Machine 기능 이외에 클라우드는 서버 전체를 제공하는 대신 서버의 일부 기능만을 특화하여 서비스로 제공하고 있는데,
예를 들어 마이크로소프트 Azure에는 웹사이트 서비스 기능만 제공하는 Web App Service가 있고,
모바일을 위한 백엔드 서비스를 제공하는 Mobile App Service, REST API 만 호스팅하는 API App Service 등이 있다.
클라우드에서 ASP.NET 웹사이트를 구축하기 위해, Azure의 Web App Service (Azure Website)를 이용하거나 VM를 사용할 수 있다.
Azure Website에 ASP.NET 프로그램 올리기
마이크로소프트 Azure는 개인당 10개의 무료 웹사이트를 올릴 수 있는 Free 서비스를 제공하고 있는데,
이는 실무에서 사용하는 웹사이트를 올리는 용도가 아니라 테스트용으로 Azure를 사용해 보도록 하는 서비스이다.
이 무료 서비스는 하루 1시간의 CPU를 사용할 수 있도록 제한되어 있다.
유료 서비스 가격은 Azure App Service 가격표 링크를 참조한다.
하지만, Azure 무료 서비스는 일단 자신이 만든 ASP.NET 프로그램을 웹 서버에 올려 테스트해 보는 용도로는 충분하다.
ASP.NET 프로그램을 Azure Website로 올리는 방법은 매우 간단하다. (이 기능은 VS 팀이 가장 잘 구현한 기능이다!)
Visual Studio 에서 Solution Explorer를 열고 ASP.NET 프로젝트를 선택한 후 오른쪽 마우스 버튼을 눌러 [Publish] 메뉴를 선택하면,
아래와 같이 Azure로 Publish 하는 옵션을 선택할 수 있다. 이 화면은 VS 2017 이지만 이전 버전에서는 다이얼로그에서 Azure 메뉴를 선택한다.
위에서 Azure App Service를 선택하고 Publish 를 누르면 아래와 같이 Azure 서비스를 생성하는 화면이 나오는데, 마이크로소프트 계정으로 로그인하면
보통 모든 필드들이 자동으로 채워진다. 필요한 경우 옵션을 수정한 후, [Create] 버튼을 누르면 VS 가 빌드해서 Publish 를 수행한다.
Azure Publish가 완료되면 아래와 같이 [Summary] 페이지가 표시되는데 중앙에 Site URL 링크를 누르면 방금 생성된 Azure 사이트로 가게 된다.
VPS 가상머신에서 ASP.NET 프로그램 올리기
VPS 혹은 클라우드의 가상머신(VM)에서 ASP.NET 웹사이트를 만들기 위해서는 여러 절차들을 거쳐야 하는데, 일반적인 절차들을 정리하면 아래와 같다.
- OS는 Windows Server로 선택하고 가능하면 최신 버전을 선택한다.
- 윈도우즈에서 웹서버인 IIS 서버와 ASP.NET을 설치한다.
Windows Server 2012 경우를 예를 들면, 서버관리자(Server Manager)로 들어가서 [Add WebRole]을 선택하고 .NET 4.5과 ASP.NET 4.5 을 체크하여 설치하면 된다.
- IIS Manager를 실행하고 Add Web Site를 선택하여 새 웹사이트를 추가한다.
- VS에서 (위 그림에서 Azure 대신) 로컬 Folder에 Publish 한 후, 해당 폴더를 Windows Server 로 복사한다.
- 웹사이트명과 웹 프로그램 폴더를 지정한다. 여기서 [Host name]은 하나의 IIS 서버에 여러 개의 웹사이트를 두고자 할 때
사용하는 것으로 만약 하나의 웹사이트만 있을 경우는 생략한다.
- Application Pools 에서 생성한 웹사이트의 App Pool을 찾아 .NET Framework을 4.0으로 변경한다.
Sites - myweb.com에서 Context 메뉴를 선택 Manage Web Site - Start를 눌러 웹사이트를 재실행한다.
- 웹사이트 도메인을 지정했으면 도메인 URL로 접속할 수 있다.
서버에 하나의 웹사이트만 있고 도메인이 없는 경우 브라우저에서 서버 IP로 접속할 수 있다.
ASP.NET Core의 경우
VPS 및 가상머신에서 ASP.NET Core 프로젝트를 올릴 때는 약간 다른 스텝이 필요하다.
ASP.NET Core 프로그램의 경우, DotNetCore.1.0.1-WindowsHosting.exe 라는 .NET Core 호스팅 프로그램을 설치하고,
IIS App Pool 에서 .NET Framework 선택을 "No Managed"로 선택한다.
ASP.NET Core는 DLL 이 아닌 EXE 형태이므로 직접 독립된 EXE 프로세스가 돌게 된다.
IIS는 Web Request를 이 EXE 프로세스에 보내고 다시 결과를 받아 전달하는 Reverse Proxy 역활을 하게 된다.
웹호스팅에 ASP.NET 올리기
웹호스팅 서버를 사용하는 경우, 일반적으로 웹호스팅 업체가 제공하는 Control Panel 을 사용하여 프로그램을 올리면 된다.
각 업체마다 약간씩 다른 Control Panel을 사용하는데, 해당 웹호스팅 사이트로 로그인해서 Control Panel 웹 UI를 사용하여
파일을 업로드하거나 수정할 수 있다. 또한, 보통 이 패널을 사용하여 DB를 생성하거나 메일 계정을 생성하게 된다.
Control Panel에서 FTP 사용자를 생성하면 FTP로도 파일을 업로드 할 수도 있다. 일반적으로 많은 파일들을 업로드 할 때는
FTP가 속도가 빠르며, 만약 Control Panel에서 Unzip 기능을 제공하면 많은 파일 업로드의 경우 먼저 Zip 해서 올리고
Control Panel 에서 Unzip하는 것이 훨씬 빠르다.
다음 아티클은 웹사이트에서 도메인을 설정하는 부분에 대해 설명한다.