반응형

1. launch instance 로 ec2 생성

2. ubuntu 로 서버 이미지 생성 

3. security group 
처음 생성하는 경우 security group 생성, 이전에 만든 적 있으면 이전에 만든 security group 생성 

해당 security group 에서 inbound 편집을 추후 해줘야 합니다. 
ex ) 3306 port 추가 및 ssh 접속시 ip 허용 
anywhere 로 추가하면 어떤 ip 에서도 접속 가능 

4. key pair 생성

key 파일이 없으면 신규로 생성. 앞으로 해당 파일로 접속해야해서 분실하면 안됩니다. 


Ubuntu EC2 인스턴스에 MySQL 8.0을 설치

1. EC2 인스턴스에 접속

 

먼저 EC2 인스턴스에 SSH로 접속합니다. 로컬에서 다음 명령어를 사용하여 SSH 접속합니다:

ssh -i /path/to/your-key.pem ubuntu@your-ec2-public-ip

2. Ubuntu 패키지 업데이트

 

MySQL을 설치하기 전에, 패키지 목록을 업데이트합니다.

sudo apt update

 

3. MySQL 8.0 설치

 

MySQL 8.0은 Ubuntu의 기본 패키지 저장소에서 제공됩니다. 다음 명령어로 MySQL 8.0을 설치할 수 있습니다.

sudo apt install mysql-server -y

 

4. MySQL 서비스 시작

 

MySQL 서버가 설치되면, MySQL 서버를 시작합니다.

sudo systemctl start mysql

 

MySQL 서버가 부팅 시 자동으로 시작되도록 설정하려면 다음 명령어를 사용합니다.

sudo systemctl enable mysql

 

5. MySQL 기본 설정 및 보안

 

MySQL을 설치하면 보안 관련 기본 설정을 진행할 수 있습니다. 이를 위해 mysql_secure_installation 스크립트를 실행합니다.




sudo mysql_secure_installation

이 명령어는 다음과 같은 작업을 수행합니다:

 

루트 사용자 비밀번호 설정.

익명 사용자 삭제.

원격 루트 로그인 비활성화.

테스트 데이터베이스 삭제.

보안 설정 재로드.

6. MySQL 루트 사용자 비밀번호 설정

 

MySQL이 설치되면 루트 사용자의 비밀번호를 설정해야 합니다. 먼저 MySQL에 접속합니다.

sudo mysql

MySQL 프롬프트에서 다음 명령어를 사용하여 루트 사용자 비밀번호를 설정합니다.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourNewPassword';

이후 MySQL 프롬프트에서 빠져나갑니다.

EXIT;

7. MySQL 접속 테스트

 

설정한 비밀번호를 사용하여 MySQL에 접속할 수 있습니다.

mysql -u root -p

비밀번호를 입력한 후 MySQL 프롬프트로 접속할 수 있습니다.

 

8. 방화벽 및 보안 그룹 설정 (필요한 경우)

 

MySQL의 기본 포트인 3306을 외부에서 접근할 수 있도록 EC2 인스턴스의 보안 그룹에서 3306 포트를 허용해야 합니다.

 

1. AWS 콘솔에서 EC2 인스턴스의 보안 그룹으로 이동합니다.

2. **인바운드 규칙 (Inbound Rules)**에서 MySQL/Aurora 또는 TCP 포트 3306을 추가합니다.

Source는 허용할 IP 주소를 설정합니다 (예: 0.0.0.0/0은 모든 IP에서 접근 가능, 보안을 위해 특정 IP만 허용하는 것이 좋습니다).

 

9. MySQL 외부 접속 허용 (선택 사항)

 

기본적으로 MySQL은 외부 접속을 허용하지 않습니다. 외부에서 MySQL에 접속하려면 MySQL 설정 파일을 수정해야 합니다.

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

설정 파일에서 bind-address 항목을 찾은 후, 127.0.0.1을 EC2 인스턴스의 공인 IP로 변경하거나 모든 IP에서 접속 가능하게 하려면 0.0.0.0으로 변경합니다.

bind-address = 0.0.0.0

파일을 저장하고 MySQL 서버를 재시작합니다.

sudo systemctl restart mysql

 

 

 


java 설치

설치 확인

 

1. Ubuntu 패키지 목록 업데이트

 

먼저, 패키지 목록을 업데이트합니다. 최신 패키지를 설치할 수 있도록 항상 먼저 업데이트하는 것이 좋습니다.

sudo apt update

2. Java 17 설치

 

Java 17은 Ubuntu의 기본 패키지 저장소에서 설치할 수 있습니다.

sudo apt install openjdk-17-jdk -y

이 명령어는 OpenJDK 17 JDK(Java Development Kit)를 설치합니다.

 

3. Java 설치 확인

 

Java 17이 정상적으로 설치되었는지 확인하려면 다음 명령어를 사용합니다.

java -version

출력 결과는 다음과 유사하게 나타날 것입니다:

openjdk version "17.0.x" 
OpenJDK Runtime Environment (build 17.0.x+xx)
OpenJDK 64-Bit Server VM (build 17.0.x+xx, mixed mode)

 

 

 

반응형
반응형

1. AWS DMS 설정 준비

 

1. RDS 인스턴스 생성

이미 RDS 인스턴스가 생성되어 있다면 이 단계를 건너뛰세요.

RDS에서 MySQL 인스턴스를 생성합니다. 인스턴스 생성 과정에서 적절한 VPC, 서브넷, 보안 그룹 설정을 확인해야 합니다.

 

 

2. IAM 역할 생성

AWS DMS에 필요한 IAM 역할을 생성해야 합니다.

필요한 권한은 AmazonDMSVPCManagementRole, AmazonDMSCloudWatchLogsRole, AmazonDMSRedshiftS3Role입니다.

 

2. AWS DMS 구성

 

1. Replication Instance 생성

AWS Management Console에서 DMS 서비스로 이동합니다.

Replication Instances에서 새로운 레플리케이션 인스턴스를 생성합니다. -

Replication instances를 선택한 후 Create replication instance를 클릭합니다.

복제 인스턴스 세부 정보를 입력합니다:

인스턴스 식별자: dms-replication-instance

인스턴스 클래스: 요구 사항에 맞는 인스턴스 유형 선택

할당된 저장소: 요구 사항에 맞는 스토리지 크기 선택

VPC: EC2와 RDS가 있는 VPC 선택

EC2와 RDS가 있는 동일한 VPC에 레플리케이션 인스턴스를 배치하고, 퍼블릭 액세스 여부를 선택합니다.

 

2. Endpoint 생성

DMS 콘솔에서 Endpoints로 이동하여 두 개의 엔드포인트를 생성합니다.

 

Source Endpoint (EC2 MySQL)

Endpoint type: Source

Engine type: MySQL

Server name: EC2 인스턴스의 퍼블릭 IP 주소 또는 도메인

Port: MySQL 기본 포트 (3306)

Username: MySQL 사용자 이름

Password: MySQL 비밀번호

Database name: MySQL 데이터베이스 이름 (특정 데이터베이스만 마이그레이션하려면)

Target Endpoint (RDS MySQL)

Endpoint type: Target

Engine type: MySQL

Server name: RDS 인스턴스의 엔드포인트 (콘솔에서 확인 가능)

Port: MySQL 기본 포트 (3306)

Username: RDS MySQL 사용자 이름

Password: RDS MySQL 비밀번호

Database name: MySQL 데이터베이스 이름

 

3. Migration Task 생성

Database migration tasks에서 새 마이그레이션 태스크를 생성합니다.

Source와 Target Endpoint를 설정합니다.

Migration type을 Migrate existing data 또는 Migrate existing data and replicate ongoing changes로 선택합니다.

Migrate existing data: 기존 데이터만 마이그레이션합니다.

Migrate existing data and replicate ongoing changes: 기존 데이터 마이그레이션과 동시에 변경 사항을 실시간으로 복제합니다.

테이블 매핑 설정에서 모든 스키마와 테이블을 포함하도록 설정합니다 (% 사용).

태스크 설정에서 데이터 검증, LOB 모드 등의 옵션을 설정할 수 있습니다.

4. Migration Task 시작

태스크를 생성한 후 Start 버튼을 눌러 태스크를 실행합니다.

콘솔에서 태스크 진행 상태를 모니터링할 수 있습니다.

 



Table mappings 섹션에서 테이블 매핑을 설정

시스템 테이블을 제외하려면 다음과 같이 설정하시면 됩니다:

 

1. Schema:

mysql, information_schema, performance_schema, sys 등 시스템 데이터베이스를 제외하려면 각각의 스키마 이름을 Schema 필드에 입력합니다.

2. Source name:

각 스키마에 대해 시스템 테이블이 위치한 스키마 이름을 입력합니다. 예를 들어, mysql 스키마를 제외하려면 mysql을 입력합니다.

3. Source table name:

테이블 이름을 제외하려면, %를 사용하여 모든 테이블을 선택할 수 있습니다.

4. Action:

Exclude로 설정합니다.

 

db 데이터베이스만 가져오도록 DMS 테이블 매핑 규칙을 설정하려면, 다음과 같이 설정할 수 있습니다.

1. Schema 필드: db 입력

2. Source table name: % (모든 테이블을 의미)

3. Action: Include

 

위 설정으로 DMS가 db 데이터베이스의 모든 테이블을 포함하여 마이그레이션하도록 구성됩니다. 다른 데이터베이스는 이 설정으로 제외됩니다.

db 라는 네임스페이스의 db 만 가져옵니다. 

{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "include-db",
      "object-locator": {
        "schema-name": "db",
        "table-name": "%"
      },
      "rule-action": "include",
      "filters": []
    }
  ]
}

 

Mysql 타임존 수정 방법

1. MySQL 파라미터 그룹 수정

 

RDS의 MySQL 인스턴스에서 타임존을 변경하려면 먼저 파라미터 그룹에서 time_zone 파라미터를 수정해야 합니다.

 

1. 파라미터 그룹 생성 또는 수정:

AWS Management Console에 로그인한 후, RDS 콘솔로 이동합니다.

왼쪽 탐색 창에서 **“Parameter groups”**를 클릭합니다.

새로운 파라미터 그룹을 생성하거나 기존의 파라미터 그룹을 수정합니다.

파라미터 그룹에서 time_zone 파라미터를 찾습니다.

time_zone 파라미터 값을 원하는 타임존으로 설정합니다 (예: Asia/Seoul, UTC, Europe/London 등).

2. 파라미터 그룹 적용:

RDS 인스턴스에 해당 파라미터 그룹을 적용합니다.

파라미터 그룹을 적용한 후에는 RDS 인스턴스를 재부팅해야 새로운 타임존이 적용됩니다

 

2. RDS 인스턴스에 파라미터 그룹 적용

 

1. RDS 인스턴스 수정:

RDS 콘솔에서 타임존을 변경할 RDS 인스턴스를 선택한 후 **“Modify”**를 클릭합니다.

DB parameter group에서 새로 생성한 파라미터 그룹을 선택합니다.

인스턴스를 수정한 후, **“Apply immediately”**를 선택하여 변경 사항을 즉시 적용합니다.

2. 재부팅 필요:

파라미터 그룹이 적용된 후, RDS 인스턴스를 재부팅해야 변경된 타임존이 적용됩니다.

.

반응형
반응형

 

AWS CloudWatch Logs 에이전트를 설치하고 구성하는 방법은 다음 단계에 따라 진행할 수 있습니다. 이 과정에서는 EC2 인스턴스에서 로그를 수집하고 CloudWatch Logs로 전송하는 방법을 설명합니다.

 

1. AWS CloudWatch Logs 에이전트 설치

 

단계 1: 에이전트 설치

 

1. EC2 인스턴스에 SSH로 접속합니다.

2. 다음 명령어를 실행하여 CloudWatch Logs 에이전트를 다운로드하고 설치합니다.

Amazon Linux 및 Amazon Linux 2:

wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
sudo rpm -U ./amazon-cloudwatch-agent.rpm

Ubuntu:

wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb

 

단계 2: CloudWatch Agent 구성

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

구성 마법사를 완료한 후, 생성된 구성 파일을 /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json에 저장합니다.

 

 

 

sudo vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

{
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/my-app/output.log",
                        "log_group_name": "/my-app/output",
                        "log_stream_name": "{instance_id}-output"
                    },
                    {
                        "file_path": "/var/log/my-app/error.log",
                        "log_group_name": "/my-app/error",
                        "log_stream_name": "{instance_id}-error"
                    }
                ]
            }
        }
    }
}

여기서

file_path 는 클라우드와치에 보내고 싶은 서버 로컬 파일 경로를 적어줍니다.

instance_id 는 EC2 대시보드에 id 가 적혀있습니다.

 

또 log_group_name 이라는 클라우드 와치 내 logs 그룹을 추가해줘야 합니다.

터미널에서 아래 코드를 실행해 줘야 하는데 아마 권한때문에 안될겁니다. IAM 을 계정을 추가하고 서버 로컬에서 로그인 해줘야 합니다.

aws logs create-log-group --log-group-name /my-app/output --region ap-northeast-2
aws logs create-log-group --log-group-name /my-app/error --region ap-northeast-2

 

 

IAM 콘솔 

IAM 권한 확인 및 설정

 

IAM 사용자 또는 역할에 필요한 권한이 있는지 확인합니다. IAM 콘솔에서 다음 정책을 추가하십시오.

1. AWS Management Console에 로그인합니다.

2. 상단 메뉴에서 **“Services”**를 클릭하고, **“IAM”**을 선택합니다.

3. 왼쪽 메뉴에서 **“Users”**를 클릭합니다.

4. ablelearn 사용자를 클릭합니다.

5. “Add permissions” 버튼을 클릭합니다.

6. **“Attach policies directly”**를 선택합니다.

7. 검색창에 CloudWatchLogsFullAccess를 입력하고, 해당 정책을 선택합니다.

8. **“Next: Review”**를 클릭한 후 **“Add permissions”**를 클릭합니다.


또한 user 에 role 을 부여하고 EC2 인스턴스에 역할을 부여해 주어야 합니다. 

1. AWS Management Console에 로그인합니다.

2. IAM 콘솔로 이동합니다.

3. 왼쪽 메뉴에서 Roles를 선택합니다.

4. Create role을 클릭합니다.

5. AWS 서비스를 선택하고, EC2를 선택한 후 Next: Permissions를 클릭합니다.

6. CloudWatchLogsFullAccess 정책을 선택하고 Next: Tags를 클릭합니다.

7. Next: Review를 클릭합니다.

8. 역할 이름을 입력하고 Create role을 클릭합니다.

 

 

 

EC2 인스턴스에 IAM 역할 부여

 

1. EC2 콘솔로 이동합니다.

2. 대상 인스턴스를 선택하고 Actions -> Security -> Modify IAM role을 클릭합니다.

3. 방금 생성한 IAM 역할을 선택하고 Update IAM role을 클릭합니다.

 

EC2 인스턴스에 IAM 역할 부여

 

1. EC2 콘솔로 이동합니다.

2. 대상 인스턴스를 선택하고 Actions -> Security -> Modify IAM role을 클릭합니다.

3. 방금 생성한 IAM 역할을 선택하고 Update IAM role을 클릭합니다.

 

 

AWS CLI 설정 (Optional)

 

로컬에서 AWS CLI를 통해 자격 증명을 설정할 수 있습니다.

aws configure
AWS Access Key ID [None]: YOUR_ACCESS_KEY_ID
AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY
Default region name [None]: ap-northeast-2
Default output format [None]: json

여기서 Access Id 와 key 는 IAM user 계정 생성시 발급 됩니다.

 

user 및 role 이 정상적으로 생성했다면 

 

아래 코드를 실행합니다. 

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s

파일 실행 하면 

sudo vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json 
파일은 없어지므로 다시 재실행할때 다시 json 파일을 생성해주면 됩니다. 

 

에이전트가 오류가 있는지 디버깅을 하기위해서는 아래와 같이 로그를 확인할 수 있습니다.

sudo tail -f /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log

 

systemctl 에서 에이전트가 러닝인지 종료인지 알기 위해서는 아래 명령어로 확인 가능합니다.

sudo systemctl status amazon-cloudwatch-agent

 

보통 대부분의 이슈는 user 및 role 권한 설정이슈입니다. 


정상적으로 동작한다면

각 그룹에서 로그가 적재된걸 확인할 수 있습니다. 
서버 로컬에서 log group 을 생성을 하고 위 대시보드에서 확인바랍니다.

 

 

요약

 

amazon-cloudwatch-agent.json 파일을 편집하여 EC2 모드를 설정합니다.

구성 파일을 저장하고 CloudWatch Agent를 다시 시작합니다.

로그 그룹이 존재하는지 확인하고, 필요 시 생성합니다.

IAM 사용자 또는 역할에 필요한 권한을 확인합니다.

CloudWatch Agent 로그 파일을 확인하여 추가적인 디버깅 정보를 얻습니다.

CloudWatch 콘솔에서 로그 그룹을 확인합니다.

 
 
 


이전포스팅
https://juntcom.tistory.com/252

 

CloudWatch Logs 에이전트 설치 - Ec2 인스턴스

AWS CloudWatch Logs 에이전트를 설치하고 구성하는 방법은 다음 단계에 따라 진행할 수 있습니다. 이 과정에서는 EC2 인스턴스에서 로그를 수집하고 CloudWatch Logs로 전송하는 방법을 설명합니다. 1. AWS

juntcom.tistory.com

 

반응형
반응형

 

AWS CloudWatch는 보고서 작성 기능을 포함한 다양한 모니터링 및 관리 기능을 제공합니다. 구체적으로는 CloudWatch Logs Insights와 CloudWatch Dashboards를 사용하여 데이터를 시각화하고 보고서를 작성할 수 있습니다.


클라우드와치 구성 종류는 크게 두가지로 나눌 수 있습니다.

1. CloudWatch Logs Insights

CloudWatch Logs Insights는 로그 데이터를 쿼리하고 분석할 수 있는 강력한 도구입니다. 이를 통해 특정 기간 동안의 로그 데이터를 기반으로 다양한 보고서를 생성할 수 있습니다.

 

로그 쿼리 작성: SQL과 유사한 쿼리 언어를 사용하여 로그 데이터를 분석할 수 있습니다.

쿼리 결과 시각화: 쿼리 결과를 그래프로 시각화할 수 있으며, 이를 기반으로 대시보드를 구성할 수 있습니다.

저장 및 공유: 쿼리 결과를 저장하고 다른 사용자와 공유할 수 있습니다.

 

2. CloudWatch Dashboards

CloudWatch Dashboards를 사용하면 여러 지표와 로그 데이터를 한 곳에서 시각화하여 보고서를 생성할 수 있습니다.

 

대시보드 생성: 다양한 위젯을 사용하여 사용자 정의 대시보드를 만들 수 있습니다.

실시간 모니터링: 실시간으로 데이터를 시각화하여 시스템 상태를 모니터링할 수 있습니다.

공유 및 액세스 제어: 대시보드를 공유하고 액세스 권한을 설정할 수 있습니다.

 

 

CloudWatch 대시보드 생성

 

1. AWS Management Console에 로그인합니다.

2. CloudWatch 콘솔로 이동합니다.

3. 왼쪽 메뉴에서 **“Dashboards”**를 선택하고 **“Create dashboard”**를 클릭합니다.

4. 대시보드 이름을 입력하고 **“Create dashboard”**를 클릭합니다.

 

Automatic dashboards 로 대시보드를 생성한다면 각종 지표를 종합적으로 대시보드에 구성해 줍니다. 

 

Ec2 지표 대시보드 

 

5. 한개씩 지표 설정을 하고 싶다면  Custom Datshboard 를 통해 설정하고 싶은 위젯을 선택하여 대시보드에 추가합니다.


지표(Metrics) 설정

- 1. CloudWatch 콘솔에서 왼쪽 메뉴의 **“Metrics”**를 선택합니다.

- 2. 모니터링하려는 서비스(예: EC2, RDS 등)를 선택합니다.

- 3. 지표를 선택하여 그래프에 추가합니다.

- 4. 선택한 지표를 대시보드에 추가할 수도 있습니다.

 

알람(Alarms) 설정

 

- 1. CloudWatch 콘솔에서 왼쪽 메뉴의 **“Alarms”**를 선택합니다.

- 2. **“Create alarm”**을 클릭합니다.

- 3. 모니터링할 지표를 선택하고 Next를 클릭합니다.

- 4. 조건을 설정합니다 (예: CPU 사용률이 80% 이상일 때 알람 발생).

- 5. 알람 발생 시 수행할 작업(SNS 주제에 알림 전송 등)을 설정합니다.

- 6. 알람 이름을 입력하고 **“Create alarm”**을 클릭합니다.

 

이메일 알림 추가

이메일 작성 후 [create topic] 으로 알림 정보 저장해주면 됩니다.


저장하고 나면 Amazon SNS 에 저장된 것을 볼 수 있습니다. 

 

CloudWatch Logs Insights 는 다음 포스팅에서 하겠습니다.

 

https://juntcom.tistory.com/253

 

CloudWatch Logs 에이전트 설치 - Ec2 인스턴스

AWS CloudWatch Logs 에이전트를 설치하고 구성하는 방법은 다음 단계에 따라 진행할 수 있습니다. 이 과정에서는 EC2 인스턴스에서 로그를 수집하고 CloudWatch Logs로 전송하는 방법을 설명합니다. 1. AWS

juntcom.tistory.com

 

 
 
반응형
반응형

우선 이것을 하기 위해서는 앞에 선행 작업들이 이루어져야 합니다.

 

  1. 인스턴스를 생성하고 간단한 웹서비스 실행
  2. 도메인 구매 사이트 & 네임서버 변경

 

외부 도메인에 네임서버를 GCP로 변경

GCP에 접속한뒤 네트워크 서비스 > Cloud DNS 메뉴에 들어간 뒤, 영역만들기로 하나 생성합니다.

원래는 domain 을 구매한 서비스에 ip 만 등록하면 되나 gcp 의 경우 gcp 내부에 cloud dns 에 도메인을 추가로 등록해줘야 dns 가 동작을 합니다.

 

네트워크 서비스 > cloud DNS > 영역 만들기 

상단에 영역 만들기 통해서 만들어 줍니다. 

여기 까지 생성하게 되면 dns 목록에 뜨게 됩니다. 

이름만 설정하고 나머지 옵션은 기본으로 두시고 사용하셔도 됩니다. 

기본으로 만드시면 SOA 와 NS 가 기본으로 생성됩니다. 

 

NS 목록을 펼치기를 하시면 도메인 구매한 사이트에서 네임서버를 설정할 수 있어 아래 값들을 네임서버 구매하신곳에 등록해주셔도 되고, 등록을 안해주셔도 사용은 가능합니다.

등록을 하게 되면 도메인 서버가 cloud dns 의 설정을 따른다는 이야기 입니다. 

ip 로만 리다이렉트 시킬 용도면 등록하지 않으셔도 동작은 가능합니다. 

 

vm 인스턴스의 외부 ip 를 도메인을 구매한 구매처에 이제 등록 하시고

저는 네입칩 namecheap 을 사용했습니다. 

이 작업을 cloud dns 에도 적용하면 됩니다. 

cloud dns 에서 표준추가 로 dns 설정을 추가합니다. 

subdomain 을 요청하시면 앞에 추가 하면 됩니다.

A 레코드는 ip 주소로 리다이렉트 하는 유형입니다. 

 

gcp 를 사용하실때는 위의 작업까지 해야 dns 에 등록된 gcp Ip 서버로 요청이 됩니다.

 

반응형
반응형

Compute Engine 인스턴스 생성

1. GCP 콘솔에서 Compute Engine > VM 인스턴스로 이동합니다.

2. 인스턴스 만들기를 클릭합니다.

3. 인스턴스 설정:

이름: 원하는 이름 입력

지역: 가까운 지역 선택

머신 유형: e2 선택

부팅 디스크: Ubuntu (최신 LTS 버전) 선택

4. 네트워킹, 디스크, 보안 설정을 필요에 따라 구성합니다.

5. 만들기를 클릭하여 인스턴스를 생성합니다.

 

3. SSH를 통해 인스턴스에 접속

인스턴스가 생성되면 브라우저 창에서 열기를 통해 터미널 열 수 있다.

 

4. Docker 설치

SSH 세션에서 다음 명령어를 실행하여 Docker를 설치합니다:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
sudo usermod -aG docker ${USER}

위 명령어를 한줄씩 실행하여 docker 를 설치합니다. 

 

5. Docker Compose 설치

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

 

6. Docker Compose 파일 작성

mkdir wordpress-docker
cd wordpress-docker
nano docker-compose.yml

 

다음 내용을 docker-compose.yml 파일에 입력합니다:

version: '3.1'

services:
  wordpress:
    image: wordpress
    restart: always
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wp-vol:/var/www/html
  db:
    image: mysql:5.7
    restart: always
    volumes:
      - mysql-vol:/var/lib/mysql
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_ROOT_PASSWORD: rootpass
volumes:
    mysql-vol: {}
    wp-vol: {}

 

7. Docker Compose 실행

sudo docker-compose up -d

 

8. 워드프레스 설정

 

웹 브라우저를 열고 http://YOUR_INSTANCE_IP에 접속하여 워드프레스 설정을 완료합니다.

데이터베이스 정보는 docker-compose.yml 파일에서 설정한 대로 입력합니다.

 

이제 GCP에서 Docker를 사용하여 워드프레스를 성공적으로 설치하였습니다.

 

생성된 인스턴스의 외부 ip 를 브라우져에 입력하면 아래와 같이 워드프레스 초기 설정이 뜹니다.

반응형
반응형

Docker Desktop for Mac 설치

 

1. 다운로드 페이지 접속:

Docker 공식 웹사이트에서 Docker Desktop for Mac 다운로드 페이지로 이동합니다.

https://www.docker.com/products/docker-desktop/

 

Docker Desktop: The #1 Containerization Tool for Developers | Docker

Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.

www.docker.com

 

도커란 

Docker는 컨테이너화를 통해 애플리케이션을 개발, 배포 및 실행할 수 있도록 지원하는 오픈 소스 플랫폼입니다. 이는 개발자가 애플리케이션을 빠르게 배포하고 관리할 수 있도록 도와주며, 여러 환경에서 일관된 동작을 보장합니다. Docker의 주요 특징과 구성 요소를 정리해 드리겠습니다.

 

주요 특징

 

1. 컨테이너화: Docker는 애플리케이션과 그 종속성을 컨테이너 내에 패키징합니다. 이 컨테이너는 어떤 Linux 시스템에서도 실행될 수 있으며, VM(가상 머신)보다 가볍고 빠르게 작동합니다.

2. 이식성: 컨테이너는 모든 종속성과 구성을 포함하므로, 개발 환경에서 테스트, 스테이징, 생산 환경으로 이동하는 과정에서 발생할 수 있는 “It works on my machine” 문제를 해결합니다.

3. 버전 관리 및 재현성: Docker 이미지는 버전이 관리되며, 이미지를 통해 동일한 애플리케이션을 쉽게 재생성하고 롤백할 수 있습니다.

4. 자동화: Dockerfile을 통한 이미지 생성과 Docker Compose를 사용한 여러 컨테이너의 관리는 개발 및 배포 과정을 자동화하고 간소화합니다.

 

주요 구성 요소

1. Docker 이미지: Docker 컨테이너 실행을 위한 템플릿으로, 읽기 전용으로 존재합니다. 이미지는 애플리케이션 실행에 필요한 모든 것을 포함하고 있습니다.

2. Docker 컨테이너: 이미지를 기반으로 생성된 실행 인스턴스입니다. 독립적으로 실행되며, 이미지에서 정의된 소프트웨어, 라이브러리, 코드 등을 포함합니다.

3. Docker Daemon: 호스트에서 Docker API 요청을 수신하고 이미지, 컨테이너, 네트워크, 볼륨 등을 관리하는 백그라운드 서비스입니다.

4. Docker 클라이언트: 사용자가 Docker Daemon과 통신할 수 있게 해주는 CLI(Command Line Interface) 도구입니다. docker build, docker push, docker run과 같은 명령을 사용할 수 있습니다.

5. Docker Hub: Docker 이미지를 공유하고 다운로드할 수 있는 Docker의 공식 레지스트리입니다. 공개 또는 사설 이미지 저장소를 제공합니다.

 

 

Docker 사용의 이점

환경 일관성: 모든 의존성과 구성을 포함한 컨테이너는 어느 환경에서나 동일하게 작동하므로, 환경 간 차이에 따른 문제를 크게 줄일 수 있습니다.

보안: 컨테이너는 격리된 환경에서 실행되므로, 한 컨테이너의 변경이나 실패가 다른 컨테이너에 영향을 미치지 않습니다. 이는 애플리케이션 간의 충돌을 방지하고 보안을 강화합니다.

리소스 효율성: 컨테이너는 가상 머신보다 훨씬 적은 오버헤드로 실행됩니다. 각 컨테이너는 공유된 OS 커널을 사용하며, 필요한 리소스만 추가로 소비합니다.

배포 속도: 이미지를 사용한 컨테이너의 배포는 몇 초 내에 완료될 수 있습니다. 이는 특히 대규모 애플리케이션과 서비스를 빠르게 확장하고 업데이트할 때 큰 이점을 제공합니다.

사용

다운 받으면 아래 명령어로 터미널에서 실행되는지 확인 해보자

docker -v

 

Mysql 도커 실행

1. MySQL Docker 이미지 다운로드

 

먼저 Docker가 설치되어 있고, 동작 중인지 확인하세요. 그 후, 터미널 또는 명령 프롬프트에서 다음 명령어를 사용하여 공식 MySQL 이미지를 다운로드합니다.

docker pull mysql

 

2. MySQL 컨테이너 실행하기

 

MySQL 이미지를 다운로드한 후, 다음 명령어를 사용하여 MySQL 컨테이너를 실행할 수 있습니다. 이때 데이터 보존, 환경 변수 설정 등을 위해 몇 가지 중요한 옵션을 추가합니다.

 

docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

 

3. MySQL 컨테이너에 접속하기

 

컨테이너가 실행되면 다음 명령어를 사용하여 MySQL 콘솔에 접속할 수 있습니다.

docker exec -it some-mysql mysql -uroot -p


4. docker compose 

docker 단순 명령어로 매번 올리기 어려운 경우 파일로 만들어 올리는 방법입니다.

docker-compose.yml 이라는 파일을 만듭니다.

version: '3.8'  # 사용할 Compose 파일 버전

services:
  mysql:
    image: mysql:latest  # 사용할 MySQL 이미지와 태그
    container_name: my-mysql  # 컨테이너 이름
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw  # MySQL root 사용자의 비밀번호
      MYSQL_DATABASE: mydb  # 자동으로 생성할 데이터베이스 이름
      MYSQL_USER: user  # 데이터베이스 사용자 이름
      MYSQL_PASSWORD: userpw  # 데이터베이스 사용자 비밀번호
    ports:
      - "3306:3306"  # 호스트와 컨테이너 간 포트 매핑
    volumes:
      - /Users/경로:/var/lib/mysql  # 데이터 지속성을 위한 볼륨
    restart: always  # 컨테이너 자동 재시작 옵션


윈도우 경로 예시 : C:\Users\hello


파일 실행

docker-compose up -d

파일 중지 

docker-compose down
 
반응형
반응형

vue 프론트를 배포하려면 구글 플랫폼에서는 google cloud run 및 firebase hosting 을 통해 배포할 수 있습니다.  

cloud storage 에 정적 파일로 올릴 수 있지만 이 경우에 vue router 등 프론트에서 라우트 기능을 사용한다면 

경로 오류가 생길 수 있습니다. 

완전 static 하게 경로 이동 없는 경우에 cloud storage 이용하는게 좋습니다.

 

 

Firebase Hosting

  • 비용: Firebase Hosting은 정적 파일(HTML, CSS, JS 등)을 호스팅하기 위한 것이므로, 주로 네트워크 대역폭과 저장 공간에 대한 비용이 발생합니다. Firebase는 무료 티어를 제공하며, 이는 작은 프로젝트나 테스트 용도로 충분한 경우가 많습니다. 무료 티어를 초과하는 사용량에 대해서는 비용이 청구됩니다.
  • 무료 티어 제공: 예, 제공됩니다. 일정 수준의 사용량(예: 일정 GB의 저장 공간 및 월간 대역폭)은 무료입니다.
  • 적합한 사용 사례: 정적 웹 사이트 및 SPA(Single Page Application).

Cloud Run

  • 비용: Cloud Run은 사용한 컴퓨팅 자원(메모리와 CPU), 요청 수, 네트워크 대역폭에 따라 비용이 청구됩니다. Cloud Run도 무료 티어를 제공하며, 이에는 월간 요청 수, 컴퓨팅 자원 사용량에 대한 무료 할당량이 포함됩니다. 무료 사용량을 초과하면 비용이 발생하며, 이는 애플리케이션의 복잡도와 트래픽에 따라 달라집니다.
  • 무료 티어 제공: 예, 제공됩니다. 무료 티어는 일정량의 컴퓨팅 자원 사용과 요청 수에 대해 무료로 제공됩니다.
  • 적합한 사용 사례: 동적 웹 애플리케이션, API 백엔드, 마이크로서비스.

비교 및 선택

  • 정적 컨텐츠: 당신의 애플리케이션이 주로 정적 컨텐츠를 제공한다면, Firebase Hosting이 더 경제적일 수 있습니다. 이 서비스는 정적 파일을 효율적으로 서빙하기 위해 최적화되어 있습니다.
  • 동적 처리가 필요한 경우: 애플리케이션이 서버 사이드에서 동적 컨텐츠를 생성하거나, 사용자 인증, 데이터베이스 연동 등 복잡한 백엔드 로직을 필요로 한다면, Cloud Run이 더 적합할 수 있습니다. 이 경우 추가적인 비용이 발생할 수 있지만, 더 강력한 기능과 유연성을 제공합니다.

결국 선택은 애플리케이션의 요구 사항, 예상 트래픽, 그리고 예산에 달려 있습니다. 무료 티어로 시작하여 요구 사항이나 사용량이 증가함에 따라 서비스를 조정하는 것이 좋습니다.

 

정적 컨텐츠일 경우에는 Firebase Hosting 이 좋을 것 같아 

Firebase Hosting 하는 법 소개합니다. 

 

Firebase Hosting

https://console.firebase.google.com/u/1/ 

로 들어가서 프로젝트를 추가합니다.

프로젝트 추가 후 

Hosting 메뉴를 추가합니다.

여기에서 배포된 어플리케이션 확인 가능합니다.

 

하지만 따로 웹사이트에서 작업해줘야 할 것은 없고 로컬에서 firebase 설치해서 아래 가이드대로 설치해주시면 됩니다.

 

 

FIREBASE_TOKEN은 Firebase CLI를 사용해 생성할 수 있는 인증 토큰입니다. 이 토큰은 Firebase 프로젝트에 대한 비밀 액세스 권한을 제공하며, CI/CD 파이프라인(예: GitHub Actions)에서 Firebase 서비스에 자동으로 인증하기 위해 사용됩니다. 토큰을 생성하고 GitHub Secrets에 저장하는 방법은 다음과 같습니다:

Firebase 토큰 생성 방법

1. Firebase CLI 설치: Firebase CLI가 로컬 시스템에 설치되어 있지 않은 경우, 먼저 설치해야 합니다. 터미널에서 다음 명령어를 실행하여 설치할 수 있습니다:이 명령은 Firebase CLI를 글로벌로 설치합니다.

npm install -g firebase-tools

 

2. Firebase에 로그인: 다음 명령어를 사용해 Firebase에 로그인합니다:이 명령은 기본 웹 브라우저를 열고 Firebase 인증 프로세스를 시작합니다. 로그인 과정을 완료하세요.

firebase login

위 명령어 사용시 브라우져 창에서 firebase 계졍 인정하도록 화면이 뜨게 됩니다.

 

위 완료 메시지 뜨면 로그인 완료되었습니다.

 

3. CI용 Firebase 토큰 생성: Firebase CLI에서 CI(지속적 통합) 환경을 위한 인증 토큰을 생성하려면, 다음 명령어를 실행합니다:이 명령은 새로운 인증 토큰을 생성하고, 이 토큰을 터미널에 출력됩니다. 출력된 토큰을 복사하세요.

firebase login:ci

 

4. 프로젝트 폴더에 firebase.json 이 있어야 하는데, 아래 명령어 통해서 세팅하면 됩니다.

firebase init hosting

 

프로젝트가 없으면 새로 생성, 미리 firebase 에서 프로젝트 생성 하면 됩니다. 

있으면 프로젝트 선택하면 됩니다.

github workflow 에 넣냐는 말이 있는데, 여기에서 프로젝트 유저명/프로젝트명 을 넣어줍니다.

필요한 옵션을 알아서 선택해주자.

firebase.json

이 아래와 같이 생성되는데 혹시 잘못해서 안되면 나중에 덮어씌어도 됩니다.

여기까지 작성 후 

firebase deploy


를 하게 되면 프론트 소스가 배포 됩니다. 

 

 

선택해야 하는 옵션 이 너무 잘 되어 있어 

github actions 파일까지 생성해 줍니다.

옵션만 잘 따라가 주면 됩니다

 

옵션을 잘 못 선택해주었을 경우를 대비하여 firebase.json 및 firebase-hosting-merge.yml 공유합니다.
굳이 먼저 생성안해도 firebase init 통해서 actions 파일까지 생성해 줍니다.

npm ci 가 동작안할 수 있는데 

이때 steps 만 나눠서 실행 다시 해보세요.

 
반응형

+ Recent posts