질문/조언팁/리소스 공유

1. 개요

윈도우 서버에서 IIS, mysql, php, 인증서 설치와 메일서버 구축 및 기타 활용에 대해서 설명합니다. (글이 너무 길어져 FTP, webdav, 메일서버, 토렌트서버는 다음에 포스팅할 계획입니다)

 

기존에 XE공홈에 윈도우8/10에서 XE설치에 관하여 글을 남긴 적이 있는데, 바뀐 부분과 제가 막혔던 부분 등을 추가하여 다시 정리하였습니다. 가능한한 쉽게 설명할 수 있도록 노력하였습니다. 모쪼록 홈서버 또는 초급개발자를 위한 서버구축에 도움이 되길 바랍니다.

 

준비사항

  • Windows Server 2019 (학생인 경우 MS Azure for Students에서 학교메일 인증 등을 통하여 Windows Server 버전을 무료로 받아 개발용도로 체험해 볼 수 있습니다.)
  • 도메인 (인증서,메일서버에서만 필수입니다.)

 

3. 프로그램 설치에 앞서 확인할 사항

  • GUI버전인 windos server (데스크톱 경험)을 설치하면 부팅시 서버 관리자가 나타납니다. 

3-1.jpg

windows 데스크톱 버전에서의 "프로그램 제거 및 기능 > windows 기능 켜기/끄기"는

windows 서버 버전에서 "서버 관리자 > 관리 > 역할 및 기능 추가/ 제거"가 담당합니다.

 

  • Administrator 계정으로 서버에 접속하는 것은 보안상 좋지 않으므로, 별도로 사용자 계정을 추가하고 이를 Administrators 그룹에 포함합니다. 

서버 관리자 > (우측상단)도구 > 컴퓨터 관리 > 로컬 사용자 및 그룹 > 사용자 > 기타 작업 에서 "새 사용자" 추가

3-2.jpg

3-3.jpg

단순한 암호를 설정하려는 경우 "암호가 암호 정책 요구 사항에 맞지 않습니다." 라는 오류가 뜹니다. 이 정책을 변경하려면 서버 관리자 > 도구> 로컬 보안 정책(secpol.msc) > 보안 설정 > 계정 정책 > 암호 정책 --> "암호는 복잡성을 만족해야 함"을 "사용 안 함"으로, "최소 암호 길이"를 짧게 변경하면 됩니다.

추가한 사용자를 선택하여 > (우측)기타 작업 > 속성 > 소속 그룹 > 추가에서 Administrators를 추가해 줍니다.

3-4.jpg

 

  • 원격 데스크톱 연결 - 서버 관리자 > 로컬서버 > 원격 데스크톱 > 사용

원격 데스크톱 연결을 설정한 이후부터는 다른 컴퓨터에서 위에서 추가한 사용자계정(예-ehii)으로 서버에 접속하여 모든 작업을 수행할 수 있습니다. 또한 MS에서 제공하는 RD Client 앱도 있어서 스마트폰에서도 서버에 접속할 수 있습니다. 앞으로는 모두 이 원격 데스크톱 연결을 이용하여 작업하도록 하겠습니다.

 

원격데스크톱 연결의 포트(RDP)는 3389입니다. 아래의 과정을 수행한다면 방화벽에서 별도의 포트 개방 작업은 필요하지 않습니다. 

 

원격데스크톱 연결은 아이디/비번만으로 서버의 모든 제어권한을 쉽게 가질 수 있기 때문에 해킹시도가 많습니다. 제 경우에도 이 포트로 엄청난 접속을 이벤트 로그로 확인하였습니다. 무차별 대입 공격을 방지하기 위해 1) 게이트웨이(공유기) 단에서 이 포트를 연결하지 않고 내부 네트워크에서만 접속하며, 필요한 경우에만 잠깐씩 포트를 열어 사용하고, 2) 위에서 Administrator 계정은 비활성화하고 추가된 사용자계정으로만 접속하고 있습니다. 이 밖에도 3) 윈도우 서버의 방화벽에서 원격데스크톱연결에 접근하는 내IP만 화이트리스트(허용)로 등록하는 것도 좋은 대응방법입니다. 1)과 3)은 8. 게이트웨이에서 설명하겠습니다.

3-5.jpg

3-6.jpg

3-7.jpg

 

  • 아래는 다른 데스크톱 PC에서 서버에 연결하는 과정입니다.

컴퓨터에는 서버의 IP 또는 도메인을 입력합니다. (현재 제 서버ip는 192.168.xxx.xxx로 시작하는 사설 ip입니다. 서버와 같은 내부네트워크를 구성하는 PC- 즉, 같은 DHCP 서버 하단에 있는 PC에서만 192.168.xxx.xxx로 서버에 접속할 수 있습니다. 이 경우 외부에서 접속하려면는 별도로 포트포워딩이 있어야 하며 "공인ip:포트번호"로 접속할 수 있습니다.) (공유기=게이트웨이+DHCP서버 라고 생각하시면 됩니다)

 

"원격 컴퓨터의  ID를 확인 할 수 없습니다. " 라는 오류는 내 서버가 자가 발급한 인증서가 사설 인증서라서 공신력이 없다는 내용에 불과하므로 무시하고 진행하여도 괜찮습니다. 

3-8.jpg

3-9.jpg

 

  • 기타 이슈 - 데스크톱PC용 메인보드에 주로 장착되는 인텔 내장LAN은 I219-V 인데, 인텔사에서는 윈도우즈 서버 버전의 드라이버를 제공하지 않습니다. 이에따라 Windows Server에서 이더넷어뎁터가 자동으로 잡히지 않는 이슈가 있습니다. 저는 1)데스크탑용 드라이버(inf파일)를 서버용으로 수정 2)메인보드 바이오스에서 안전부팅키 삭제 3)cmd > bcdedit -set loadoptions ENABLE_INTEGRITY_CHECKS 4)드라이버 수동설치 5)바이오스 복구하여 해결하였습니다. 이 부분은 다른 사이트를 검색하여 참고하시기 바랍니다.

 

4. IIS

4-1. IIS 설치

 

  • IIS 설치 전 확인 사항 
    • (권장)서버가 인터넷에 연결된 경우 Windows 업데이트를 실행하면 .NET Framework 3.5 기능이 자동으로 설치 되므로 미리 Windows 업데이트를 완료하시는 것이 좋습니다. (.NET Framework 3.5는 후술할 PHP Manager를 설치하는데도 필요합니다.)
    • Windows 업데이트를 할 수 없는 경우에 - 서버 역할 중 웹서버 > 응용프로그램 개발 > .NET 확장성 3.5 를 설치하려는 경우 "대체 원본 경로를 지정해야 합니까" 라는 경고 메세지가 나타납니다. 이 경우 windows server 설치CD의 경로(d:\sources\sxs\)를 대체 원본 경로로 설정해주면 오류 없이 설치가 됩니다. 설치 미디어는 https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2019 에서 평가판(ISO이미지)을 다운로드 받을 수 있습니다.

 

  • 서버 관리자 > 역할 및 기능 추가 > 역할 기반 또는 기능 기반 설치 > 서버 풀에서 서버 선택 > 웹 서버(IIS) > 역할 서비스 전부선택 > 설치

 

  • 역할 서비스 중 ODBC(db에로깅), ASP(우리는 php를 쓸 예정이므로) 같은 서비스는 필요 없긴 하지만, 굳이 제외할 것 없이 전부 설치해 줍니다.

 

 

3-1.jpg

4-1.jpg

4-2.jpg

4-3.jpg

4-4.jpg

4-5.jpg

4-6.jpg

 

4-2. IIS 관리자

  • IIS가 설치되면 윈도우방화벽의 80, 443포트가 개방되고, Default Web Site가 C:\inetpub\wwwroot를 기본폴더로 자동으로 생성/시작됩니다. 

 

  • IIS 설치 후에는  서버 관리자 > 도구 > "IIS(인터넷 정보 서비스) 관리자" 메뉴가 새로 생깁니다.
  • IIS 관리자에서는 사이트 생성과 바인딩(사이트와 포트, 호스트네임 등을 연결하는 것), PHP관리, 인증서 등 web 서버의 전반적인 관리를 할 수 있습니다.

 

4-3. 웹 플랫폼 설치

  • IIS 관리자에서 URL 재작성 기능을 사용하기 위해서는 "웹 플랫폼"을 별도로 설치해야 합니다.
    • Windows Server를 처음 설치하면 보안상 IE도 차단되어 있습니다. 서버 컴퓨터에서 직접 설치 파일을 다운받기 위해서는 IE의 보안설정을 수정해야 합니다. IE > 인터넷 옵션 > 보안 탭 > 신뢰할 수 있는 사이트에 "https://www.iis.net", "https://download.microsoft.com"을 추가하면 서버컴퓨터에서 설치 파일을 다운로드할 수 있습니다.
    • (권장)다른 방법으로는 1)데스크톱PC에서 설치 파일을 다운(https://www.iis.net/downloads/microsoft/web-platform-installer)받은 후 2)원격 데스크톱 연결로 설치파일을 복사(Ctrl+C)하여 서버컴퓨터에 넘겨줄(Ctrl+V) 수 있습니다.(드래그는 안됩니다. 원격 데스크톱 연결에서 서버와 클라이언트간 상호 파일 복사/ 이동이 간편한 것은 정말 큰 장점입니다.)

4-7.jpg

4-8.jpg

4-9.jpg

 

4-4. URL 재작성 2.0 설치

  • "URL 재작성"은 아파치서버의 .htaccess 파일과 같은 역할을 합니다. 정규식 또는 와일드카드와 같은 패턴과 서버변수를 비교하는 조건을 사용하여 사이트별, 디렉토리별로 접근을 차단(403)하거나 redirect(301,302)할 수 있으며 XE의 짧은 주소 기능을 사용(rewrite)할 수 있게 합니다. 각 디렉토리에 web.config파일로 설정이 저장됩니다.

 

  • 웹 플렛폼을 설치한 이후에 IIS 관리자 > (좌측)서버 컴퓨터 선택 > (우측)새 웹 플랫폼 구성 요소 가져오기 > URL 재작성 2.0 설치 

4-7.jpg

4-10.jpg

5. PHP 설치

5-1. PHP manager 설치

5-2. PHP 버전 등록 및 변경

  • 1)https://windows.php.net/download 에 접속하여 원하는 버전(XE는 PHP 최소5.5이상, Rhymix는 PHP 7.0이상을 필요로 합니다.) 의 zip 파일을 다운받습니다. IIS는 NTS(Non Thread Safe)를 받아야 합니다. 즉 64bit windows server는 x64 Non Thread Safe를, 32bit winodws server는 x86 Non Thread Safe를 다운로드 받으면 됩니다. 2)적당한 폴더에 압축을 풀어줍니다.

저는 이 글을 작성하는 당시 최신버전인 7.3.12를 C:\Program Files\PHP\ 폴더에 압축을 풀어 설치해 보겠습니다. (최신버전이 꼭 안정적인 것은 아닙니다. 버전에 따라 XE 코어,모듈,스킨에서 에러가 발생할 수 있습니다)

 

  • IIS 관리자 > (좌측)서버 컴퓨터 선택 > PHP Manager > Register new PHP version > 위에서 압축푼 폴더의 php-cgi.exe를 등록해 줍니다. (아래의 경고는 구성설정파일(php.ini)이 없어서 나타나는 경고입니다. 새 버전을 등록하면 사라집니다)

5-1.jpg

5-3. 구성파일(php.ini) 설정

  • 직접 ini파일을 메모장으로 수정하거나(아래의 빨간박스), Magafer all serttings에서 설정을 적용하거나(아래의 노란박스) 결과는 같습니다. 
  • 주로 첨부파일 크기를 늘리기 위해 구성파일을 수정합니다. 또한 PHP 에러로그파일 경로도 확인할 수 있습니다. 

5-2.jpg

5-4. 확장 모듈 설치

  • PHP Manager > Enable or disable an extension

5-3.jpg

 

  • XE, Rhymix설치를 위해 php_fileinfo.dll php_gd2.dll php_mysqli.dll 을 추가로 활성화 합니다. (Rhymix는 관련 PHP 확장모듈이 활성화 되어 있지 않으면 설치가 진행되지 않습니다.)

5-4.jpg

 

  • php_wincache.dll은 웹 플랫폼에서 cache로 검색하면 PHP 버전 별(5.5, 7.0, 7.1등등)로 구할 수 있습니다. 단, 웹 플랫폼으로 wincache 설치시에는 PHP도 다시 새로 설치하여 등록하므로 PHP manager에서 기존에 직접 설치한 버전으로 변경(Change PHP version)해줄 필요가 있습니다.(dll파일만 주면 되는데..) 이 후 C:\Program Files\PHP\v(버전)\ext 폴더에 있는 php_wincache.dll 파일만 5-2. 2)에서 압축푼 폴더의 ext폴더에 복사하고 활성화 합니다. (만일 PHP 버전에 맞는 php_wincache.dll파일이 이미 있으면 웹 플랫폼에서 설치하는 과정을 생략하고 ext폴더에 넣고 활성화(enable)만 하면 됩니다.) 

 

6. mysql

6-1. mysql 설치

크기가 큰 것은 전체 설치 파일이고, 작은 것은 웹설치 파일입니다. 아무것이나 실행해도 무방합니다.

다운로드 페이지의 로그인 버튼 하단에 "No thanks, just start my download."를 클릭하면 로그인 없이 다운 가능합니다.

 

  • 설치과정에서는 Authentication Method와 Accounts and Roles만 주의 깊게 확인하면 됩니다. 

 

  • Workbench와 Notifier는 쓸만한 프로그램이므로 같이 설치해 줍니다. 문서나 다른 Applications는 설치하지 않아도 됩니다. Setup type > Custom

6-1.jpg

6-2.jpg

 

  • 단독 mysql 서버이므로 standalone 선택

6-3.jpg

 

  • Config Type에 따라 mysql이 메모리 사용량을 결정해 줍니다. 메모리 사용량은 추후 재설정할 수 있으므로 여기에서는 중요한 것은 아닙니다.

6-4.jpg

 

  • mysql 8.0부터는 암호화 인증방법이 기본입니다. 그러나 XE나 Rhymix를 사용하기 위해서는 Mysql 5.x 호환 인증을 선택해야 합니다. 

6-5.jpg

 

  • DB user 추가 - DB에 root로 접근하는 것은 보안상 좋지 않겠죠. 신규ID를 생성하고(Add user) DB manager 정도로 권한을 부여하여 접속하는 것이 좋겠습니다.

6-6.jpg

 

6-2. WorkBench

  • 처음 Workbench 프로그램을 실행하면 Server OS에서 지원되지 않는다는 경고 메세지가 뜨는데, 실제 사용하는데는 아무런 지장이 없으므로 확인하고 넘어갑니다.
  • DB도 해킹시도가 빈번한 곳입니다. 제 경우에도 IIS 로그를 확인해 보면 phpmyadmin 폴더로 지속적으로 접근을 시도 합니다. (있지도 않는 폴더에서 무작위로 admin이 포함된 파일을 찾아 접근하려합니다) 사실 DB는 한번 설정해 놓으면 직접 접속할 일이 별로 없기도 하고, 쿼리는 workbench나 cli로 가능하므로 저는 1)phpmyadmin 프로그램은 이용하지 않고, 2)이러한 해킹시도는 url 재작성에서 패턴으로 차단하고 있습니다. 

 

  • 이제 DB에 접속합니다. 우리는 root계정은 이용하지 않을 예정이므로 +버튼을 눌러 기존에 추가한 DB user를 입력해 연결프로필을 생성해줍니다. DB접속에 매번 비밀번호 입력이 귀찮으면 "store in vault"로 비밀번호를 저장할 수 있습니다. 새로운 연결 프로필을 클릭하여 접속합니다.

6-7.jpg

6-8.jpg

 

  • DB user추가/권한설정, 에러로그 확인, 설정파일(my.ini) 수정은 (좌측)Administration 탭에서 할 수 있습니다.

6-9.jpg

 

6-3. 스키마(database) 생성

  • Workbench 에서 DB에 접속 > (좌측)Schemas 탭 > (마우스 우클릭 메뉴)Create Schema.. 
  • 또는 쿼리문으로 직접 생성해도 됩니다. (Query1 탭을 선택 > create database xe; > 번개모양의 실행아이콘 클릭)

6-10.jpg

 

6-4. mysql 백업 및 복원

  • Workbench 에서 DB에 접속 > (상단메뉴)Server > Data Export (백업) 에서

백업할 1)schema를 고르고, 2)저장될 파일을 지정한 뒤

6-12.jpg

3) Export Progress에서 Start Export하면 백업이 완료 됩니다.

6-13.jpg

 

  • Workbench 에서 DB에 접속 > (상단메뉴)Server > Data Import (복원) 에서도 마찬가지로
    • Import form Self-Contained File에서 백업된 파일을 고르고,
    • Default Target Schema 에서 복원될 schema를 선택한 뒤,
    • Import Pogerss(상단탭) 에서 Start Import를 눌러 복원할 수 있습니다.

 

6-5. (옵션) mysql 백업 일정을 작업스케줄러에 등록

 

1) 예전과 달리 mysqldump를 실행할 때 보안상 비밀번호를 입력할 수 없도록 되었습니다. 이에 따라 mysql_config_editor.exe 로 login-path를 작성한 뒤 이를 사용하여 mysqldump.exe를 실행하여야 합니다.

 

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql_config_editor.exe" set --login-path={ehii} --host=localhost --user=ehii --password

{로그인패스명}은 적당한 이름으로 작성하고 --user는 위에서 추가한 DB user를 입력합니다.

 

2)작업스케줄러 등록(schtasks.exe)은 관리자 권한으로 실행해야 하므로, 배치파일 역시 관리자 권한으로 실행되도록 하였습니다.

schtasks.exe /Create /RU ehii /SC daily /ST 01:00 /TN MySQL_BackUp /TR C:\Temp\mysql\mysql_backup.bat /RL HIGHEST

/UR 윈도우서버계정명과 /TR 실행할배치파일경로를 지정해 줍니다.

 

6-14.jpg

 

  • 이렇게 mysql_backup_set_once.bat을 수정한 후 처음 한 번만 실행하면 1)DB user의 암호를 물어 login-path를 생성하고 2)windows 계정의 암호를 물어 작업스케줄러에 등록하게 됩니다. 이 후에는 작업스케줄러가 정해진 시간에 자동으로 mysql_backup.bat파일을 실행합니다. 

6-16.jpg

  • mysql_backup.bat  파일 내용 설명 - 지정한 경로에 매일 백업하여 dump날짜.sql파일을 생성합니다. 또한 백업파일 각각은 60일이 경과되면 자동 삭제 되도록 하였으니 적절하게 증감수정하여 사용하시기 바랍니다.

6-15.jpg

6-18.jpg

  • 작업스케줄러에서 예약시간에 대해 더 상세한 설정을 할 수 있습니다. (서버관리자 > 도구 > 작업 스케줄러 > 작업 선택 후 상단의 트리거 탭)

6-17.jpg

 

6-6. Notifier

  • DB의 시작 및 중지, 상태확인, Workbench 실행은 작업표시줄의 mysql notifier을 이용하면 편리합니다. 저는 주로 DB가 죽었는지 상태 확인하는데 직관적으로 보기 편해서 쓰고 있습니다.

6-11.jpg

 

7. Rhymix, XE 설치

7-1. 파일 복사

설치파일을 root폴더(ex. C:\inetpub\wwwroot) 에 복사합니다.(root폴더는 IIS관리자에서 변경할 수 있습니다.) 만약 xe폴더 통째로 복사(C:\inetpub\wwwroot\xe와 같이)하면 http://localhost/xe/ 로 접속이 되므로, 아래와 같이 xe 폴더의 내용만 C:\inetpub\wwwroot에 복사하여 http://localhost/ 로 접속할 수 있습니다

 

7-1.jpg

 

7-2. 폴더 권한 수정

  • http://서버의 ip주소 또는 서버 도메인에 접속하여 설치를 시작하면 권한 관리에 관한 오류메세지가 뜹니다.

 (root)\files 폴더만 생성하고 (root)\files폴더의 권한만 수정하면 됩니다.
files 폴더 우클릭 > 속성 > 보안 탭 > 편집

7-2.jpg

files 폴더의 Users의 사용 권한을 모든 권한으로 설정

7-3.jpg

 

7-3. 짧은 주소 설정

IIS 관리자 > 웹 플렛폼에서 URL 재작성 설치

IIS 관리자에서 해당 사이트(ex. Default Web Site) 클릭 후  URL 재작성 > 인바운드 규칙 > 규칙 가져오기 > XE root폴더의 .htaccess파일 > 적용

7-4.jpg

 

7-4. 설치 환경 확인

7-5.jpg

  • curl~xml까지 어느 하나의 항목에서 ERROR가 발생하는 경우 관련 PHP extension이 활성화되어 있는지 확인합니다.
  • 화면상 짧은 주소를 사용할 수 없다고 나와있지만 url 재작성에서 .htaccess를 불러온 경우 기능사용이 가능합니다. 

 

7-5. DB 정보 입력

DB서버주소는 localhost 또는 127.0.0.1

DB이름은 생성한 schema 를 입력합니다

7-6.jpg

 

8. Gateway

8-1. 포트포워딩

  • 상단에 공유기가 있어 서버가 내부망에 포함되는 경우에는 공유기에서 서버로 포트를 연결해 주어야 외부에서 서버로 접속할 수 있습니다.
  • 반대로 생각하면 포트포워딩이 없으면 외부에서 서버로 접속할 수 없으니, 게이트웨이 자체로써도 하나의 해킹방어 수단이 된다고 볼 수 있습니다.

 

잘 알려진 포트 중에 이 글에서 다루는 포트는 다음과 같습니다. 아래의 포트들이 포워딩설정되어야 외부에서 서버로 접속할 수 있습니다. 

  • HTTP 80
  • HTTPS 443
  • FTP 21
  • RDP 3389

아래는 제가 사용하는 공유기의 포트포워딩 설정입니다. 원격데스크톱 연결 포트(RDP)는 보안상 비활성화 상태입니다.

8-1.jpg

 

8-2. DDNS

  • 서버의 공인IP가 유동IP인 경우(ISP-인터넷서비스제공회사가 공급하는 가정용 인터넷 서비스 대부분은 유동IP입니다.) IP임대기간이 만료하면 IP가 변경되는데, IP가 변경될 때마다 이를 알아내어 접속하기가 매우 번거롭습니다. 이러한 점을 보완하여 유동IP와 도메인을 매칭시켜 주는 것이 DDNS입니다. 홈서버에서는 매우 유용한 기능입니다. (사실 공유기에 인터넷 라인이 24시간 물려 있으면 IP변경은 거의 일어나지 않으나, 혹시 모를 일이지요)

 

  • DDNS는 공유기의 설정 페이지나 별도의 프로그램으로 사용할 수 있습니다.

아래는 공유기 DDNS 설정페이지 예시입니다. 여기서 제 서버IP가 어떻게 변하든지 관계없이 ehii.test.com으로 접속할 수 있겠지요.

8-2.jpg

 

8-3. 윈도우 방화벽

  • 공유기와는 관계없는 내용이지만 포트포워딩에 이어 포트와 IP를 차단하는데 유용하므로 함께 설명하겠습니다.

 

  • 방화벽에서는 포트별로 IP를 차단하거나 특정/모든 프로그램에 대해서 IP차단을 할 수 있습니다.

서버관리자 > 도구 > 고급 보안이 포함된 Windows Defender 방화벽 > 인바운드 규칙

  • 설정되지 않은 인바운드 연결은 원칙적으로 거절(deny,차단) 입니다.
  • 차단규칙은 허용규칙보다 우선 적용됩니다.

8-3.jpg

  • 제 경우 로그파일을 확인하여 권한 없는 접근을 계속 시도하는 IP를 추적한 뒤 이를 방화벽에서 모든 프로그램/모든 포트에서 대해 차단하고 있습니다.

규칙 종류 - 사용자 지정

프로토콜 및 포트 - 모두

프로그램 - 모든 프로그램

범위 - 원격 IP주소에 차단하고자 하는 IP추가

작업 - 연결 차단

8-4.jpg

8-5.jpg

 

9. 도메인

9-1. 연결

  • 도메인을 구입한 사이트의 설정페이지에서 도메인과 서버를 연결할 수 있습니다. 

도메인을 서버IP에 연결하려면 A record

도메인을 다른 도메인으로 연결하려면 C name으로 연결합니다.

  • 도메인 등록기관의 도메인포워딩 서비스의 경우 1)고정 포워딩은 프레임안에서 홈페이지가 작동하므로 반응형레이아웃에 가로 길이를 제대로 반영하지 못하는 문제가 있고, 2)유동 포워딩은 주소가 변경되는 문제가 발생합니다. C name으로 연결하면 이러한 문제는 발생하지 않습니다.

 

9-2. 유동IP

  • 도메인 규칙(RFC)에서는 루트도메인은 A record로만 가능하다고 되어있습니다만, 이를 위반한다고하여 기술적 문제가 발생하는 것은 아니기에 도메인 등록업체에 따라 루트도메인에도 C name을 설정할 수 있게 하는 곳도 있습니다. Cname은 1) 유동ip 상황에서 ddns와 함께 사용하여 도메인을 서버에 연결할 수 있는 점 2) 도메인 관리를 일원화할 수 있는 점에서 유용합니다.

 

  • 아래는 실제 제가 등록한 도메인 설정페이지인데 도메인명만 살짝 가렸습니다. 1)첫번째 등록기관은 루트 도메인에 c name 지정을 허용하고 있어 이를 DDNS주소에 연결하였습니다. 이용하고자 하는 서브도메인들은 모두 루트로메인을 가리키도록 지정했습니다. 제일 간편합니다. 2)두번째 등록기관은 루트 도메인에 A record만 가능하여 ip주소를 입력해둔 상태입니다. 만약 제 서버IP가 변경되면 서브도메인(www.테스트.com)으로는 접속이 되겠지만, 루트도메인(테스트.com)으로는 서버를 못찾겠지요. (다만, 공유기에 인터넷라인이 24시간 물려있어 IP주소가 쉽게 변하지 않으니 그냥 사용하고 있습니다.)

9-1.jpg

 

9-2.jpg

 

9-3. 바인딩

  • IIS관리자에서는 서버에 접속하는 포트, 호스트네임(도메인네임) 별로 사이트에 연결할 수 있습니다. 사이트가 여러개이거나 여러 도메인을 사용할 때 바인딩을 이용합니다. HTTPS 접속도 바인딩에서 설정합니다.
  • 처음 IIS에 설치된 Default Web Site의 바인딩을 살펴보면, 서버의 http 80포트에 접속하는 호스트 이름, 호스트 IP에 관계없이 모두 Default Web Site로 연결하도록 설정되어 있습니다. 서버의 다른 사이트의 바인딩 조건이 있으면 그것이 우선 적용되고 나머지 모든 접속은 이 사이트로 접속이 됩니다.

 

  1. 서버내 사이트가 여러개인 경우 - 기본 홈페이지 외에도 다른 웹사이트, FTP서버, webdav서버를 함께 운영하는 경우 바인딩에서 포트를 분기해주거나 사이트도메인별로 호스트네임을 지정해주어야 합니다.
    • 아래의 예시에서 여러 사이트 중 dev사이트에는 80포트와 호스트네임 dev.테스트.net dev.테스트.co.kr을 지정하였습니다. 위의 도메인설정(9-2)에서 이러한 주소들이 제 서버를 가르키도록 미리 설정하였기에, 만약 다른 사용자가 이 주소로 접속하면 도메인 네임서버를 거쳐 제 서버에서 접근한 후 바인딩에서 지정한데로 분기하여 dev사이트로 접속하게 됩니다.(80포트의 다른 호스트네임으로의 접속들은 Default web site로 가게 됩니다.) 8080포트는 호스트네임을 지정하지 않았기 때문에 ip:8080 이나 테스트.net:8080 테스트.co.kr:8080 dev.테스트.net:8080 dev.테스트.co.kr:8080 모두 도메인에 관계없이 모두 dev사이트로 연결됩니다.
    • 9-3.jpg

  2. 한 사이트가 여러 도메인을 사용하는 경우 - 위의 예시처럼 바인딩에서 각각 호스트네임을 추가합니다. 다만, 포트를 공유하는 사이트가 있는 것이 아니라면 포트만 지정하고 호스트네임은 공백으로 두면 도메인에 관계없이 사이트로 바인딩 되니 굳이 추가할 필요는 없습니다.  
  3. HTTPS - 443포트와 인증서를 설정합니다. 자세한 방법은 아래 인증서에서 설명하겠습니다.

 

10. 인증서

  • letsencrypt 인증서 발급, 설치, 자동갱신예약을 win-acme 프로그램을 통하여 진행합니다. IIS에서 인증서를 사용하고자 하는 사이트가 미리 생성되어 있어야 하며, 공유기 및 방화벽에서 80포트가 열려 있어야 합니다. ("사이트 생성없이"도 또는 "와일드카드 인증서"도 발급은 가능하지만 win-acme를 통한 설치 또는 자동갱신이 되지 않습니다.) 또한, 당연히 도메인의 소유자이어야 하며 도메인을 서버에 미리 연결해 두어야 합니다.

10-1. letsencrypt 인증서 발급

  • https://github.com/PKISharp/win-acme/releases 에 방문하여 다운로드합니다. (trimmed나 pluggable이나 기본 기능에는 차이없으므로 아무것이나 받아도 됩니다.)
  • C:\Program Files\win-acme\ 같이 적당한 폴더에 압축을 풀어 줍니다.(작업스케줄러에서 예약 실행될 경로이기도 하므로 관리하기 편한 폴더를 선택 합니다.)
  • wacs.exe 를 관리자 권한으로 실행합니다.(마우스 우클릭 > 관리자 권한으로 실행) 관리자 권한으로 실행하지 않으면 win-acme 프로그램상에서 인증서 설치 및 작업스케줄러등록이 되지 않습니다. 

 

  • 진행 과정 - 아래는 1)테스트.net 2)www.테스트.net 3)테스트.co.kr 4)www.테스트.co.kr 4개의 도메인(멀티도메인;SAN)에 대해 win-acme로 인증서 발급, 갱신예약등록을 진행해 보겠습니다. 모든 도메인은 서버로 연결 설정(A record 또는 C name)된 상태입니다.

M - full option 설정

10-1.jpg

Manual Input - 콤마(,)로 구분하여 도메인을 입력합니다.

10-2.jpg

작업 이름을 지정합니다. 설정 없이 enter를 누르면 win-acme프로그램이 지정한 기본값으로 저장됩니다.

10-3.jpg

도메인의 실제 소유자인지 판단하는 인증방식을 선택합니다. 여기서 진행하는 self-hosting방식은 1)등록하고자 하는 도메인 모두가 A record 또는 C name등으로 미리 서버에 연결 되어 있어야 하며, 2) 서버의 방화벽에서 80포트가 개방되고, 공유기에서도 80포트가 서버로 포트포워딩 되어 있어야 합니다. (인증에 실패하는경우 위 사항을 다시 확인해 보세요.)

10-4.jpg

RSA key선택

10-5.jpg

윈도우 인증서 저장소를 선택합니다. (이 저장소는 실행(window키+R) > mmc.exe > (상단메뉴)파일 > 스냅인 추가/제거 > (사용 가능한 스냅인)인증서 > 추가,확인 > (이 스냅인이 항상 관리할 대상) 컴퓨터 계정 > (이 스냅인이 관리할 컴퓨터) 로컬 컴퓨터 --- 콘솔1 [콘솔 루트] > 웹 호스팅 > 인증서 에서 확인할 수 있습니다.) (또한, IIS 관리자 > 서버 인증서 에서도 확인할 수 있습니다.)

10-6.jpg

IIS가 아닌 Apache서버를 사용하거나 메일서버등에서 파일형식의(.pem) 인증서가 필요한 경우, 추가로 파일 저장 경로를 설정하여 인증서를 저장할 수 있습니다. 필요치 않은 경우 이 작업은 "No additional storage steps required"를 선택하여 건너 뛸 수 있습니다.

10-7.jpg

우리는 IIS관리자에서 직접 바인딩에 추가할 예정이므로 "4. Do not run any (extra) installation steps"를 선택 합니다. 

10-8.jpg

알림을 받을 e-mail주소를 입력하고, 서비스조항에 관한 pdf파일읽기는 스킵(n), 약관동의(y)를 눌러 줍니다.

10-9.jpg

인증작업이 진행되고 각각 저장소에 인증서가 잘 저장되었다는 메세지가 지나갑니다.

윈도우의 특정계정에서만 작업스케줄러를 실행할 것인지 묻는데 no를 선택하여 모든 계정에서 실행하도록 해줍니다.  

10-10.jpg

 

10-2. IIS에 SSL 인증서 적용 

  • IIS 관리자 > 적용할 사이트 선택 > 바인딩에서 적용합니다.
  • 아래와 같이 등록을 진행한 4개의 도메인 + 호스트이름을 지정하지 않은 바인딩(기본 SSL 사이트로 지정을 위해)까지 총5개의 바인딩을 추가해 줍니다.
  • 호스트이름을 지정하는 경우 꼭 "서버 이름 표시 필요"에 체크하여야 합니다.
  • SSL 인증서는 win-acme을 통해 발급받은 인증서의 작업이름을 선택합니다.

10-11.jpg

 

10-3. 갱신예약 확인

  • win-acme에서 다음 갱신 예정일을 확인할 수 있습니다. 기본값은 인증서 설치일로부터 55일 후 갱신되도록 정해져있습니다. 이 값은 win-acme 폴더의 settings.json에서 변경할 수 있습니다. ([Scheduled Tack] > [RenewalDays])

10-13.jpg

 

  • 작업 스케줄러에서는 매일 지정된 시간에 win-acme 프로그램을 실행합니다. 이때 win-acme 프로그램은 55일이 경과되었는지 확인하여 인증서 갱신을 자동으로 진행합니다. (졔 경우에는 1주일에 한 번만 실행하도록 변경하였습니다.)

10-12.jpg

 

  • ?
    와.....미쳤다.
    너무 감사합니다. ㅠㅠㅠㅠㅠㅠㅠㅠㅠ
  • ?
    https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net48-web-installer
    php관리자 설치시
    framework를 설치하라하고 링크로 보냅니다
  • ? profile

    안녕하세요.

    제가 다시 윈도우서버를 설치해보고 이부분을 확인해보았는데 말씀하신 증상이 안나타나네요.  


    첨부한 파일로 PHP관리자를 설치 하셨나요? 첨부한 파일은 IIS10(윈도우서버2019 또는 윈도우10) 64bit용입니다. 설치된 OS가 맞는지 확인해보세요.

     

    서버관리자 > 관리 > 역할 및 기능 추가 에서

    .NET Framework 3.5 및 .NET Framework 4.7 설치되어 있는지 확인해보세요.

     

    1.jpg

  • ?
    왜 이런거죠?
  • profile

    php7.4용 wincache가 필요하신 분은

    https://sourceforge.net/projects/wincache/ 에서 버전별로 다운 받으실 수 있습니다.

     

    x64용 dll파일만 필요하신분들은 첨부한 파일을 다운받으세요~

    Atachment
    첨부
  • profile
    완전 사랑합니다~ ^^

서버에 요청 중입니다. 잠시만 기다려 주십시오...