아이티센 실습 과제 - 3Tier 구축하기

김재현·2022년 10월 3일
0

아이티센 프로젝트

목록 보기
25/30
post-custom-banner

3티어 아키텍쳐

  • 플랫폼을 3개의 계층으로 물리/논리적으로 나누어 운영하는 것.
  • 웹 서버의 경우, 1대의 서버에 전부 구축하지 않고 각각 웹, WAS, DB의 3개로 나누어 운영한다.
  • 각각 계층들은 서로 독립적이므로 서로간에 영향을 미치지 않기에 업무 분담 시 각 계층을 담당하도록 인원을 배치하거나, 서버의 부하를 줄여주거나 보안상의 이점을 얻을 수 있다.
  • 2개의 가용영역으로 나누어 하나의 인스턴스에서 작동이 중단되어도 다른 인스턴스에서 작동할 수 있게끔 해주면 더 좋다.

구축 순서(AWS)

AWS로 구축하는 3티어 아키텍쳐
1. VPC 생성
2. IGW 생성
3. 서브넷 생성 (Public 2대, private 6대)
4. NAT 게이트웨이 생성
5. 라우팅 테이블 생성(IGW, NAT, 서브넷 연결)
6. 보안그룹 생성
7. EC2 인스턴스 생성 (WEB, WAS)
8. ELB 생성
9. RDS 생성

1. VPC 생성

  • VPC(Virtual Private Cloud)는 AWS에서 가상 네트워크를 제공해주는 서비스이다.
  • 사용자 상황에 맞게 VPC를 생성하고, 서브넷, 라우팅 테이블, 게이트웨이 등 네트워크 자원들을 가상으로 생성, 사용할 수 있다.

2. IGW 생성

  • IGW(Internet GateWay)는 VPC가 외부 인터넷과 연결할 수 있게 해준다.
  • VPC - IGW - 외부 인터넷

3. 서브넷 형성

  • 서브넷은 하나의 네트워크가 분할되어 나눠진 작은 네트워크.
  • IP 주소를 효율적으로 사용하기 위해 적절한 단위로 네트워크를 분할하자.

4. NAT 게이트웨이 생성

  • NAT 게이트웨이는 프라이빗 서브넷에서 외부로 통신하기 위한 관문
  • 프라이빗 서브넷이 외부와 통신하기 위해 NAT 게이트웨이에 EIP를 할당받아 연결한다.

5. 라우팅 테이블 설정

  • 네트워크 통신이 이루어질 때, 데이터는 라우터를 거쳐간다.
    라우터는 해당 데이터들의 경로를 지정해주는 역할을 하고, 경로들을 라우팅 테이블에 저장시킨다.
  • 데이터들은 라우팅 테이블의 저장되어 있는 경로를 따라 원하는 목적치를 찾아가게 된다.
  • 5.1 퍼블릭 서브넷용 라우팅 테이블을 생성, 모든 트래픽은 인터넷 게이트를 통해 외부와 연결할 수 있게 한다.
  • 5.2 2개의 퍼블릭 서브넷과 연결, 퍼블릭 서브넷의 경로를 지정해줌.
  • 5.3 마찬가지로, 프라이빗 서브넷들의 모든 NAT 게이트웨이로 향하는 경로를 지정해줌.
  • 5.4 6개의 프라이빗 서브넷과 연결, 프라이빗 서브넷들의 경로 지정.

6. 보안그룹 생성

  • 인스턴스에 접근하거나, 인스턴스가 접근하려고 하는 패킷을 포트번호로 제어하기 위한 설정.
  • 인바운드, 아웃바운드 규칙을 통해 어느 포트를 허용/차단할지 정한다.
    • 인바운드 규칙 - 기본 규칙은 모든 트래픽에 대해 차단.
      허용해 줄 포트만 열어주는 Whitelist 방식
    • 아웃바운드 규칙 - 기본 규칙은 모든 트래픽에 대해서 허용.
      차단해 줄 포트만 닫아주는 BlackList 방식

7. EC2 인스턴스 생성

  • Private 서브넷에 WEB과 WAS를 설치해줄 EC2 인스턴스 생성.
    Private 서브넷에 위치한 EC2 인스턴스들은 외부에서 접근할 수 없으니 Bastion Host를 통해 ssh 접속을해서 외부접근이 가능하도록 만들어주자.
  • Bastion Host
    • Private 환경에 접근하기 위해 Proxy 역할을 해주는 서버.
      Private 서브넷에 위치한 EC2 인스턴스들은 외부에서 접근할 수 없기 때문에, 관리자는 Bastion Host를 통해 SSH 접속을 할 수 있다.
    • Bastion Host를 통해서만 인스턴스로 접근할 수 있기 때문에 보안성이 높아진다.
      Bastion Host의 로그만 관리하면 Private 서브넷에 접속하는 모든 기록을 관리할 수 있다.
      Bastion Host가 공격당하면 Private 네트워크가 모두 노출되므로, Bastion Host를 잘 관리해주자.

7.1 Bastion Host 생성

  • 만들어두었던 VPC 안에 Bastion Host 생성
    Bastion Host는 Public subnet에 위치시킨 후 Public IP를 할당해줘서, 외부에서 ssh를 통해 접근할 수 있게 하자.
  1. Public Subnet에 위치하고, Elastic IP를 할당해서 외부에서 ssh 접근을 통해 접속할 수 있도록 Bastion Host 생성.
  2. Bastion Host의 인바운드 규칙을 모든 트래픽에서 접근할 수 있도록 하자.
    (실제로 웹 서버를 관리할 때는 관리자 고유 IP만 접근할 수 있도록 해 보안을 강화할 수 있다.)
  3. 퍼블릭 IP로 접속한 Bastion Host에서 Private 서브넷으로 접속.

8. ELB 생성 (ALB)

  • 8.1 External ELB 생성 (ALB)
    • External ELB는 IGW로부터 들어온 트래픽들을 Web1, Web2로 분산해 줌.
      EX-ELB는 인터넷에 연결하고, HTTP 80번 포트를 이용해 연결 요청을 확인.
  • 8.2 각 가용영역의 Public 서브넷에 위치하도록 함.
  • 8.3 EX-ELB의 보안그룹은 HTTP 80번 포트에서 오는 모든 트래픽을 허용해 주도록 설정한 EX-ELB를 선택.
  • 8.4 ELB를 통해 들어온 트래픽들은 각각 web1, web2로 보내주도록 하자.
    ELB가 생성되었으면 타겟그룹에서 연결된 인스턴스들의 상태가 healthy인지 확인해주자.
  • 8.5 Internal ELB 생성 (ALB)
    • IN-ELB는 web을 통해 들어온 트래픽들을 was1, was2로 분산해서 보내주는 역할을 한다.
    • EX-ELB 생성할 때와는 다르게 internal로 체크
  • 8.6 IN-ELB는 WAS에 위치하도록 해주자
  • 8.7 IN-ELB는 web을 통과한 트래픽들만 허용해주자
  • 8.8 IN-ELB는 8080를 타고 다음 타겟을 찾아가도록 해주자.
  • 8.9 IN-ELB를 통해 들어온 트래픽은 각각 was1, was2로 보내주도록 하자.
    생성된 IN-ELB의 대상 인스턴스의 상태가 healthy인지 확인해주자.

실제로 구축해보기 (ncloud)

ncloud로 3tier 구축하기
ncloud로 3tier 구축하기2
왜 8.8.8.8 ?

1. VPC 만들기

  • VPC를 만들어보자.
    Service > Networking > VPC

  • 이름과 IP 주소범위를 입력해주자. 범위는 10.0.0.0/16으로 해준다.

2. Subnet 쪼개기

  • Subnet 이름 : 잘 구분할 수 있게 만들어준다.
  • VPC : 아까 만들어두었던 VPC 적용
  • IP 주소 범위 : 10.0.x.0/24로 설정해준다.
    public인 web은 10.0.0.0/24로 private인 was와 db는 10.0.1.0/24 | 10.0.2.0/24로 설정해주었다.
  • Network ACL : 디폴트로 한다.
  • IGW 전용여부 : public으로 사용할 web은 Y로, 나머지 둘은 N으로 설정해준다.

3. NAT Gateway와 Route Table 설정

  • private subnet에서 이뤄지는 yum 프로그램 설치 작업을 위해 NAT Gateway 생성 및 Route Table 설정을 한다.

  • VPC 설정만 주의해주자.
  • Route Table 같은 경우, public subnet을 만져줄 필요가 없다.
    private subnet만 신경써주자.

4. ACG 설정

  • Server > ACG 로 이동해 ACG를 설정해주자.

  • 실제 환경에서는 보안에 신경써야하기 때문에 Inbound/Outbound를 신경써서 설정해주어야 하지만, 실습해보는 것이기 때문에 0.0.0.0/0으로 통일하도록 한다.
  • Inbound의 경우 SSH 접속을 위한 22 포트와, Ping 테스트를 위한 ICMP를 설정한다.
  • Outbound에는 HTTPS를 위한 443포트와 HTTP를 위한 80번 포트를 추가해준다. 둘다 TCP.

5. 서버 생성

  • 각 서브넷에 서버를 할당해준다. 각각 Web 서버, WAS, DB가 자리할 서버.

6. 접속 확인

  • PuTTY를 이용해서 웹 서버에 접속해준다.
  • 다음 ip a를 입력하면 내 IP를 확인할 수 있다.

  • 서버들이 잘 연결되어 있는지 확인해보자.
    ping (비공인ip)를 통해 통신요청을 보낼 수 있다.

  • 두 서버, was용 서버와 db용 서버 모두 잘 연결되어 있는 것을 확인할 수 있다.
  • 다음은 private subnet을 사용하고 있는 각 서버에서 외부로 통신이 되고 있는지 확인해보자.
    ssh (관리자 이름)@(할당 IP)를 이용해 다른 서버로 건너갈 수 있다.

  • was 서버로 넘어왔다.

  • ip a명령어를 사용해서 ip를 확인해보고, ping명령어를 사용해서 외부와 연결되고 있는지 확인해보았다.
    앞서 NAT Gateway를 설정해놓았기 때문에 잘 통신하는 모습이다.
  • 이것으로 3-tier 구축은 완료되었다. 각 서버에 web-was-db를 다운로드해보자.

Web-WAS-DB 설치해보기

Web : nginx

CentOS 7 - NGINX 설치 방법
CentOS 7 - NGINX 설치 방법2
CentOS 7 - NGINX 설치 방법3
CentOS 7 - NGINX 설치 방법4

  • 먼저 web 서버 설치용 public 서버로 이동해준다.

  • nginx 서버를 설치하기 위해서는 다음과 같은 과정을 거쳐야한다고 한다.
  1. yum 외부 저장소 추가
  2. yum install
  3. 방화벽 포트 개방
  4. nginx 포트 설정
  5. nginx 데몬 실행
  6. 실행
    차례대로 해보자.

1. yum 외부 저장소 추가

  • yum 저장소에는 nginx가 없기 때문에 외부저장소를 추가해야한다.
    /etc/yum.repos.d 디렉토리에 nginx.repo 파일을 추가해준다.

  • 안에 넣어줄 내용은 다음과 같다.
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0 
enabled=1

OS 버전이 다르다면 수정하면 된다.

2. yum install

  • yum install -y nginx 명령어를 사용하여 nginx를 설치한다.

3. 방화벽 포트 개방

  • 이번 실습 환경에서는 방화벽을 아예 꺼놓고 실습하겠지만, 실제 환경에서는 보안을 위해 방화벽 설정을 해야한다.
firewall-cmd --permanent --zone=public --add-port=(사용포트)/tcp  → 사용할 포트 개방
firewall-cmd --reload  → 방화벽 다시 실행
firewall-cmd --list-ports  → 허용 포트 리스트 확인

4. nginx 포트 설정 및 환경설정

  • 역시 이번 실습 간에는 신경 쓸 필요 없는 항목이지만, 설정한 포트에 맞춰 listen의 포트를 변경해주어야 한다.
  • vi /etc/nginx/conf.d/default.conf

  • 다음과 같은 창이 나온다. 뭐가 뭔지 대충 알아보자.

  • listen 포트와 server_name 설정
    80이 아닌 다른 포트를 사용하거나 도메인을 설정하게 될 경우 이 항목들을 수정하면 된다.

  • 홈 디렉토리와 기본 문서 설정.
    홈 디렉토리 경로를 설정하고 기본 문서를 지정한다.

  • 에러 페이지 설정.
    404, 500 등의 error 페이지를 설정할 경우 아래 내용들을 수정하면 된다.

  • .htaccess 파일 접근 금지 설정
    .htaccess 파일에 대한 접근 금지를 설정할 경우 아래 내용을 주석 해제하면 된다.

5. nginx 데몬 실행

  • 설정이 끝났으면 nignx를 실행해보자.
systemctl start nginx 
systemctl enable nginx
systemctl status nginx

  • start는 시작, enable은 재부팅시에도 동작 유지, status로 작동 상태를 확인한다. 잘 동작하고 있다.

6. 실행확인

  • 발급 받은 공인 IP을 사용해서 nginx를 띄울 수 있다.

  • 이제 WAS로 넘어가보자.

WAS : JBoss

CentOS 7 - JBoss 설치
CentOS 7 - JBoss 설치2
CentOS 7 - JBoss 설치3

  • 먼저 WAS용으로 생성한 서버로 이동한다.

  • JBoss를 설치하기 위한 과정은 다음과 같다.
  1. Java Open JDK 설치
  2. 사용자 생성
  3. WildFly 설치
  4. 소유권 변경
  5. Systemd 구성
  6. WildFly 설치 테스트
    천천히 알아보자.
  1. 방화벽 조정
  2. WildFly 인증 구성
  3. WildFly 관리 콘솔에 액세스
  4. 번외 - 웹 인터페이스 접속하기.

1. Java Open JDK 설치

  • WildFly는 Java 버전 8 이상을 설치해야한다.
    CentOS 7 의 기본 Java 개발 및 런타임인 Java 플랫폼의 오픈소스 구현인 OpenJDK를 설치하자.
    # yum install java-1.8.0-openjdk-devel
  • 이후 실행하게 될 스프링의 빌드 버전이 java 11이니, 11으로 설치하는 것도 좋다.
    # yum install java-11-openjdk-devel
  • 두 버전이 이미 설치되어있다면 버전설정을 할 수도 있다.
# alternatives --config java

There are 2 programs which provide 'java'.

 

  Selection    Command

-----------------------------------------------

*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/bin/java)

   2           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.9.11-2.el7_9.x86_64/bin/java)
   
Enter to keep the current selection[+], or type selection number: 2

# java -version
openjdk version "11.0.12"

  • 중간에 y를 입력해줘야한다.

2. 사용자 생성

  • WildFly를 루트 사용자로 실행하는 것은 보안상 위험하다.
    home directory /opt/wildfly를 사용해 wildfly라는 새 시스템 사용자 및 그룹을 만들도록 하자.
groupadd -r wildfly
useradd -r -g wildfly -d /opt/wildfly -s /sbin/nologin wildfly
  • groupadd : 리눅스 시스템 내에 새 그룹을 추가하기 위한 명령어.
    여러 사용자들을 하나의 그룹으로 구분하기 위해 사용한다.
    groupadd -r ( ~~ )는 시스템용 그룹(GID 499 이하)을 생성하는 명령어이다.
    0~499 까지 할당되어 있지 않은 GID 중 가장 높은 번호를 할당해준다.
  • useradd : 신규 사용자를 추가하는 명령어.
    -g는 그룹을 지정할 때 사용. -d는 홈 디렉터리 지정. -s는 사용자 생성 시 사용자가 사용할 셸을 지정한다.

리눅스 명령어 groupadd
리눅스 명령어 useradd

3. WildFly 설치

wget https://download.jboss.org/wildfly/24.0.1.Final/wildfly-24.0.1.Final.tar.gz

  • 설치파일을 다운받은 후 압축을 풀어주자.
tar xvzf wildfly-24.0.1.Final.tar.gz    → 압축해제
mv wildfly-24.0.1.Final /opt            → wildfly-24.0.1.Final를 /opt 디렉토리로 이동
  • 그 다음에는 링크파일 생성
    ln -s /opt/wildfly-24.0.1.Final/ /opt/wildfly

4. 소유권 변경

  • WildFly는 WildFly 설치 디렉토리에 댛나 액세스 권한이 필요한 WildFly 사용자 아래에서 실행된다.
    디렉터리 소유권을 사용자 및 그룹 wildfly로 변경.
    chown -RH wildfly: /opt/wildfly

  • chown명령어는 Change와 Owner를 조합한 명령어로 파일 소유권과 그룹을 변경하는 명령어.
    chown (OPTION) (OWNER) (:GROUP) FILE 순으로 사용할 수 있다.
    -RH는 지정한 파일 하위까지 변경(R)과 심볼릭링크의 참조파일만 변경(H)이다.
    리눅스 명령어 chown

5. Systemd 구성

  • WildFly 패키지에는 WildFly를 서비스로 실행하는데 필요한 파일이 포함되어 있다.
    구성 파일을 저장할 디렉토리를 생성하자.
mkdir -p /etc/wildfly

// 구성파일 복사
cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/
  • wildfly.conf 파일을 사용하면 WildFly 모드와 바인드 주소를 지정할 수 있다.
    기본적으로 WildFly는 독립 실행형 모드에서 실행되며, 모든 인터페이스에서 수신대기한다고 한다. 필요에 따라 파일 편집이 가능하다.

vi /etc/wildfly/wildfly.conf

  • 디폴트
  • 다음은 WildFly launch.sh 스크립트를 /opt/wildfly/bin/디렉토리에 복사한다.
    cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/

  • bin 디렉토리의 *.sh 실행권한을 추가한다. (sh -c 옵션은 문자열에 대한 명령을 읽는다.)
    sh -c 'chmod +x /opt/wildfly/bin/*.sh'
  • 이름이 지정된 systemd 유닛파일을 /etc/systemd/ 디렉토리에 복사한다.

cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/

  • 시스템이 새 장치 파일이 생성되었음을 알린다.
    systemctl daemon-reload
  • WildFly 서비스를 시작하고 다음 부팅 시에도 자동으로 실행되게 설정한다.
    서비스 실행중인지도 확인하자.
systemctl start wildfly
systemctl enable wildfly
systemctl status wildfly

  • curl http://localhost:8080명령어를 통해 잘 설치되었다는 것은 확인할 수 있다.
  • 웹 서버와 연동해서 웹에 출력하는것은 조금 이따가..

DB : MySQL

MySQL 설치하기

  • DB 서버에 접속해주자.

  • MySQL 8.0 버전을 다운로드 받는 것이 목표이다.
    단계는
  1. MySQL 설치다운로드 링크 확인
  2. MySQL Repository 설치
  3. MySQL 설치
  4. MySQL 서버 시작 및 접속
  5. Root 계정 비밀번호 변경
    순으로 진행한다.

1. MySQL 설치다운로드 링크 확인

  • CentOS에서는 Yum을 사용가능하니, Yum을 사용하자.

  • CentOS7니까 7버전 선택.

  • No thanks, just start my download를 오른쪽 클릭해서 링크 주소를 복사해주자.

2. MySQL Repository 설치

  • PuTTY에서 다음 명령어를 실행해준다
yum install -y (아까 복사해둔 링크)
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

  • MySQL을 설치할 수 있는 레포지토리가 설치되었다.
    yum repolist 명령어로 방금 설치된 mysql 레포지토리 목록을 확인할 수 있다.

  • yum search mysql을 사용해서 설치 가능한 mysql 패키지 목록도 확인할 수 있다.

3. 진짜로 설치

  • yum install -y mysql-server

  • mysqld -V mysql -version으로 잘 설치되었는지 확인하자.

4. MySQL 서버 시작 및 접속

  • 서버를 시작해보자.
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld

  • 서버 설치과정에서 임시 비밀번호가 생성되며, 이 비밀번호로 접속이 가능하다.
    grep 'temporary password' /var/log/mysqld.log로 확인해보자.

  • 접속을 위해선 저 비밀번호가 필요하다.
    이제 접속해보자.
    mysql -u root -p

5. Root 계정 비밀번호 변경

  • database 조회를 좀 하려니까 오류가 생겨버린다.

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

  • 비밀번호 바꾸라는 말이다. root 유저의 비밀번호를 변경해주자.

  • ALTER USER 'root'@'localhost' IDENTIFIED BY '비밀번호';

  • 비밀번호를 바꾸면 잘 된다. 굿굿!
    root 비밀번호를 잘 저장해두도록 하자.

ncloud의 CDB for MySQL 사용해보기

  • DB 서버를 생성하자.

  • VPC는 앞에 만들어놓았던 user07로, Subnet도 user07의 DB용 서버에 연결해준다.
  • 서버 이름과 서비스 이름은 적당히 해준다.

  • 실제로 DB접속 정보와 DB를 구성하는 정보를 입력하는 페이지.
  • User_ID는 DB에 접속할때 사용하는 ID,
  • HOST(IP)는 DB에 접속 허용할 IP를 정하는 옵션이다. 여기서는 모든 IP를 허용하기 위해 '%' 를 입력했다.
    (좋은 방법은 아니다. 실제에서는 최소한의 권한을 주기위해 WAS IP대역을 주는 것을 권장하지만, 연습이니까..)
  • USER 암호는 접속 암호다. 적당히 만들고 반드시 기억해주자.
  • 기본 DB명은 최초에 생성할 DB명이다.

  • Master와 Standby Master으로 구성된 것을 볼 수 있는데, 마스터로 기존 운영하다, 장애 발생 시 자동으로 Standby Master로 교체된다고 한다.
    서비스 자체에서 이중화와 fail over 기능을 제공하는 셈.

Web-WAS-DB 도킹해보기

Web(Nginx)-WAS(JBoss) 도킹

  • 잘 도킹된 것을 확인할 수 있다.

WAS(JBoss)-DB(CDB for MySQL) 도킹

도킹 가이드

  • WAS 서버에 접속해서 MySQL을 설치하자.
# yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# yum -y install mysql-community-server
# mysqld --initialize-insecure --user=mysql
# systemctl start mysqld

  • 명령어 예시를 입력하여 DB 서버에 접속해주자.
# mysql -h ① Private 도메인명 -u ②user_id -p --port ③DB 접속 포트
# mysql -h db-16aac-kr1.vpc-cdb.gov-ntruss.com -u rlawogus73 -p --port 3306

  • WAS서버에서 DB서버에 접속한 후 테이블을 생성해봤다.

3-tier 테스트하기

Nginx 서버에서 웹 띄워보기

  • 준비 : git, node, npm, react 다운받기.

node.js 설치

node.js 설치

  • epel 저장소 확인
    yum repolist
  • 없을 경우 설치진행
    yum install epel-release

  • node.js 설치
    yum install -y nodejs

  • node.js 버전 확인
    node -v 혹은 node --version

npm 설치

  • npm 설치
    yum install -y npm

  • 버전 확인
    npm --version 혹은 npm -v

react 설치

리액트 설치
설치 오류 해결

  • yarn 설치
    npm install yarn

  • install을 했지만
    사진과 같은 에러가 계속 발생했다.
  • npm ERR! Tracker "idealTree" already exists은 이미 관련 파일이 존재하는 것이 원인인 에러라고 한다.
  • 패키지를 업데이트하고
    npm update -g
  • NPM 캐쉬 삭제 및 업데이트를 하는 것으로 최신버전으로 만들어준다.
npm uninstall -g create-react-app
npm i -g npm@latest 
npm cache clean -f 
npx create-react-app@latest my-app --use-npm

git에서 파일 내려받기

  • git에서 이전에 작성해놓은 프로그램을 다운받는다.
    git clone (git URL)

  • git 에서 내려받은 폴더

  • gc-coffee는 스프링, kdt-react-order-ui가 리액트다.

  • npm start로 리액트를 시작해준다.

  • 컴파일 오류가 발생한다.
    ERROR in ./src/App.js 7:0-42
    App.js 라는 파일에 문제가 있는 것 같다. 수정해서 실행해보자.

  • 리액트 컴파일 성공!
    이제 접속해보자. 공인IP:3000으로 창을 띄워보자.
  • 접속이 안된다. 당연한 일이다. 3000번 포트를 뚫어놓지 않았기 때문이다.
  • ACG 설정으로 가서 포트 설정을 해주자.

  • 공인IP:3000로 nginx 서버에서 잘 출력된다. 원래 bootstrap을 사용해서 조금 더 깔쌈한 모습으로 출력되는데, 이상하게 bootstrap이 있으면 컴파일 오류가 난다.
  • bootstrap 설치
    bootstrap을 설치하면 오류가 안날 것 같다.
  • 하지만 지금은 nginx에서 리액트를 직접 받아서 출력한 것이므로 nginx를 proxy로 사용해서 리액트를 출력해보도록 하자.

  • vi /etc/nginx/conf.d/default.conf을 조금 만져주자.
  • location을 바꾼다.
    proxy_pass를 localhost:3000으로 바꿔서 nginx에 리액트 프로그램을 얹어 실행할 수 있다.

  • 3000번 포트를 삭제해도 공인IP:80로 리액트를 띄울 수 있다.

WAS에서 서비스 띄워보기

  • 준비물 : maven, spring boot

Maven 설치

Maven 설치

  • yum install maven

mvn -version으로 설치 확인이 가능하다.

https://kabby91.tistory.com/8

post-custom-banner

0개의 댓글