카테고리 보관물: config

무료 SSL 보안 인증서 발급받기 (Free SSL Certificate)

Let’s Encrypt 에서 시작된 무료 SSL 인증서 발급 서비스는

비싼 년간 갱신 비용을 지불하면서 유료로 SSL 인증서를 발급받아 유지하지 않아도 되는 획기적인 방향을 제시했습니다.

물론 3개월마다 인증서를 갱신해야 하는 번거로움은 있습니다.

이런 불편함에도 불구하고 와일드카드 인증서와 멀티도메인 인증서까지 무료로 발급할 수 있는 매력은 소규모 사이트에 SSL 보안 인증서를 적용하는 부담을 상당히 줄여줍니다.

또, 3개월마다 갱신해야하는 인증서를 자동으로 갱신처리를 해주는 프로그램들도 있기 때문에 생각보다 갱신으로 인한 불편함은 적은 편입니다.

무료 SSL 인증서를 발급할 때 좋은 점은 웹서버에서 미리 인증서 요청을 생성하지 않아도 되는 것입니다.

무료 SSL 인증서를 발급해봅니다.

무료 SSL 인증서 발급은 2단계로 진행됩니다.

첫번째 단계는 인증서를 발급.

두번째 단계는 발급받은 인증서를 바로 웹서버에 적용 가능한 SSL 인증서 백업 파일로 변환.( *.pfx파일 ) 하는 것입니다.

발급받은 인증서를 인증서 백업파일로 변환하는 것은, 최초 인증서 요청을 생성하지 않았기 때문에 발급 받은 인증서 만으로로는 웹서버에 적용할 수 없기 때문에 인증서를 백업했다 복원하는 방식으로 인증서를 설치할 수 있도록 하기 위해서 입니다.


무료 SSL 인증서 발급_

인증서를 발급받기전 준비사항

무료 SSL 인증서를 발급받으려면 도메인 소유권 증명을 해야하기 때문에 다음 2가지중 한가지가 가능해야 합니다.

A. 도메인 인증 파일을 업로드하는 방식 – 무료 SSL 인증서를 발급받는 도메인이 설정된 웹호스팅, 또는 단독 서버가 있어야 합니다.

해당 웹사이트에 폴더 생성 및 파일 업로드가 가능해야 합니다. 또는 FTP서비스가 웹사이트로 설정된 서버(호스팅) 폴더와 연결되어 있어야 합니다.

“http://도메인” 으로 해당 사이트에 접근 가능해야 합니다.

실제 웹사이트는 구성되어있지 않아도 됩니다. 특정 폴더 위치에 소유자 인증 파일에 접근만 가능하면 됩니다.

B. DNS를 이용해 도메인 인증 키값을 TXT 필드에 적용.

DNS 호스팅을 하고 있는 경우(웹호스팅, 또는 외부 네임서버 서비스 이용) DNS 관리 기능으로 TXT 필드를 생성할 수 있어야 합니다.

자체 네임서버(DNS 서버)를 사용하는 경우 네임서버에 TXT 필드를 추가하면 됩니다.

본인 소유 도메인이 아니면 SSL 인증서는 발급받을 수 없습니다.

https://www.sslforfree.com/

사이트에 접속합니다.

영어 몰라도 발급받는데는 별 어려움은 없지만, 어설픈 한글사이트라도 원한다면 우측 상단에 구글 번역기가 붙어있으므로 구글 번역기를 이용해도 됩니다.

영문으로 설명합니다.

맨 위에는 도메인 입력난이 있습니다.

여기에 무료 SSL 인증서를 발급받을 도메인 명을 입력하게 됩니다.

보통은 서브도메인 없이 1차 도메인명(mydomain.com)만을 입력하면 됩니다.

설명에서는 2차 도메인을 위한 무료 SSL 인증서를 하나 발급받아봅니다.

그 아래에는 간단한 사용 설명과 지원사항 등일 자세하게 나와있습니다.

도메인을 발급받기 전에 알아두면 좋은 내용입니다.

Let’s Encrypt 무료 SSL 인증서는 상용 인증서 발급 서비스와 동일한 수준의 다양한 인증서 발급 기능을 제공합니다.

Let’s Encrypt 무료 SSL 인증서 발급 지원 사항

Let;s Encrypt 기반 무료 인증서 발급은 아래와 같은 다양한 인증서 형태의 SSL 인증서 발급을 지원합니다.

1. 와일드카드 SSL 인증서 지원

1차 도메인 앞에 서브도메인으로 “*” 를 붙여 와일드카드 SSL 인증서를 지원합니다.

*.mydomain.com

으로 인증서를 발급받으면 mydomain.com 하위 도메인 모두에 대해서 SSL 적용이 가능합니다.

2. www 도메인 인증서 자동 생성

1차 도메인명으로 SSL 보안 인증서를 생성하면 자동으로 www 하위 도메인에 대한 인증서까지 생성 해줍니다.

한번에 SSL 인증서가 2개가 발급됩니다.(1차 도메인용, www 서브 도메인용)

3. 서브도메인 별로 개별 SSL 인증서 생성

개별 서브 도메인 단위로 SSL 인증서를 1개씩 생성

4. 멀티도메인 인증서 생서 지원

도메인 입력난에 공백으로 띄워 2개 이상의 도메인을 입력하면 입력한 도메인들 모두에 대한 인증서를 일괄 생성해줍니다.

1차 도메인을 입력하면 자동으로 www가 붙은 하위도메인까지 입력해줍니다.

도메인 소유권 인증을 하는 3가지 방법(가능한 방법으로 택1)

무료 SSL 인증서를 발급할 도메인 명을 입력하고 “Create Free SSL Certificate” 버튼을 누릅니다.

소유권 인증 방법을 선택하는 화면이 나옵니다.

소유권 인증 방법은 총 3가지가 가능합니다.

1. “Automatic FTP Verification” – FTP 를 이용한 자동 처리 방식

2. “Manual Verification” – 소유권 인증 파일을 다운로드받아 직업 업로드

3. “Manual Verification” – DNS에 TXT 레코드로 소유권 인증 키를 추가

1과 2번은 웹호스팅 공간, 또는 서버에 특정 폴더가 만들어지고, 그 안에 소유권 인증 파일을 업로드하면 sslforfree.com 서버가 해당 “http://도메인/소유권인증파일” URL로 접근해 소유권이 있는지 확인합니다.

http로 웹사이트에 접근이 가능해야 합니다.

1번은 웹사이트와 경로를 공유하는 FTP 가 있어야만 사용 가능합니다.

FTP 정보 입력 양식에 FTP 접속 정보를 입력하면 sslforfree.com 서버에서 자동으로 해당 FTP로 로그인 해 폴더를 생성하고, 소유권 인증용 파일 업로드까지 해줍니다.

3번은 DNS에 TXT 레코드를 추가할 수 있어야 합니다.

네임서버 호스팅을 이용하는 경우에도 대부분 DNS 관리 기능은 제공하므로 이 기능을 이용하면 됩니다.

http로 접근가능한 웹사이트가 아직 준비되어 있지 않은 경우, 또는 인터넷으로 접근할 수 없는 인트라넷, 개발용 서버, 방화벽 뒤에 있어서 80포트 접근이 제한된 경우 DNS 인증 방식을 사용하면 됩니다.

1. DNS 인증 방법부터 해봅니다.

“api.apost.kr” 이라는 서브 도메인을 위한 인증을 한다고 할 경우

1. “Manual Verification (DNS)” 를 클릭.

2. DNS 인증하는 방법에 대한 안내가 나옵니다. “Manually Verify Domain” 버튼을 클릭.

3. “Manually Verify Domain” 버튼 밑으로 DNS  “TXT” 레코드로 등록할 내용이 표시됩니다.

4. 도메인 관리 기능, 또는 네임서버의 해당 도메인에 TXT 레코드를 표시되는 내용대로 추가합니다.

일부 네임서버 호스팅 관리 도구에서는 “_”(언더바)와 같은 특수 문자 입력이 제한된 경우가 있습니다.

이런 경우에는 이 방법을 사용할 수 없습니다.

5. “Verify _acme-challenge.내도메인” 링크를 클릭해 TXT 레코드가 적용되었는지 확인합니다.

TXT 레코드가 적용되지 않았을 경우 “No TXT Record Found. Make to set the TTL to 1 second or if you cannot set the TTL then you must wait the TTL (in seconds) so it updates before verifying the domain. Contact your DNS provider if unsure.” 메시지가 표시됩니다.

이 경우 TXT 레코드가 잘못 적용된 것이므로 문제점을 찾아 수정해야 합니다.

6. TXT 레코드가 적용되었으면 “Download SSL Certificate” 버튼을 누르면 인증서 압축파일이 다운로드 됩니다.

“I Have My Own CSR”은 체크하지 않습니다. 이 항목은 인증서 요청을 생성한 경우에만 사용합니다.

2. 웹사이트 특정 폴더에 소유권 인증용 파일을 직접 업로드합니다.

1, 소유권 인증 방식으로 “Manual Verification” 을 선택합니다.

2. “Manually Verify Domain” 버튼을 클릭

3. 수동 인증을 위한 안내가 표시됩니다.

4. “Download File #1″을 클릭해 소유권 인증 파일을 다운로드 합니다.

도메인 명으로 1차 도메인을 입력했으면 다운로드 링크가 2개가 표시되며, 두개 모두 다운로드 및 업로드를 해야 합니다.

5. 웹사이트 루트에

.well-known

ㄴ acme-challenge

구조대로 폴더를 생성합니다.

“well-known” 앞에 마침표가 있는점을 주의해야 합니다.

6. 다운로드한 파일을 “acme-challenge” 폴더 안에 저장(업로드)합니다.

7. 5번의 링크를 클릭해 업로드한 파일이 접근이 가능한지 확인합니다.

http 로 접근이 가능한 경우 인증 파일 안의 키 값이 표시됩니다.

1차 도메인을 신청하는 경우 확인 링크가 2개가 표시됩니다. 두개 모두 클릭해 인증 키가 보이는지 확인해야 합니다.

8. “Download SSL Certificate” 버튼을 눌러 인증서 파일을 생성 합니다.

9. 인증서 생성이 완료되고 인증서 발급 정보가 표시되면 “Download All SSL Certificate Files” 버튼을 클릭합니다.

인증서 압축파일이 다운로드 됩니다.

3. FTP 자동인증. 

웹사이트에 FTP가 연동되는 경우, 인증서 발급 전 소유권 인증 페이지에서 FTP 정보만 입력하면 자동으로 인증 처리가 완료됩니다.

접속 FTP 계정은 반드시 폴더 생성 및 읽기/쓰기 권한이 있어야 합니다.

1. “Automatic FTP Verification” 클릭

2. 밑에 표시되는 FTP 접속 정보 폼에 연결 정보 입력

3. “Download Free SSL Certificate” 클릭해 인증서를 생성합니다.

4. 인증서 생성이 완료되고 인증서 발급 정보가 표시되면 “Download All SSL Certificate Files” 버튼을 클릭합니다.

인증서 압축파일이 다운로드 됩니다.


SSL 인증서 백업 파일로 변환하기_

발급받은 인증서는 인증요청 없이 발급받은 인증서이기 때문에 웹서버에 설치하려면 인증서 백업 파일 형태로 변환해야 합니다.

https://www.sslshopper.com/ssl-converter.html

사이트에 접속합니다.

1. sslforfree.com 에서 다운로드 받은 무료 SSL 인증서 zip 파일의 압축을 풉니다.

인증서 파일은 “ca_buldle.crt”, “certificate.crt”, “private.ke” 3개로 구성됩니다.

2. 폼의 “Type To Convert To” 목록에서 “PFX/PKCS#12” 를 선택합니다.

업로드할 인증서 파일을 선택하는 항목이 1개에서 4개로 늘어납니다.

4개의 업로드 파일 선택 필드중 상단의 2개만 사용합니다.

3, 맨위 “Cerfificate Files to Convert” 필드의 “파일 선택” 을 클릭해 압축을 풀어놓은 인증서 파일들 중 “certificate.crt” 파일을 선택합니다.

두번째 “Private Key File” 필드의 “파일 선택” 을 클릭해 “private.key” 파일을 선택합니다.

4. “Type of Current Certificate” 는 “Standard PEM” 을 선택합니다.

5. “Convert Certificate” 버튼을 클릭합니다.

“certificate.pfx” 파일이 다운로드 됩니다.

오픈SSL 을 사용하는 경우 커멘드라인으로 직접 인증서 백업 파일로 변환이 가능합니다.

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

이제 다운로드 받은 SSL 인증서 백업파일( certificate.pfx )을 웹서버에서 등록하면 됩니다.

IIS 10 URL Rewrite를 사용 HTTP → HTTPS Redirect 설정

이 글은 Windows 10의 IIS에서 테스트 되었습니다. URL 재작성을 사용하기 위해서는 웹 플랫폼 인스톨러를 통해서 URL 재작성 기능을 설치해야 합니다.

웹 플랫폼 인스톨러가 설치되어 일지 않다면 Web Platform Installer 에서 다운로드하여 설치합니다.

웹 플랫폼 인스톨러에서 URL 재작성 기능을 검색하여 설치합니다.

IIS 관리자에서 웹사이트를 선택하고 가운데 화면에서 “URL 재작성”을 더블 클릭합니다.

오른쪽 화면에서 “규칙 추가…”를 클릭합니다.

인바운드 규칙의 “빈 규칙” 을 선택하고 “확인” 버튼을 누릅니다.(빈 규칙을 더블 클릭해도 됩니다.)

인바운드 규칙 편집 상단의 이름과 URL 검색에 다음과 같이 입력합니다.

* 이름 : Redirect to HTTPS

* URL 검색

– 요청한 URL(R) : 패턴과 일치

– 사용(S) : 정규식

– 패턴(T) : (.*)

– 대/소문자 무시(I) : 체크

조건 영역에서 “논리 그룹화(G)”는 “모두 일치” 를 선택하고 “추가…” 버튼을 누릅니다.

조건 추가 창에서 다음과 같이 입력합니다.

– 조건 입력(C): {HTTPS}

– 입력 문자열이 다음과 같은 경우 확인: 패턴과 일치

– 패턴(T): ^OFF$

– 대/소문자 무시 : 체크

작업 영역에서 다음과 같이 입력합니다.

– 작업 유형(Y): 리디렉션

– URL 리디릭션: https://{HTTP_HOST}/{R:1}

– 쿼리 문자열 추가(Q): 체크

– 리디렉션 유형: 기타 참조(303)

IIS관리자 오른쪽 화면에서 “적용”을 누르고 “규칙으로 돌아가기”를 누릅니다.

URL 재작성 룰이 추가된것을 확인할 수 있습니다.

이제 http:// 요청을 해보면 https:// 로 리다이렉트 되는 것을 확인할 수 있을 것입니다.

IIS + PHP 상세 에러 보기 설정

PHP 개발에서 에러가 날때, 해당 내용을 봐야 하는데,

기본적으로 IIS에서 PHP에러를 차단하고 에러번호(500번등)로만 나타난다.

운영서버에서 에러를 보지 못하게 하는 것은 좋은 설정이지만, 개발 당시에 에러를 보지 못한다는 것은 너무도 참혹한 설정이다.

해당 부분의 설정은 다음과 같이 설정하면 된다.

먼저, php.ini의 설정 위치를 찾기 위해서 <? phpinif(); ?>를 만들어서, 설정 파일 위치 정보를 찾는다.

1) PHP의 php.ini위치 값 확인

phpinfo 정보

2) C:\Program Files\PHP\v7.2\php.ini의 display_errors = On로 변경로 변경후 주석제거

3) Configurat Editor를 선택

IIS의 configurationEditor

4) 세션 항목 중에 httpErrors항목을 선택합니다.

httpError세션 선택

5) httpErrors세션의 errorMode를 Detailed로 변경

errorMode 변경

다음과 같이 설정하면, PHP의 에러 메시지를 확인 할 수 있습니다.

HTTPS SSL 인증서 상호 변환하기 apache(.crt ) ↔ IIS(.pfx) ↔ Tomcat(jks)

1. PKCS(.pfx)

– 윈도우 IIS 에서 사용되는 키와 인증서가 포함된 파일

2. apache 용 인증서

– .crt : 텍스트 형식의 인증서 파일

– .key : 텍스트 형식의 키파일

3. pfx -> crt

root]~]# openssl pkcs12 -in filename.pfx -nocerts -out filename.key # 키파일 추출
root]~]# openssl pkcs12 -in filename.pfx -nokeys -clcerts -out filename.crt # 인증서파일 추출
root]~]# openssl pkcs12 -in filename.pfx -nodes -nokeys -cacerts -passin pass:비밀번호 -out chain.crt # 체인인증서 추출

4. crt -> pfx

root]~]# openssl pkcs12 -inkey aaa.key -in qtrustssl.crt -certfile ChainCA.crt -export -out qtrustssl.pfx -name “qtrustssl”

5. pfx -> jks

keytool -importkeystore -srckeystore qtrustssl.pfx -srcstoretype pkcs12 -destkeystore qtrustssl.jks -deststoretype jks -alias “qtrustssl”

6. jks 정보 확인방법

keytool -list -keystore cert.jks -rfc
keytool -list -keystore cert.jks -v

APM연동_PHP설치(Windows 10)

http://windows.php.net/download/

에 들어가 Thread safe방식 zip파일 가장 최근 버전을 다운로드 받습니다.

압축을 풀고 폴더이름을 PHP7으로 변경한 후에 PHP7폴더를 C드라이브에 옮겨줍니다.

PHP7의 폴더 속 php.ini-production파일을 php.ini로 변경합니다. (-production)을 지워줍니다.

php.ini을 메모장으로 열고 extension_dir을 아래와 같이 수정해줍니다.

extension_dir = “c:/PHP7/ext”

설정이 끝나면 C:\Apache24\conf로 들어가 httpd.conf파일을 메모장으로 열어줍니다.

아래 내용을 그림처럼 집어넣습니다.

LoadModule php7_module “c:/PHP7/php7apache2_4.dll”
AddType application/x-httpd-php .php .html
AddHandler application/x-httpd-php .php .html
PHPIniDir “c:/PHP7”

cmd를 열고, httpd.exe -k restart를 입력해준후 엔터를 누릅니다.

만약 Cannot load어쩌구 into server 오류가 뜬다면

http://www.microsoft.com/ko-KR/download/details.aspx?id=30679

에 들어가 파일을 다운받고 설치한 후에 다시 시도해봅니다.

그래도 안되면 PHP7 폴더속 php7apache2_4.dll과 php7ts.dll을 C:\Windows\System32 에 복사해 넣고 다시 시도해봅니다.

그래도안되면 php7ts.dll을 C:\Apache24\bin에 복사해 넣고 다시 시도해봅니다.

만약 그래도 안된다면 Apache를 64비트가 아닌 32비트로 다시 다운로드해서 설치해보시기 바랍니다.

저는 이것저것 시도하다가 마지막에 Apache를 32비트로 다시 설치하고 성공했습니다.

이래도안되는분들은 댓글로 문의 남겨주시기 바랍니다.

어쨋든 이리저리해서 성공적으로 설치가 되신분들은 C:\Apache24\htdocs로 들어가 phpinfo라는 이름의 메모장을 새로만들고 <?php phpinfo(); ?>를 적고 저장하신후에 확장자를 txt에서 php로 바꾸어줍니다.

그후에

http://127.0.0.1/phpinfo.php/

로 접속합니다.

만약 위와같은 화면이 뜬다면 php설치에 성공한겁니다.

다음시간에는 mysql의 설치와 한글화를 해보도록 하겠습니다.

윈도우에서 Apache와 PHP 연동

1. PHP 내려받기

링크: https://secure.php.net/downloads.php

2017/03/12 기준 5.6.30버전과 7.1.2버전이 있는데 7.x가 실행시간 더 빠르대요.

Current Stable PHP 7.x에 있는 Windows downloads를 클릭합니다!

이 중 Thread Safe라고 되어있는 것 중 시스템 종류(32/64bit)에 맞는 Zip 파일을 다운로드 합니다.

다운로드 받은 파일은 원하는 경로에 압축을 풀어 놓고 나중에 경로 적기 쉽게 PHP로 폴더이름을 바꿔줍시다. 저는 “E:/Program Files/”에 압축 풀었습니다.

2. php.ini 수정하기

php.ini을 수정하면 curl, mysql 등 다양한 확장기능을 사용할 수 있습니다.

PHP 폴더 안에서 “php.ini-development”를 찾아서 “php.ini”으로 이름을 바꾸고 메모장으로 실행합니다.

먼저 확장파일이 들어있는 ext 폴더 경로를 알려줘야 합니다.

;extension_dir = “./”를 검색해서 주석처리(;)를 지우고 ./로 된 부분을 (PHP 경로)\ext로 바꿔줍니다.

예) extension_dir = “E:\Program Files\PHP\ext”

그다음 다음 항목들을 검색해서 앞에 주석처리(;)된 부분만 지워줍니다.

;extension=msql.dll -> extension=msql.dll

;extension=php_curl.dll -> extension=php_curl.dll

;extension=php_mysqli.dll -> extension=php_mysqli.dll

;extension=php_pdo_mysql.dll -> extension=php_pdo_mysql.dll

만약 위에서 PHP 5.x로 받으신 분은 ;extension=php_mysql.dll도 찾아서 주석처리를 지워줍니다. php7에서는 php_mysql.dll의 기능을 php_mysqli.dll이 대체하기 때문에 없어졌다고 하네요.

Apache 내려받기 & 설정

1. Apache 내려받기

링크: https://www.apachelounge.com/download/

이것도 자신의 시스템 종류(32/64bit)에 맞춰 받아서 압축파일 안에 “Apache24” 폴더만 C:/에 압축을 풀어줍니다. 원하는 경로에 풀어도 되지만 httpd.conf 파일 수정할 때 Apache24 폴더 경로 기본값이 C:/라서 번거러운 작업 몇 가지 줄어듭니다. 저는 D:/에 압축을 풀었습니다.

2. httpd.conf 설정

이제 Apache 서버의 포트설정, php 연동을 위한 설정을 해야합니다.

Apache24/conf 폴더 안에 있는 httpd.conf 파일을 메모장으로 열어서 다음 순서대로 찾아가면서 경로를 설정합니다.

ServerRoot “c:/Apache24”

DocumentRoot “c:/Apache24/htdocs

<Directory “c:/Apache24/htdocs”>

<Directory “c:/Apache24/cgi-bin”>

ScriptAlias /cgi-bin/ “c:/Apache24/cgi-bin/”

각 항목을 메모장에서 찾아서 아래 예시와 같이 자신의 경로에 맞게 변경해줍니다. 항목 중 DocumentRoot를 위와 같이 기본값으로 주면 c:/Apache24/htdocs 안에 있는 파일을 보여줄 수 있게 됩니다. 예를 들어 c:/Apache24/htdocs 안에 hello.html이라는 파일이 있으면 나중에 주소창에 localhost/hello.html으로 연결하여 hello.html 파일을 브라우저로 열 수 있습니다. 기본값으로 두거나 원하는 폴더 경로로 변경합니다.

d:/Apache24인 경우 예시

ServerRoot “d:/Apache24”

DocumentRoot “d:/Apache24/htdocs

<Directory “d:/Apache24/htdocs”>

<Directory “d:/Apache24/cgi-bin”>

ScriptAlias /cgi-bin/ “d:/Apache24/cgi-bin/”

다음 항목들을 찾아서 변경하여 포트번호를 설정합니다. 포트번호는 기본값 80으로 되어있는데 임의의 포트로 수정하려면 아래와 같이 변경할 수 있습니다. 저는 8008로 설정해봤습니다.

Listen 8008

ServerName localhost:8008

마지막으로 PHP 연동을 위해 맨 아래에 다음을 추가해줍니다.

PHPIniDir “E:/Program Files/PHP/php.ini”

LoadModule php7_module “E:/Program Files/PHP/php7apache2_4.dll”

AddType application/x-httpd-php .php .inc .phtml

PHPIniDir 은 앞에서 수정했던 php.ini의 위치를 적습니다.

LoadModule 은 PHP폴더 내의 php7apache2_4.dll을 확인하시고 경로/파일명을 씁니다. php5로 받으신 분은 7 부분을 5로 고치고 php5apache2_4.dll을 확인하고 씁니다.

3. PHP와 연동하기

PHP 폴더의 libeay32.dll, libssh2.dll, ssleay32.dll을 복사해서 .\Apache24\bin\ 에 덮어씌워 줍니다. 아파치에서 curl_init() 같은 함수를 undefine으로 처리하는 문제를 해결해줍니다.

4. Apache 설치 및 실행

cmd를 관리자 권한으로 실행시켜 다음과 같이 적습니다.

(Apache24 경로)\bin\httpd.exe -k install

예) D:\Apache24\bin\httpd.exe -k install

성공 시 아래와 같이 나옵니다.

여기서 안되는 경우, vc15 패키지 를 다운로드&설치 후 다시 해보세요.

만약 아래와 같은 화면이 뜬다면 httpd.conf 파일에서 설정한 포트번호가 다른 서버로 사용 중인 경우입니다. 이 경우, httpd.conf에서 Listen과 ServerName의 포트번호만 변경하고 다음으로 넘어가시면 됩니다.

여기까지 성공하셨으면 이제 제어판-큰 아이콘-관리 도구-서비스 (또는 시작-서비스 검색)에서 Apache2.4를 오른쪽 클릭해서 시작을 클릭합니다. 그리고 브라우저를 실행하여 주소창에 다음과 같이 적습니다.

localhost:(위에서 설정한 포트번호)/index.html

It works!

※ 부록

localhost 를 주소창에 입력했을 때 뜨는 It works!를 없애고 싶을 때…

1. 서버 루트 폴더에서 index.html을 지운다

2. httpd.conf를 메모장으로 실행한다

3. IfModule dir_module 를 검색해서 바로 밑줄의

DirectoryIndex index.html 을 주석처리한다

[Windows, Apache2.4] 날짜별로 로그찍는 방법.

{아파치가 설치된 경로}/httpd.conf 파일에서

log_config_module이 아래처럼 주석이 없는 것을 확인 후 (기본 설정이면 주석이 없다.)

LoadModule log_config_module modules/mod_log_config.so

<IfModule log_config_module> (안에서)

CustomLog “logs/access.log” common (이렇게 되어있는 것을)

CustomLog “|bin/rotatelogs.exe logs/%Y%m%d_access.log 86400” combined (이렇게 바꾼다.)

*. Windows 운영체제에선 반드시 rotatelogs 다음에 .exe 를 붙여주어야 한다.

MSSQL에서 MSSQL Linked Server 설정

*. 연결된 서버 설정 창 “일반” 텝에서 SQL Server Native Client 선택 후 데이터 원본에 IP,PORT 입력

  • 연결된 서버 설정 창 “보안” 텝에서 “다음 보안 컨텍스트를 사용하여 연결” 선택 후 ID/PW 입력

SELECT * FROM OPENQUERY(AKIS_HR, ‘SELECT * FROM [dbo].[Table name]’) WHERE COMPANY_CODE IS NOT NULL;

 

Apache Web Server 2.4 에 HTTPS 적용하기 (CentOS)

설정방법

  1. 의존패키지 설치하기
    sudo yum install openssl-devel
    
  2. Apache 모듈 포함하여 재설치
    CentOS 7 에서 Apache Web Server 2.4 설치하기 참고하여 진행

    sudo ./configure --prefix=[Apache 설치된 디렉토리] --with-apr=[Apache 설치된 디렉토리]/bin/apr-1-config --enable-ssl --with-ssl=/usr/bin/openssl
    sudo make
    sudo make install
    

    prefix를 다른 위치로 지정하여 설치 후 SSL 모듈만 가져와서 사용하는것이 더 안전합니다.

    1. Apache 설정 변경하기
      vi [Apache 설치된 디렉토리]/conf/httpd.conf
      

      httpd.conf 파일에 수정할 내용

      LoadModule socache_shmcb_module modules/mod_socache_shmcb.so //주석 해제
      LoadModule ssl_module modules/mod_ssl.so //추가
      LoadModule rewrite_module modules/mod_rewrite.so //추가 (HTTPS로 리다이렉트시 사용 필요하신 분만 사용하세요.)
      Include conf/extra/httpd-ssl.conf //주석 해제
      
    2. HTTP 접속시 HTTPS로 리다이렉트 하기 위해 httpd.conf파일 마지막에 추가
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{HTTPS} off
      RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [C]
      </IfModule>
      
  3. OpenSSL 인증서 생성하기
    GitLab에 HTTPS 보안 적용을 위한 OpenSSL 설정하기 참고하여 생성
  4. Apache SSL 관련 부분 설정 변경하기
    vi [Apache 설치된 디렉토리]/conf/extra/httpd-ssl.conf
    

    httpd-ssl.conf 파일에 수정할 내용

    JkMountCopy on //<VirtualHost _default_:443>아래에 추가
    DocumentRoot //주석처리
    SSLCertificateFile "[인증서 설치된 디렉토리]/[인증서 이름].crt"
    SSLCertificateKeyFile "[인증서 설치된 디렉토리]/[인증서 이름].key"
    
  5. Tomcat 설정 변경하기
    vi [Tomcat 설치된 디렉토리]/conf/server.xml
    

    server.xml에 변경할 내용

    SSLEngine=off” //기존 "off"를 “on”변경
    
  6. 방화벽 설정하기
    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload
    
  7. Apache, Tomcat 재시작

 Windows 7 Apache와 Tomcat 연동 – 로드 밸런싱

환경 설정

Tomcat 7

Apache 2.4.29

OS windows 7 Win64

 

리케이션을 여러대의 Tomcat으로 구동하는 방식입니다.

Apache 설치

https://www.apachelounge.com/download/

Apache 2.4.29 Win64 용 httpd를 다운받습니다.

이때 mod_jk 파일 mod_jk-1.2.42-win64-VC15.zip도 같이 받으셔야 합니다.

Apache 버전과 Mod_jk 버전이 일치하지 않은경우 

Apache 설치후 구동이 되지 않을수 있습니다.

꼭 호환이 되는 Apache ,Mod_jk 파일을 다운 받으셔야 합니다.

원하는 경로에 Apache 압축을 풀어줍니다.

mod_jk 역시 압축을 풀어줍니다.

mod_jk.so 파일을 

Apache24\moudle 경로에

복사 / 붙여넣기합니다.

시스템 속성 -> 환경변수 설정

Apache 폴더가 존재하는 경로를 입력해줍니다.

C:\Apache24\bin

환경설정 이후

CMD Dos모드로 들어가 

Apache 설치 : httpd -k install

Apache 버전확인 : httpd -v

명령어를 통해 확인합니다.

Apache 설정모드

Apache24\conf 경로 이동후

httpd.conf 파일을 편집합니다.

Editplus 또는 메모장 활용

ServerRoot 수정

Apache 설치경로

ServerName 수정

window -> 서비스 -> Apache24 구동 후 확인

구동이 도지 않으면 Apache24 및 mod_jk를 확인해야 합니다.

Tomcat 로드 밸런싱 설정

저는 Tomcat을 2개 사용할것 입니다.

설치 된 Tomcat 경로로 이동합니다.

Tomcat 설치 경로 이동 후

was1 / was2 라는 빈 폴더를 생성합니다.

Conf / logs / webapps / work 폴더를 복사합니다.

was1 / was2 를 따로 따로 구동하기 위해 필요한 폴더입니다.

기존에 있던 폴더를 복사 하시면 됩니다.

저는 그냥 모든 폴더/파일을 복사 붙여넣기 하였습니다.

물론 Server쪽 환경 설정할때는

Conf / logs / webapps / work 폴더만 붙여넣기 하였습니다.

was1\conf\

Server.xml파일을 편집합니다.

 

<?xml version=’1.0′ encoding=’utf-8′?>

<Server port=”8005″ shutdown=”SHUTDOWN”>

  <Listener className=”org.apache.catalina.startup.VersionLoggerListener” />

  <Listener className=”org.apache.catalina.core.AprLifecycleListener” SSLEngine=”on” />

  <Listener className=”org.apache.catalina.core.JasperListener” />

  <Listener className=”org.apache.catalina.core.JreMemoryLeakPreventionListener” />

  <Listener className=”org.apache.catalina.mbeans.GlobalResourcesLifecycleListener” />

  <Listener className=”org.apache.catalina.core.ThreadLocalLeakPreventionListener” />

  <GlobalNamingResources>

    <Resource name=”UserDatabase” auth=”Container” type=”org.apache.catalina.UserDatabase” description=”User database that can be updated and saved” factory=”org.apache.catalina.users.MemoryUserDatabaseFactory”

              pathname=”conf/tomcat-users.xml” />

  </GlobalNamingResources>

  <Service name=”Catalina”>

<Connector port=”8080″ protocol=”HTTP/1.1″ connectionTimeout=”20000″ redirectPort=”8443″/>

<Connector port=”7591″ maxHttpHeaderSize=”8192″ maxKeepAliveRequests=”-1″ maxThreads=”1000″ minSpareThreads=”500″ maxSpareThreads=”500″ enableLoopups=”false” redirectPort=”8443″ acceptCount=”500″

compression=”on” compressionMinSize=”2048″ noCompressionUserAgents=”gozilla.graviata” compressableMimeType=”text/html,text/xml,text/plain,text/javascript,text/css”

connectionTimeout=”600000″ disabledUploadTimeout=”true” Server=”” protocol=”AJP/1.3″  />

<Engine jvmRoute=”tomcat1″ name=”Catalina” defaultHost=”localhost”>

<Realm className=”org.apache.catalina.realm.LockOutRealm”>

<Realm className=”org.apache.catalina.realm.UserDatabaseRealm” resourceName=”UserDatabase”/>

</Realm>

<Host name=”localhost”  appBase=”C:\Users\User\Downloads\apache-tomcat-7.0.81-windows-x64\apache-tomcat-7.0.81\webapps” unpackWARs=”true” autoDeploy=”true”>

 <Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs” prefix=”was1″ suffix=”.txt”  pattern=”%h %l %u %t &quot;%r&quot; %s %b” />

<Context crossContext=”true” path=”” docBase=”/KorailBim” reloadable=”true”></Context>

</Host>

<Cluster className=”org.apache.catalina.ha.tcp.SimpleTcpCluster” channelSendOptions=”8″>

<Manager className=”org.apache.catalina.ha.session.DeltaManager” expireSessionsOnShutdown=”false” notifyListenersOnReplication=”true” />

<Channel className=”org.apache.catalina.tribes.group.GroupChannel”>

<Membership className=”org.apache.catalina.tribes.membership.McastService” address=”228.0.0.4″ port=”45564″ frequency=”500″ dropTime=”3000″ />

<Receiver className=”org.apache.catalina.tribes.transport.nio.NioReceiver” address=”auto” port=”4000″ autoBind=”100″ selectorTimeout=”5000″ maxThreads=”6″ />

<Sender className=”org.apache.catalina.tribes.transport.ReplicationTransmitter”>

<Transport className=”org.apache.catalina.tribes.transport.nio.PooledParallelSender” />

</Sender>

<Interceptor className=”org.apache.catalina.tribes.group.interceptors.TcpFailureDetector” />

<Interceptor className=”org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor” />

</Channel>

<Valve className=”org.apache.catalina.ha.tcp.ReplicationValve” filter=”” />

<Valve className=”org.apache.catalina.ha.session.JvmRouteBinderValve” />

<Deployer className=”org.apache.catalina.ha.deploy.FarmWarDeployer” tempDir=”/tmp/war-temp/” deployDir=”/tmp/war-deploy/” watchDir=”/tmp/war-listen/” watchEnabled=”false” />

<ClusterListener className=”org.apache.catalina.ha.session.ClusterSessionListener” />

</Cluster>

</Engine>

 </Service>

</Server>

—————————————————————————–

웹 어플리케이션이 구동될 Webapps\ROOT으로 이동합니다.

이 경로는 Tomcat -> Server.xml -> appBase 에 설정된 경로의 Root을 사용하면 됩니다.

Web.xml 편집모드로 들어가

<distributable/>

추가해줍니다.

Was2\conf

Server.xml

역시 위와 동일하게 처리해줍니다.

<?xml version=’1.0′ encoding=’utf-8′?>

<Server port=”8006″ shutdown=”SHUTDOWN”>

  <Listener className=”org.apache.catalina.startup.VersionLoggerListener” />

  <Listener className=”org.apache.catalina.core.AprLifecycleListener” SSLEngine=”on” />

  <Listener className=”org.apache.catalina.core.JasperListener” />

  <Listener className=”org.apache.catalina.core.JreMemoryLeakPreventionListener” />

  <Listener className=”org.apache.catalina.mbeans.GlobalResourcesLifecycleListener” />

  <Listener className=”org.apache.catalina.core.ThreadLocalLeakPreventionListener” />

  <GlobalNamingResources>

    <Resource name=”UserDatabase” auth=”Container” type=”org.apache.catalina.UserDatabase”  description=”User database that can be updated and saved” factory=”org.apache.catalina.users.MemoryUserDatabaseFactory”

              pathname=”conf/tomcat-users.xml” />

  </GlobalNamingResources>

  <Service name=”Catalina”>

        <Connector port=”8081″ protocol=”HTTP/1.1″ connectionTimeout=”20000″ redirectPort=”8443″/>

<Connector port=”8090″ maxHttpHeaderSize=”8192″ maxKeepAliveRequests=”-1″ maxThreads=”1000″ minSpareThreads=”500″ maxSpareThreads=”500″ enableLoopups=”false” redirectPort=”8443″ acceptCount=”500″

compression=”on” compressionMinSize=”2048″ noCompressionUserAgents=”gozilla.graviata” compressableMimeType=”text/html,text/xml,text/plain,text/javascript,text/css”

connectionTimeout=”600000″ disabledUploadTimeout=”true” Server=”” protocol=”AJP/1.3″  />

<Engine jvmRoute=”tomcat2″ name=”Catalina” defaultHost=”localhost”>

<Realm className=”org.apache.catalina.realm.LockOutRealm”>

<Realm className=”org.apache.catalina.realm.UserDatabaseRealm” resourceName=”UserDatabase”/>

</Realm>

<Host name=”localhost”  appBase=”C:\Users\User\Downloads\apache-tomcat-7.0.81-windows-x64\apache-tomcat-7.0.81\webapps” unpackWARs=”true” autoDeploy=”true”>

 <Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”

               prefix=”was2″ suffix=”.txt”

               pattern=”%h %l %u %t &quot;%r&quot; %s %b” />

<Context crossContext=”true” path=”” docBase=”/KorailBim” reloadable=”true”></Context>

</Host>

<Cluster className=”org.apache.catalina.ha.tcp.SimpleTcpCluster” channelSendOptions=”8″>

<Manager className=”org.apache.catalina.ha.session.DeltaManager” expireSessionsOnShutdown=”false” notifyListenersOnReplication=”true” />

<Channel className=”org.apache.catalina.tribes.group.GroupChannel”>

<Membership className=”org.apache.catalina.tribes.membership.McastService” address=”228.0.0.4″ port=”45564″ frequency=”500″ dropTime=”3000″ />

<Receiver className=”org.apache.catalina.tribes.transport.nio.NioReceiver” address=”auto” port=”4000″ autoBind=”100″ selectorTimeout=”5000″ maxThreads=”6″ />

<Sender className=”org.apache.catalina.tribes.transport.ReplicationTransmitter”>

<Transport className=”org.apache.catalina.tribes.transport.nio.PooledParallelSender” />

</Sender>

<Interceptor className=”org.apache.catalina.tribes.group.interceptors.TcpFailureDetector” />

<Interceptor className=”org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor” />

</Channel>

<Valve className=”org.apache.catalina.ha.tcp.ReplicationValve” filter=”” />

<Valve className=”org.apache.catalina.ha.session.JvmRouteBinderValve” />

<Deployer className=”org.apache.catalina.ha.deploy.FarmWarDeployer” tempDir=”/tmp/war-temp/” deployDir=”/tmp/war-deploy/” watchDir=”/tmp/war-listen/” watchEnabled=”false” />

<ClusterListener className=”org.apache.catalina.ha.session.ClusterSessionListener” />

</Cluster>

</Engine>

 </Service>

</Server>

———————————————-
Server Port / Connector Port / Cluster Port는
 
was1\Server.xml Port와 중복되지 않게 설정합니다.
 
appBase는 웹 어플리케이션의 위치이기 때문에 
Was1/Was2로 따로 설정해도 무방하지만
배포 처리를 각각해줘야 하기 때문에 
저는 메인 Tomcat 위치로 설정했습니다.
 

다시 Apache24\httpd.conf 파일을 편집하여

Directory경로를 수정해 줍니다.

Apache가 처리할 소스 경로로 Tomcat의 웹 어플리케이션이 존재하는 최상위 폴더를 지정했습니다.

DocumentRoot “C:\Users\User\Downloads\apache-tomcat-7.0.81-windows-x64\apache-tomcat-7.0.81\webapps”

<Directory “C:\Users\User\Downloads\apache-tomcat-7.0.81-windows-x64\apache-tomcat-7.0.81\webapps”>

    Require all granted <- 추가

Options Indexes FollowSymLinks

AllowOverride None

Require all granted

</Directory>

Apache24 와 Tomcat의 로드 밸런싱을 위한 설정을 해줘야합니다.

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkLogLevel info

JkLogStampFormat “[%a %b %d %H:%M:%S %Y] ”

JkRequestLogFormat “%w %V %T”

JkMount /  loadbalancer

JkMount /* loadbalancer

AddDefaultCharset UTF-8

conf/workers.properties

파일은 사용자가 직접 빈 파일을 생성해야 합니다.

빈 파일 생성후 편집모드로 작성합니다.

worker.list=loadbalancer, status
worker.tomcat1.port=7591
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=100
worker.tomcat2.port=8090
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=100
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1, tomcat2
worker.loadbalancer.method=B
# B(Busyness), R(Requests), T(Traffic)
worker.status.type=status
 
Tomcat\Server.xml에 정의한 
AJP/13  Connector의  jvmRoute의 명칭가 일치시켜 주면 됩니다.
 
was1/Server.xml -> jvmRoute=tomcat1
was1/Server.xml -> port=7591
 
was2/Server.xml -> jvmRoute=tomcat2
was2/Server.xml -> port=8090
이제 마지막으로 was1/was2 실행을 위한 Startup 작업을 해줘야 합니다.

기존에 있던

startup.bat / shutdown.bat

복사 / 붙여넣기를 통해 명칭을 변경합니다.

startup_was1.bat/shutdown_was1.bat

모두편집 모드로 들어가

set “CATALINA_HOMDE=C:\Users\User\Downloads\apache-tomcat-7.0.81-windows-x64\apache-tomcat-7.0.81”

set “CATALINA_BASE=C:\Users\User\Downloads\apache-tomcat-7.0.81-windows-x64\apache-tomcat-7.0.81\was1”

set “SERVER_NAME=was1”

set “JAVA_HOME=C:\Program Files\Java\jdk1.8.0_91”

추가해줍니다.

Apache 설치 및 Was1/was2 구동을 위한 경로

JDK 경로를 설정해줍니다.

————————————-

tartup_was2.bat/shutdown_was2.bat

모두편집 모드로 들어가

set “CATALINA_HOMDE=C:\Users\User\Downloads\apache-tomcat-7.0.81-windows-x64\apache-tomcat-7.0.81”

set “CATALINA_BASE=C:\Users\User\Downloads\apache-tomcat-7.0.81-windows-x64\apache-tomcat-7.0.81\was2”

set “SERVER_NAME=was2”

set “JAVA_HOME=C:\Program Files\Java\jdk1.8.0_91”

추가해줍니다.

Apache 설치 및 Was1/was2 구동을 위한 경로

JDK 경로를 설정해줍니다.

Window의 서비스 모드에서

설치된 Apache24를 구동합니다.

마지막으로 Tomcat을 구동하고

localhost:80 포틀 접속하시면 끝이납니다.

한쪽 서버 부하로 인하여 서버가 중단 될경우

다른 한쪽 서버로 웹 어플리케이션이 연동되어

서비스를 운영하는 모드입니다.

테스트 절차는 was1/was2 구동

localhost:80 접속

was로그를 통해 구분 후 접속된 Was 내림

몇초 지난 후

localhost:80 기능 그대로 사용

다른 서버에 붙어서 접속 허용

지금까지

Window Apache Tomcat 로드 밸런싱 연동 과정이었습니다.

출처: https://seungkangmo.tistory.com/173 [Let’s Get It]