ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] 게시판 프로젝트 배포하기
    AWS 2024. 3. 10. 19:26

     

     

    https://aws.amazon.com/ko/

     

    클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

    필요한 만큼 이용할 수 있는 것은 물론 필요에 따라 몇 분 만에 확장 또는 축소할 수 있습니다. 자세히 알아보세요.

    aws.amazon.com

    우선 AWS 콘솔에 로그인 해준다.

     

     

    EC2 인스턴스를 생성해준다.

    인스턴스를 만들면서 키페어를 만들어준다.

    생성한 키페어를 프로젝트 안에 넣어주고 Git push를 해준다.

    생성한 인스턴스의 보안그룹 port를 열기위해 인바운드 규칙을 추가해준다.

     


    terminal을 열어서 우분투에 만든 인스턴스로 접속해준다.

     

    자바설치 및 java home 설정

    sudo apt-get update
    sudo apt-get install openjdk-11-jdk

    위 두 명령어로 java를 설치해준다.

    echo $JAVA_HOME

    위명령어를 치면 아직 아무것도 안나오는게 정상이다.

    아직 환결설정을 해주지 않았으니.

    which java

    명령어를 치면 /usr/bin/java 라고 나오고

    readlink -f /usr/bin/java

    이 명령어로 본인의 경로를 확인하고 복사해놓는다.

    sudo nano /etc/profile

    위 명령어로 파일 편집기를 열어서 

    export JAVA_HOME=본인 확인한 경로
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

    파일 맨 밑에 이것을 넣어주고 control+x로 저장과 함게 편집기에서 나간다.

    echo $JAVA_HOME

    위 명령어로 JAVA_HOME 환경변수 설정이 잘되어있는지 확인해본다.

    편집기에 넣고 저장을 했어도 바로 나오지 않을 수 도 있다.

    그렇다면 exit 명령어로 우분투 탈출을하고 우분투 재접속을 해서 확인해보면, 환경변수가 아래와 같이 잘 설정되어있는 것을 확인 할 수 있다.

    MySQL 설치

    sudo apt update
    sudo apt install mysql-server

    위 두 명령어로 우분투에 mysql을 설치해준다.

    포트 열기

    sudo ufw allow mysql
    sudo ufw allow 8080
    sudo ufw allow 80
    sudo ufw allow 443

    인스턴스에 보안그룹으로 인바인드그룹 설정해주었던 포트들을 열어준다.

     

    MySQL 시작

    sudo systemctl start mysql

    위 명령어로 MySQL을 시작해서 데이터베이스와 테이블을 만들어준다.

    sudo systemctl enable mysql

    mysql을 접속할때마다 열리게 하는 명령어

    sudo mysql -u root

    root 계정으로 접속해준다.

    MySQL 비밀번호 변경 설정

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

    위 명령어로 비밀번호를 설정해주고 적용을 해준다.

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '새로운_비밀번호' WITH GRANT OPTION;
    FLUSH PRIVILEGES;

    새로운_비밀번호에 위 명령어로 설정해주었던 비밀번호를 넣어준다.

    root계정에 대한 권한을 부여하는 명령어이다.

    * 사실 root 계정은 권한 설정을 할 필요 없다.

    MySQL 데이터베이스 생성 및 테이블 생성

    CREATE DATABASE social;
    USE social;

    데이터 베이스를 만들고 사용한다.

    CREATE TABLE user (
        username VARCHAR(10),
        useremail varchar(25),
        oauthtype varchar(20),
        oauthtoken varchar(100)
    );
    
    CREATE TABLE Comments (
        comment_id INT PRIMARY KEY AUTO_INCREMENT,
        board_id INT NOT NULL,
        useremail VARCHAR(25) NOT NULL,
        comment_root INT NOT NULL,
        comment_regdate VARCHAR(20) NOT NULL,
        comment_content VARCHAR(1000) NOT NULL,
        comment_deldate VARCHAR(20),
        comment_delyn CHAR(1) DEFAULT 'N' NOT NULL,
        comment_moddate VARCHAR(20),
        comment_steps INT NOT NULL,
        comment_indent INT NOT NULL
    );
    
    create table board (
        board_id int primary key auto_increment,
        useremail VARCHAR(25) not null,
        board_regdate VARCHAR(20) not null,
        board_title varchar(30) not null,
        board_content varchar(1000) not null,
        board_moddate VARCHAR(20),
        board_deldate VARCHAR(20),
        board_delyn char(1) default 'N' not null,
        board_likes int default 0 not null,
        board_views int default 0 not null
    );
    
    create table likes(
       useremail varchar(25),
        board_id int,
        PRIMARY KEY (useremail, board_id)
    );

    DB안에 프로젝트에 사용할 4개의 테이블을 생성해준다.

    bind-address을 0.0.0.0으로 수정

    exit 명령어로 MySQL에서 나와서 다시 우분투로 넘어온다.

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

    위 명령어로 bind-address 를 0.0.0.0으로 수정해준다.

    control+x 로 저장하고 파일편집기에서 나간다.

    설정 변경 후 MySQL 재접속

    sudo systemctl stop mysql
    sudo systemctl start mysql

    위에서 설정을 변경했기 때문에 MySQL을 재접속 해준다.

    mysql -u root -p
    CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'user_password';

    새로운 계정과 함께 비밀번호를 설정해준다.

    GRANT ALL PRIVILEGES ON *.* TO 'seongeun'@'localhost' WITH GRANT OPTION;

    권한도 부여해준다.

    workbench 연결

     

    Workbench로 가서 + 버튼으로 Connection을 하나 추가한다.

    AWS 생성한 인스턴스에 퍼블릭 IPv4주소를 복사해서 workbench 생성하는 connection hostname에 넣어준다.

    username은 위에서 terminal에서 생성하고 권한까지 부여한 username을 넣어준다.

    password도 terminal에서 만들어준 password로 넣어준다.

    git 설치 및 git 설치 확인

    다시 terminal 우분투로 넘어와서 git을 설치해준다.

    sudo apt-get update
    sudo apt-get install git
    git --version

    git config --global user.name [이름]
    git config --global user.mail [메일 주소]
    git clone [url 주소]

    배포하려는 git의 프로젝트를 접속하기 위한 git 사용자명과 이메일을 명령어로 넣어준다음 git clolne을 한다.

    만약 위 명령어들이 되지 않는다면 git init을 한 후에 시도한다.

    ls로 git clone이 잘되어있는지 확인한다.

    잘 되었다.

    cd 로 프로젝트에 들어간다.

    tomcat 설치

    sudo apt update
    sudo apt install tomcat9
    sudo systemctl start tomcat9

    tomcat 설치와 실행 시작을 한다.

     

     

    Maven 설치를 위한 용량늘리기

    프로젝트 안으로 이동해서 cd target으로 target 안으로 이동한다.

    ls로 war파일명을 확인한다. (복사)

     

    sudo chmod 777 war파일명.war
    free
    sudo dd if=/dev/zero of=/swapfile bs=128M count=16
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    sudo swapon -s

    위 명령어들을 타이핑해준다.

    sudo nano /etc/fstab

    nano 편집기를 열어서

    /swapfile swap swap defaults 0 0

    위 내용을 넣어서 넣어준다. 그러면 용량 문제 해결완료.

     

    Maven 설치

    sudo apt install maven
    mvn package -Dmaven.test.skip=true -X
    sudo mvn clean package -DskipTests -X
    sudo chmod 777 war파일명.war
    sudo mv ./war파일명.war /var/lib/tomcat9/webapps/

    war파일명.war뒤에 스페이스바 띄어쓰기 중요

    cd /var/lib/tomcat9/webapps/

    cd로 wepappa로 이동

    sudo jar -xvf war파일명.war

    압축풀기

    sudo nano web.xml

    web.xml파일을 찾아서 nano 편집기로 web.xml 파일 편집하기

     <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>

    위 코드를 넣어주고 저장하고 나간다.

    sudo nano server.xml

    nano 편집기로 server.xml 파일 편집하기

     

    <Context docBase="war파일명" path="/" reloadable="false"/>

    위 코드를 넣어주고 저장하고 나온다.

    cd /usr/share/tomcat9/bin
    sudo service tomcat9 restart

    설정을 바꾸어 주었으니 tomcat 재실행

     

     

     

     

    ---정리 수정 추가중 

    'AWS' 카테고리의 다른 글

    [AWS] Code Pipeline  (0) 2024.02.15
    [AWS] Code Deploy 실습 2  (0) 2024.02.15
    [AWS] Code Deploy 실습 1  (0) 2024.02.15
    [AWS] Code Deploy  (0) 2024.02.15
    [AWS] Code Commit 실습  (0) 2024.02.15
Designed by Tistory.