반응형

1. 시험환경

    ˙ 우분투(ubuntu) 리눅스 v22.04

    ˙ gradle v7

 

2. 목적

    ˙ Gradle 설치를 위한 필수 프로그램으로 JDK(v7 이상)를 설치해야 한다.

    ˙ 우분투(ubuntu) 리눅스 환경에서 gradle v7을 설치하자.

 

3. 적용

    ① JAVA 프로그램이 설치되어 있지 않은 경우, "JAVA 버전 확인" 명령어 입력 시 설치 명령어를 확인할 수 있다.

        - JAVA 버전 확인 : $ java -v

 

    ② JRE가 설치되어 Gradle 설치를 위한 기본 준비가 되었음을 확인한다.


    gradle repository가 설정되지 않은 환경에서 ubuntu v.22가 기본적으로 제공하는 버전은 4이다.

        - 오류 개선 등의 이유로 version 7 이상 사용을 권장한다.

 

    ④ Ubuntu 리눅스에 PPA 저장소를 추가한다.

        - $ sudo apt -y install vim apt-transport-https dirmngr wget softwareproperties-common
        - $ sudo add-apt-repository ppa:cwchien/gradle

 

    ⑤ 패키지를 업데이트하고,  등록된 PPA에 의해서 Gradle을 설치한다.

        - $ sudo sudo apt-get update
        - sudo sudo apt -y install gradle

 

4. 결과

    ˙ Gradle ver.7 대역으로 설치된 것을 확인할 수 있다.

        - $ gradle -v

 

반응형
반응형

1. 시험환경

    ˙ 우분투(ubuntu)

    ˙ crontab

 

2. 목적

    ˙ 리눅스 부팅 또는 재부팅 후 특정 스크립트 파일을 자동실행 하는 방법을 알아보자.

    ˙ crontab 설치 및 설정 명령어를 알아보자.

 

3. 적용

    ① 우분투(ubuntu) 환경에서 cron을 설치한다.

        - 명령어 : $ sudo apt update -y

        - 명령어 :sudo apt install -y cron

 

    ② cron 서비스를 시작한다.

        - 명령어 :sudo service cron start

 

    ③ cron systemctl을 활성화한다.

        - 명령어 :sudo systemctl enable cron.service

 

    ④ cron systemctl 등록 및 서비스 상태를 확인한다.

        - 명령어 :sudo systemctl list-unit-files | grep cron

        - 명령어 :sudo service cron status

 

    ⑤ 시스템 기동 후 자동 실행할 스크립트 파일을 설정한다.

        - 명령어 :crontab -e

           @reboot  [/home/ubuntu/startup.sh]

 

    ⑥ cron 설정 정보를 확인한다.

        - 명령어 :crontab -l

 

4. 결과

    ˙ 시스템을 재부팅하여 설정한 스크립트가 자동 실행되는지 확인한다.

반응형
반응형

1. 시험환경

    ˙ react.js

    ˙ npm

 

2. 목적

    ˙ 사용자가 http로 웹 서비스 요청시 https로 redirection 하여 서비스할 수 있도록 설정한다.

 

3. 적용

    ① react-https-redirect 패키지를 설치한다.

        - 명령어 : npm install --save react-https-redirect

 

    ② src/index.js에서 HttpRedirect 컴포넌트를 추가하고 <App/>을 감싸준다.

 

4. 결과

    ˙ 서비스 도메인으로 http 요청시 https로 전환(redirection)하여 서비스 하는 것을 확인한다.

반응형
반응형

    ① react.js 프로젝트 기동 시 콘솔로그<F12>에서 WebSocket Connection failed 메시지가 나타난다.

1
2
WebSocket
connection to 'ws://[url]/ws' failed:
cs

 

    ② 프로젝트 최상위 폴더의 .env 파일에서 WDS_SOCKET_PORT=0 설정

        - 원인 : cra에서 기본 포트를 3000포트로 설정해서 ws와 충돌 발생

 

반응형
반응형

1. 시험환경

    ˙ 윈도우 커맨드

    ˙ 리눅스(ubuntu)

    ˙ AWS CodeCommit, IAM

 

2. 목적

    ˙ AWS CodeCommit을 사용하기 위한 사전 설정 절차를 알아보자.

    ˙ AWS CodeCommit에서 생성한 Repository에 코드를 업로드(push)하는 방법을 알아보자.

 

3. 적용

    ① Host PC에 Git을 설치한다.

        - Host PC가 윈도우(window)인 경우 : https://languagestory.tistory.com/40

 

[git] Git CLI 최신 버전 설치 (window)

1. 시험환경 - 윈도우 11 - git-scm 2. 목적 - 윈도우 환경에서 GIT 최신 버전을 설치한다. 3. 적용 ① GIT 사이트에 접속하여 설치 프로그램을 다운 받는다. - URL : httpgit-scm.com ② Windows용 설치 파일을 다

languagestory.tistory.com

 

        - Host PC가 리눅스(ubuntu)인 경우 : $ sudo apt-get install git

 

    ② Host PC에 AWS CLI(AWS Command Line Interface)를 설치한다.

        - https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html

 

최신 버전의 AWS CLI 설치 또는 업데이트 - AWS Command Line Interface

이전 버전에서 업데이트하는 경우 unzip 명령을 실행하면 기존 파일을 덮어쓸지 묻는 메시지가 표시됩니다. 스크립트 자동화와 같은 경우에 이러한 프롬프트를 건너뛰려면 unzip에 대한 -u 업데이

docs.aws.amazon.com

 

    ③ AWS CodeCommit 권한이 부여된 IAM 계정을 만들고, 보안 자격증명(CodeCommit ID/PW)을 생성한다.

 

    ④ AWS CodeCommit에 New Repository를 생성한다. (또는 기존 Repository 사용)

        - HTTPS, SSH 복사 버튼 클릭시 Repository의 URL 주소가 복사된다.

 

    ⑤ Git에서 클라이언트와 서버 간 전송되는 데이터를 암호화하기 위하여 HTTPS credential 설정한다.

        - Host PC가 윈도우(window)인 경우 : 큰 따옴표("")

1
2
git config --global credential.helper "!aws codecommit credential-helper $@"
git config --global credential.UseHttpPath true
cs

 

        - Host PC가 리눅스(ubuntu)인 경우 : 작은 따옴표('')

1
2
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
cs

 

    ⑥ 원격지 Repository를 Host PC의 프로젝트 폴더(.)에 복제(clone)한다.

        - 명령어 : git clone [git-repository-url] .

        -  git-repository-url : ④번 절차에서 HTTPS 복사

        - 원격 Repository 복제시 팝업창에 보안자격증명 ID/PW(③번 절차)를 입력한다.

 

    ⑦ Host PC의 프로젝트 폴더(.)에 소스코드를 생성 및 작업 한다.

 

    ⑧ Host PC의 프로젝트 폴더에 만들어진 코드를 원격지 Repository에 commit & push 한다.

        - git add *
        - git commit -m "message"
        - git push

 

4. 결과

    ˙ Host PC에서 생성한 프로젝트 코드가 AWS CodeCommit Repository에 업로드(push)된 것을 확인한다.

 

반응형
반응형

1. 시험환경

    ˙ AWS

    ˙ VPC, Subnet, NACL(Network Access Control List), Security Group, Routing, IGW, EC2

 

2. 목적

    ˙ AWS 콘솔에서 VPC, Subnet, NACL, 보안그룹 등을 이용하여 네트워크를 구성한다.

    ˙ Private Subnet에서 생성된 EC2에 접속하기 위한 AWS 네트워크 구성법을 알아보자. 

AWS 구성도

 

3. 적용

    ① VPC를 생성한다.

        - VPC 이름 : study-vpc

 

    ② VPC 안에서 서브넷(subnet) 2개를 생성한다.

        - 서브넷 이름 : study-public-subnet

        - 서브넷 이름 : study-private-subnet

 

    ③ 라우팅 테이블을 생성하고 명시적으로 서브넷에 연결한다.

        - 기본 라우팅 테이블 : study-private-routing

        - 라우팅 테이블 생성 : study-public-routing

 

    ④ Public Subnet에 인터넷 연결을 위한 인터넷 게이트웨이를 생성한다.

        - IGW : study-igw

 

    ⑤ NACL을 생성한다. (NACL은 stateless 성격을 갖으므로 Inbound/Outbound 모두 설정해야 한다.)

        - 기본 라우팅 테이블 : study-private-nacl

        - 라우팅 테이블 생성 : study-public-nael

        - 여기서는 모든 Inbound/Outbound를 허용하였다.

 

NACL 인바운드규칙 설정

 

    ⑥ 보안그룹(security group)을 설정한다.

        - ec2-public-sg : 모든 소스에 대하여 ssh 접속 포트 허용 설정

        - ec2-private-sg : 소스가 "ec2-public-sg"인 경우만 허용 설정 했음에 주의 (★중요)

보안그룹 생성

 

private 보안그룹의 인바운드는 public 보안그룹만 허용 설정

 

    ⑦ Public/Private 서브넷에서 각각 EC2를 생성한다.

Public Subnet 안에 있는 EC2는 외부 접속을 위해 퍼블릭 IP 할당

 

Private Subnet 안에 있는 EC2는 외부 접속 차단을 위해 프라이빗 IP만 할당

 

4. 결과

    ˙ Public 서브넷에 있는 EC2에 접속한 후 Private 서브넷에 있는 EC2를 접속한다.

 

반응형
반응형

1. 시험환경

    ˙ AWS

 

2. 목적

    ˙ AWS Lambda 서비스(함수)를 생성한다.

    ˙ AWS Lambda 함수를 트리거 하기위해 API Gateway를 생성한다.

    ˙ API Gateway에 등록한 URL에 의하여 AWS Lambda 서비스(함수)가 실행되는지 확인한다.

 

3. 적용

    ① AWS Lambda 함수를 생성한다.

 

    ② 람다함수의 코드를 생성하고 "Deploy" 버튼을 클릭한다.

        - Deploy 마다 Log Stream이 1개씩 생성되어 로그가 남겨진다.

 

    ③ AWS Lambda를 실행하기 위한 "트리거 추가" 버튼을 클릭한다.


    ④ 설정정보를 입력하고 "API 게이트웨이"를 생성한다.

 

    ⑤ AWS Lambda 함수에 API Gateway가 연동된 것을 확인한다.

 

    ⑥ API Gateway 기본 경로에 추가 경로 및 방식(ANY, GET, POST 등)을 구성할 수 있다.

 

    ⑦ API Gateway 기본경로에 AWS Lambda 서비스 연결을 설정한다.

 

    ⑧ API Gateway 세부정보에서 URL을 확인한다.

 

4. 결과

    ˙ 트리거 입력에 의하여 AWS Lambda 서비스가 호출되는지 확인한다.

        - URL : http://[API-Gateway-URL]/[기본경로]

 

반응형
반응형

1. 시험환경

    ˙ Springboot

    ˙ React.js

    ˙ build.gradle

 

2. 목적

    ˙ Springboot 프로젝트에서 React.js 프로젝트를 함께 배포한다.

 

3. 적용

    ① Springboot 프로젝트 안에서 React.js 프로젝트를 생성 및 연동하는 방법은 아래 내용을 참고한다.

        - 참고 : https://languagestory.tistory.com/234

 

Springboot 프로젝트에서 React.js 연동 설정

1. 시험환경 ˙ Springboot ˙ Gradle ˙ React.js ˙ axios 2. 목적 ˙ Spring Initializr를 이용하여 Springboot 프로젝트를 생성한다. ˙ React.js 프로젝트를 생성한다. ˙ Springboot와 React.js 연동을 위한 설정한다. ˙ Sprin

languagestory.tistory.com

 

    ② build.gradle에서 React.js 배포를 위한 설정 부분을 추가한다.

        - webDir 변수 : react.js 프로젝트를 생성한 경로

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
def webDir = "$projectDir/src/main/web"
 
sourceSets {
    main {
        resources {
            srcDirs = ["$projectDir/src/main/resources"]
        }
    }
}
 
processResources { dependsOn "copyReactBuildFiles" }
 
task installReact(type: Exec) {
    workingDir "$webDir"
    inputs.dir "$webDir"
    group = BasePlugin.BUILD_GROUP
    if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) {
        commandLine "npm.cmd""audit""fix"
        commandLine 'npm.cmd''install' }
    else {
        commandLine "npm""audit""fix" commandLine 'npm''install'
    }
}
 
task buildReact(type: Exec) {
    dependsOn "installReact"
    workingDir "$webDir"
    inputs.dir "$webDir"
    group = BasePlugin.BUILD_GROUP
    if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) {
        commandLine "npm.cmd""run-script""build"
    } else {
        commandLine "npm""run-script""build"
    }
}
 
task copyReactBuildFiles(type: Copy) {
    dependsOn "buildReact"
    from "$webDir/build"
    into "$projectDir/src/main/resources/static"
}
 
cs

 

    ③ 프로젝트 경로에서 빌드(build) 한다.

        - 빌드 명령어 : gradlew build

        - 빌드 결과 : [프로젝트홈]/build/libs

 

    ④ 빌드 파일(.jar)를 실행한다.

        - JAR 실행 명령어 : java -jar [빌드파일]

 

4. 결과

    ˙ Web에 접속하여 실행여부를 확인한다. (frontend 확인)

 

    ˙ 빌드파일을 실행한 콘솔로그를 확인한다. (backend 확인)

반응형

+ Recent posts