들어가며


  이번 포스팅에선 AWS 파일서버인 S3에 대하여 알아보고, S3의 생성, 연결 및 관리 방법에 대하여 알아보도록 하겠습니다.




S3란?

 

  S3란 Simple Storage Service의 약자입니다. 아마존에서 사용하는 파일 서버로 용량에 관계없이 파일을 저장할 수 잇고 웹에서 HTTP 프로토콜을 이용하여 파일에 접근할 수 있습니다. S3를 써야 하는 이유는 성능과 비용에 있습니다. 대용량의 파일 저장을 EC2와 EBS를 통해 구축한다면 상당히 많은 비용이 청구됩니다. (EC2는 RDS와 함께 AWS에서 많은 비용을 차지하는 부분중에 하나이기 때문에 EC2서버와 파일서버를 분리하는 것을 권장합니다) S3는 저장 용량이 무한대이고 파일저장에 최적화 되어 있습니다. 


 따라서, 동적 웹페이지를 EC2에 구축하고, 이미지 관련 정적 파일 등은 S3에 업로드 하여 구축합니다. S3는 흔히 웹하드와 비교하곤 하지만 HTTP를 이용한 파일 업로드/다운로드를 처리하기에 사용하기에 쉽습니다.


* S3 기본 개념


- 객체 (Object)

: S3에 데이터가 저장되는 최소 단위입니다. 객체는 파일과 메타데이터로 구성됩니다.

: 기본적으로 키(Key)가 객체의 이름이며 값(Value)이 객체의 데이터입니다.

: 객체 하나의 크기는 1 바이트부터 5TB까지 지원됩니다.


-  버킷(bucket)

: S3에서 생성할 수 있는 최상위 폴더입니다.

: 버킷은 리전(지역) 별로 생성해야 합니다. 버킷의 이름은 모든 S3 리전 중에서 유일해야 합니다

: 폴더 생성이 가능하고 버킷안에 객체가 저장됩니다.

: 저장 가능한 객체의 개수와 용량은 무제한입니다.

: 접속 제어 및 권한 관리가 가능합니다.


S3 버킷생성




먼저, S3 대쉬보드에서 버킷을 누른후 '버킷 만들기'를 클릭합니다.




 다음으로 버킷이름과 리전을 선택하여 줍니다. 리전은 지역 위치에 따라 속도가 차이가 많이 나므로, 운영할 서버 EC2에 위치한 리전으로 선택 해주는게 좋습니다. 버킷이름은 유니크 하기 때문에 이미 리전에 생성된 이름이 있으면 사용할 수 없습니다.



 생성된 버킷에 들어가면 다음과 디렉토리를 만들고 업로드, 다운로드를 대쉬보드내에서 진행 할 수 있습니다. 하지만, 이렇게 사용하려고 S3를 구성한 것은 아니니 코드(Java)로 제어하는 방법을 알아보도록 하겠습니다. Java 이외에 python, node.js, kotlin, .net 등의 언어로도 지원 가능합니다.



코드로 S3 다루기 feat Java

 

 먼저, S3를 다루는 몇가지 방식이 있습니다. 


1) IAM 계정 추가 방식

- 계정에는 access_key와 secret_key가 부여됩니다.

- s3 full access라는 정책을 계정에 부여합니다.

- s3 client에 access_key, secret_key를 부여한 credential 정보를 부여하고 bucket에 접근하여 업로드, 변경, 다운로드를 수행합니다.

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);

AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withRegion(region)
.build();


2) EC2에 역할 부여

- EC2에 S3에 대한 full access 정책을 할당합니다.

- s3 client를 할당하여 api를 통해 업로드, 변경, 다운로드를 수행합니다.

AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build();
엑세스 권한이 부여된 1) key 접근 방식은 보안적인 측면에서 여러 문제가 발생할 소지가 있기 때문에, AWS에서는 2번째 방법으로 S3의 파일 데이터를 다루는 것은 추천하고 있습니다!!

간단히 API를 보겠습니다.

- bucket_name : 버킷 이름 (유니크한 이름)
- key_name : 저장될 파일 이름 (해당 경로에 위치될 이름입니다)
- file : 파일

* upload 

try {
s3.putObject(bucket_name, key_name, new File(file_path));
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
}

* download

try {
S3Object o = s3.getObject(bucket_name, key_name);
S3ObjectInputStream s3is = o.getObjectContent();
FileOutputStream fos = new FileOutputStream(new File(key_name));
byte[] read_buf = new byte[1024];
int read_len = 0;
while ((read_len = s3is.read(read_buf)) > 0) {
fos.write(read_buf, 0, read_len);
}
s3is.close();
fos.close();
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
} catch (FileNotFoundException e) {
System.err.println(e.getMessage());
} catch (IOException e) {
System.err.println(e.getMessage());
}

* move, copy

try {
s3.copyObject(from_bucket, object_key, to_bucket, object_key);
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
}

* delete

try {
s3.deleteObject(bucket_name, object_key);
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
}


* 정리
s3 Object API 다루기 (bucket도  API 코드로 다룰수 있지만 혹시 모르니 버킷은 대시보드 내에서 작업 하시는걸 추천드립니다)
1) aws 클라우드 내 작업
- s3에 대한 엑세스 권한 부여

2) Java code 내 작업
- credential 부여 (1번, 2번 방법에 따라 optional)
- amazones3 client 주입
- api 수행


출처


AWS는 문서화가 잘 되어 있기에 공식 문서를 많이 찾아 보는걸 추천드립니다!!


AWS 공식 개발 document

AWS s3 Object Java API

블로그 이미지

yhmane

댓글을 달아 주세요

들어가며


 이전 포스팅에서 ELB를 이용해 보았고, 그중에서도 application 로드밸런서를 구성하여 사용하는 방법을 알아 보았습니다.

AWS - ELB(Elastic Load Balancing) application loadbalancer 사용


이번 포스팅에선 network 로드밸런서 구성과 사용 방법을 알아보도록 하겠습니다.



ELB란?

 


  ELB는 Elastic Load Balancing의 줄임말입니다. 서버의 부하를 분산하여 주는 스위치 역할을 수행합니다.


"Elastic Load Balancing은 들어오는 애플리케이션 트래픽을 EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수와 같은 여러 대상에 자동으로 분산시킵니다. ELB는 단일 영역 또는 여러 가용 영역에서 부하를 처리할 수 있습니다. ELB는 세가지 종류의 부하분산 장치를 제공하고 모두 고가용성, 자동 확장/축소, 강력한 보안 기능을 갖추고 있습니다."


  Elastic Load Balacing은 아래 3개의 로드밸런서를 제공합니다.


  * Application Load Balancer - L7 계층 (http/https) 프로토콜

  * Network Load Balancer - L4 계층 (TCP/UDP) 프로토콜

  * Classic Load Balancer - 전통적인 방식의 로드밸런서 (이제 지향하는 방식이 아님)







* network loadbalancer를 어떤 경우에 사용할까요??

- 소켓을 이용하여 tcp 통신을 할 경우

- 내부망과 외부망이 분리 되어 있고, tcp 서버가 내부에 있을 경우


저의 경우에는 전문통신을 위해 소켓을 이용하였는데 AWS VPC 내부(EC2) / 외부업체 통신이 이루어져야 하는 경우 였습니다.

내부(EC2) + RDS로 VPC가 구성되었기 때문에 http 프로토콜이 방식이 아니기에 소켓의 연결을 이루어져야 할 매개체가 필요하였고


network loadbalancer (VPC public) => EC2 (VPC private) 의 연결로 서버를 구성하여 문제를 해결하였습니다.




Network 로드밸런서 사용해보기

 


EC2 선택후 왼쪽메뉴에서 로드밸런스를 찾아 클릭하여 줍니다. 다음으로 Load Balancer 생성 버튼을 눌러줍니다.

 



Load Balancer 유형 선택 화면이 나옵니다. 유형은 3종류가 있습니다.


  * Application Load Balancer - L7 계층 (http/https) 프로토콜

  * Network Load Balancer - L4 계층 (TCP/UDP) 프로토콜

  * Classic Load Balancer - 전통적인 방식의 로드밸런서 (이제 지향하는 방식이 아님)


여기서 tcp 프로토콜을 이용하여 ELB를 생성할 것이므로 'Network 로드밸런서' 생성 버튼을 눌러 줍니다. 




먼저, 로드밸런서의 이름을 지정하여 줍니다.


다음으로, 체계의 경우 인터넷과 내부가 있습니다. 여기서는 인터넷 경계로 선택하여 줍니다. (내부의 경우 public ip가 존재하지 않습니다. vpc와 subnet 관련 내용인데 이번 포스팅에서는 넘어가도록 하겠습니다)


마지막으로 리슨할 port를 지정하여 줍니다. 일반적으로 80, 8080, 443 등을 사용합니다. 여기서는 9999을 이용하도록 하겠습니다.

만약, 대외기관이나 타업체와 연동을 할경우 EIP를 할당해주시면 됩니다. 

public ip의 경우 변동 가능성이 있기에 외부 연동이 들어가게 된다면 꼭 사용하여 주세요. (이외에도 route53에 묶어서 사용하는 방법도 있습니다)





다음으로 라우팅 구성을 하여 줍니다. 9999 포트와 대상유형으로 인스턴스를 설정하고 elb와 연결될 ec2를 대상으로 등록하여 만들어 줍니다.




대상그룹이 잘 만들어 졌는지 확인해 봅니다.





대상그룹이 잘 만들어 졌으니 'Register targets'을 눌러 elb와 ec2를 연결하여 줍니다.

등록후, 상태검사를 통과하면 'healthy' 통과하지 못하면 'unhealthy'가 Status로 나옵니다. 






참조


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

https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html


블로그 이미지

yhmane

댓글을 달아 주세요

들어가며


 이전 포스팅에선 EC2 인스턴스를 프리티어로 생성하였고  SSH를 이용하여 터미널에 접속해 보았습니다. 이번 포스팅에선 EC2의 저장소(Storage) EBS, Snapshot, AMI에 대하여 알아보도록 하겠습니다.




가상 스토리지

 

  

 EBSElastic Block Storage의 약자로 EC2 인스턴스에 장착하여 사용할 수 있는 가상 저장 장치입니다. EBS는 EC2 기본 인스턴스에 제공하는 기본 용량보다 추가적으로 더 사용할 때, 운영체제를 중단시키지 않고 용량을 자유롭게 조절하고 싶을때 등에 사용 됩니다.


* EBS 기본 용어


- Volume : EBS의 가장 기본적인 형태로, OS에서 바로 가능한 형태

- Image : AMI (Amazone Machine Image) 의 약자이며 OS가 설치된 형태입니다. AMI로 부터 인스턴스를 생성합니다.

- Snapshot : EBS의 특정 시점을 그대로 복사하여 저장한 파일을 뜻합니다. 스냅샷으로 부터 EBS, AMI를 생성할 수 있습니다.




EBS

 


  EBSHDD/SSD라고 생각하시면 됩니다. 가상 디스크로, 일반적으로 8에서 100기가 정도 사이의 용량을 할당하여 줍니다. 다만, EBS의 경우 일차적인 저장소로 사용 되기에 용량을 낮게 잡는게 일반적이고, 백업이나 파일디스크의 역할은 S3에게 위임합니다.

 EC2 생성시 기본적으로 OS가 설치된 EBS 볼륨이 함께 생성됩니다, 프리티어의 경우 30GB까지 무료로 제공 되니, 30GB로 할당하여 사용하면 됩니다. 가상 디스크 (HDD/SSD) 이다보니, 디스크를 필요에 의해 마운트/언마운트 하여 사용할 수 있습니다.



Snapshot & Image

 


  스냅샷은 EBS의 특정 시점을 복사하여 저장한 파일입니다. 다음과 같은 용도로 사용합니다.


* 스냅샷으로 EBS 볼륨 추가 생성

* 스냅샷으로 AMI 샹성

* 스냅샷을 다른 리전으로 복사


보통 서버를 EC2로 서버를 구성하게 되면, 최소 2대 이상의 서버를 구성하게 됩니다. 

먼저, EC2를 구성후 새로운 서버를 구축해야 할 경우, Snapshot 생성 -> AMI 생성 -> EC2 추가 생성의 단계로 서버를 구성하게 됩니다.

또한, 한국 이외에 서버를 구성할 경우, 새로운 리전에 추가로 EC2를 구성해 주어야 하는데 Snapshot를 생성하여 리전복사를 해줄때 사용하게 됩니다!!



* Snapshot 생성



EC2 > Volume > Snapshot 생성 

태그의 경우 Name과 ClientName도 마찬가지로 지정 해주시면 됩니다.



* AMI 생성



EC2 > Snapshot > 이미지 생성 

태그의 경우 Name과 ClientName도 마찬가지로 지정 해주시면 됩니다.


주의할 점은 AMI 생성시 Snapshot을 기준으로 생성 해주어야 합니다. EC2에서 바로 AMI를 생성할 수도 있지만, EC2에서 이미지를 바로 생성시 서버가 중지 되기 때문에 꼭 Snapshot을 기준으로 이미지를 생성해야 합니다!




출처

 


https://aws.amazon.com/ko/ebs/?ebs-whats-new.sort-by=item.additionalFields.postDateTime&ebs-whats-new.sort-order=desc

블로그 이미지

yhmane

댓글을 달아 주세요

들어가며


  이번 포스팅에선 AWS 가성서버인 EC2에 대하여 알아보고, 인스턴스 생성, 접속, 관리 등 기본적인 운영에 대하여 알아보도록 하겠습니다.




EC2란?

 


  EC2란 Amazone Elastic Compute Cloud의 약자로 아마존에서 제공하는 인터넷에 연결된 가상 서버를 의미합니다. 또한, AWS 제품군 중에서 가장 널리 쓰이는 인프라이며 기본이 되는 인스턴스로 EC2만의 장점과 특성이 있습니다. 


 EC2는 가상 서버이기 때문에 클릭 몇번으로 쉽게 서버를 구축할 수 있다는 장점이 있습니다. 또한, 사용한 만큼만 요금을 지불하면 되므로 비용 절감의 효과도 누릴 수 있습니다. EC2 인스턴스튼 우리가 일반적으로 보는 PC나 서버와 똑같은 형태이며 Linux나 Windows가 설치 되어 있습니다. 하지만, 가상 서버이기 때문에 모니터에 직접 연결할 수는 없고 터미널이나 원격 데스크탑 연결로 접속을 해야 합니다.


* EC2 기본 개념


- 시작 : EC2 인스턴스를 시작합니다. 운영체제가 부팅되고 사용할 수 있습니다. 시작하는 순간부터 요금이 과금되며 1시간 단위로 요금으로 책정됩니다.

- 정지 : EC2 인스턴스를 정지합니다. 운영체제를 종료해 시스템이 종료된 상태이며 요금이 과금되지 않습니다.

- 삭제 : EC2 인스턴스를 삭제합니다. 삭제가 된 후 시간이 지나면 EC2 목록에서 사라집니다.

- 재부팅 : EC2 인스턴스를 재시작합니다.




EC2 인스턴스 생성하기

 


 다음으로 아마존 가성 서버를 생성 해보도록 하겠습니다. 순서는 아래와 같이 진행하며, 프리티어 (무료 요금제) 기준으로 설명 하도록 하겠습니다.


- 리전선택

- 유형선택

- 보안그룹 적용

- 키생성

- EC2 접속해보기

- EIP 할당


* 리전 선택




먼저, 상단의 리전(지역)을 선택 해주어야 합니다. 간혹, 미국 버지니아가 선택된 경우가 있는데 서울을 선택하여 주세요!! 거리에 따라 속도가 다르니 한국에서 운영/테스트 한다면 한국 리전을 선택해주시면 됩니다. 서울이 선택되었다면 인스턴스 시작 버튼을 눌러주세요!



* Image 선택



인스턴스에 사용될 이미지를 선택합니다. 리눅스, 윈도우 등의 운영체제를 제공합니다. 여기서는 Amazone Linux를 선택합니다. (아마존 리눅스는 CentOS 계열입니다)


* 유형 선택




다음으로, 인스턴스 유형을 선택해야 합니다. 인스턴스는 가상 서버의 cpu수, 메모리에 따라 요금이 다릅니다. 이 부분은 우선 프리티어(무료)를 선택하도록 하겠습니다. (접속자 수, 네트워크 유입량  등에 따라, 유형을 선택하면 됩니다)



* 인스턴스 구성




서브넷과 가용 영역을 선택하는 부분입니다. 이 부분은 VPC를 알아야 값을 선택할 수 있습니다. 여기서는 기본 선택값 그대로 유지하도록 하겠습니다.



* 스토리지 추가



EC2의 용량을 선택할 수 있습니다. 일반적으로 EC2의 용량을 낮게 잡고, 파일 서버를 S3를 추가하여 사용합니다. 프리티어의 경우 30GB 까지 무료로 제공하니 30GB를 선택하여 주세요



* 태그 추가



 AWS에서는 여러 태그가 있습니다. 태그는 키/VALUE의 쌍으로 구성됩니다. 여기서는 Name과 ClientName 두개만 사용하도록 하겠습니다. Name은 인스턴스의 이름을 주는 것이고, ClientName으로 요금 청구시 항목을 구별해주는 값입니다.



* 보안 그룹 구성



 AWS에서는 보안 그룹이라는 서비스를 제공합니다. in/out bound의 port를 관리하는 것입니다. 여기에서는 22, 80, 443의 포트만 허용하도록 하겠습니다. 또한, 보안상의 문제로 22(ssh) 터미널 접속 포트만 내 IP/회사 IP만 추가 해주시기 바랍니다.



* 키 생성 & 인스턴스 시작


 AWS에서는 EC2에 접속하기 위해서는 키(pem) 파일이 필요합니다. '새 키페어 생성'을 하여 주시고, 키파일을 안전하게 보관하여 주시기 바랍니다. 외부로 유출될 경우 서버가 악용될 소지가 있으니, 키파일은 private한 저장소에 보관하는게 제일 좋습니다.


이제 인스턴스 시작 버튼을 누룬후 2~3분이 지나면 새로운 인스턴스가 생성됩니다!!



* SSH 접속



 

 인스턴스가 생성 되었다면 목록에서 '실행중' 이라는 것을 볼 수 있습니다. 마우스 오른쪽을 클릭하여 '연결' 버튼을 눌러주세요!




* SSH 접속



맥 기준으로, 이전에 생성한 키파일(pem)파일의 권한을 수정하여 줍니다. chmod 400 '키파일'

다음으로 터미널을 이용하여 가상 서버에 접속하여 줍니다. ssh -i '키파일' ec2-user@ip


ip의 경우 ec2-172-12-33-6 이런식으로 시작하는 숫자를 똑같이 입력하여 주면 됩니다!! 

다만 22번 포트의 접속 권한을 내 IP로 지정하였기 때문에, 해당 IP 대역에서만 터미널에 접속할 수 있습니다.



* EIP 설정



위에서 터미널 접속시 꽤 긴 ip를 이용하여 가상 서버에 접근하였습니다. 이러한 문제를 공인 IP를 할당하여 해결할 수 있습니다.

왼쪽 목록에서 탄력적IP를 눌러주세요. 다음으로 탄력적 IP 주소 할당 -> 탄력적 IP 주소 연결을 하게 되면

 ssh -i '키파일' ec2-user@EIP를 이용하여 쉽게 가상 서버에 접근할 수 있습니다. 다만, EIP를 할당 받은 후에 인스턴스에 매칭하여 주지 않으면 과금되니 주의하시기 바랍니다.


EIP 해제 방법

: EIP 주소 연결 해제 -> EIP 주소 릴리즈




출처


[aws] https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/concepts.html


다음 포스팅에선 AWS의 파일 서버인 S3에 대해서 포스팅 하도록 하겠습니다!

블로그 이미지

yhmane

댓글을 달아 주세요

aws에 java를 build 하기 위해 메이븐을 설치 해보도록 하겠습니다.

아래 코드와 같이 메이븐을 설치한다면

1
2
3
sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -/etc/yum.repos.d/epel-apache-maven.repo
sudo sed -i s/\$releasever/6//etc/yum.repos.d/epel-apache-maven.repo
sudo yum install -y apache-maven
cs




mvn --version으로 확인을 해보면 java7이 잡히는 것을 확인 할 수 있습니다.

분명히 java7을 지우고 8을 설치하였는데 메이븐을 설치하면 7이 설치 되고 default로 7이 잡히네요.

혹시나 해서 searching 해보니 옵션을 바꿔줘야 한다고 합니다.

1
2
sudo /usr/sbin/alternatives --config java
sudo /usr/sbin/alternatives --config javac
cs



다음과 같이 java8을 기본 실행으로 바꾸고, 기본 컴파일로러 설정하여 줍니다.

이제 mvn --version으로 확인해보겠습니다.


이제 java8이 기본 설정으로 잡히는 것을 확인할 수 있습니다.

다음 포스팅에선 git 설치후 build 하여 서버에 배포해보도록 하겠습니다!!

[출처]

https://docs.aws.amazon.com/ko_kr/neptune/latest/userguide/iam-auth-connect-prerq.html

블로그 이미지

yhmane

댓글을 달아 주세요

저번 포스팅에선 아마존 리눅스에 mysql을 설치하였는데요.

DB를 더 편안히 이용하기 위해 local에 있는 mysql workbench로 연동해보겠습니다.


먼저 aws에서 mysql에 접속합니다.

다음으로 sample 테이블을 생성하고, 데이터를 3개 집어 넣었습니다.

이 부분은 알아서 하실 수 있을 거라 생각합니다.




다음으로, local에 설치 되어 있는 mysql workbench를 실행합니다.

'+' 버튼을 눌러 서버 연결을 하여 줍니다.

여기서 Standard TCP/IP over SSH 항목으로 넘어가야 ssh key file을 등록할 수 있습니다.

- 유동ip . port 번호

- 계정 이름

- aws 키

- 로컬 ip

- port

- 계정 순으로 적어줍니다.


mysql의 admin 비밀번호를 입력한 후 커넥션을 연결하여 줍니다.위 단계가 완료 되면, 커넥션이 생성된 것을 할 수 있습니다.

다음으로, aws 디비서버에서 생성한 테이블을 조회해보겠습니다.

앞에 입력하였던 데이터들이 출력 됩니다.

이번에는 workbench에서 데이터를 삽입하고 commit을 진행하였습니다.

마찬가지로, aws db 서버에서 데이터가 잘 조회 되는 것을 확인할 수 있습니다.

블로그 이미지

yhmane

댓글을 달아 주세요

들어가며

이전 포스팅에선 아마존 리눅스에 자바와 톰캣을 설치하여 구동까지 해보았습니다.

이번 포스팅에선, DB 연결을 하기 위해 mysql을 설치 해보도록 하겠습니다. 

DB의 경우 ami에 설치하여도 되고, aws rds를 이용해도 좋습니다. aws rds는 매우 우수하기 때문에 실제 운영환경에서 많이 사용합니다.

여기서는 간단한 프로그램을 사용하기 때문에 EC2 내부에 설치하도록 하겠습니다.

설치하기

먼저 설치 가능한 mysql 목록을 확인해보겠습니다.

1
sudo yum list mysql*
cs


설치 가능한 목록을 확인 하고 db를 설치합니다.

1
2
3
4
sudo yum install mysql
sudo yum install mysql-server
sudo yum install mysql-devel
yum info mysql mysql-server mysql-devel
cs
설치를 끝내고 mysql, mysql-server, mysql-devel의 차이를 확인해봅니다.


description의 내용을 간략히 보면

mysql은 client program을 contains하는 패키지,
mysql-devel은 lib 또는 header파일을 contains하는 패키지
mysql-server가 actual server라고 합니다.

1
2
mysql -
mysql --version
cs

설치가 완료 되었다면 위의 명령어로 mysql이 정상적으로 설치 되었는지 확인 합니다.


1
2
## /usr/bin/mysql
## /usr/sbin/mysqld
cs
해당 경로에서 mysql이 설치 된것을 확인 할 수 있습니다.
1
2
sudo chgrp -R mysql /var/lib/mysql
sudo chmod -770 /var/lib/mysql
cs

설치가 끝났다면 권한을 부여하여 줍니다.

1
2
service mysqld start
ps aux | grep mysql
cs

다음으로
위의 명령어를 이용하여 mysql을 실행합니다. 
mysql이 실행되면서 db가 생성됩니다.


1
mysqladmin -u root password 
cs

비밀번호를 2번 입력 하여 root 계정의 비밀번호를 설정하여 줍니다.

1
mysql -u root -p
cs



위에서 등록한 비밀번호를 이용하면 mysql db를 이용할 수 있습니다!!

다음 포스팅에선 git 설치 후에, clone하여 sample_springPJ를 서버에 올려 돌려보도록 하겠습니다.


[출처] 

https://jongkwang.com/?p=941

http://love0and0hate.blogspot.com/2017/02/mysql-yum.html

https://serverfault.com/questions/416614/yum-difference-between-mysql-mysql-server-and-mysql-devel

https://thereclub.tistory.com/32 

블로그 이미지

yhmane

댓글을 달아 주세요

들어가며

웹서비스를 운영하려면 웹서버와 was가 존재해야 합니다.

http 통신을 하여 클라이언트(웹브라우저)와 서버간의 통신을 하는데, 이때 필요한 것이 web 서버입니다.


일반적으로 서버 구성을 할 경우, web server (apache 또는 nginx)를 구성하고 was를 연동하여 사용합니다.

그 이유는 일반적으로 정적/동적 페이지를 분리하여 처리하거나 프록시 등을 설정하기 위해서인데요


이번 포스팅에선  AWS LINUX WAS(WEB APPLICATION SERVER)만 설치해보도록 하겠습니다.

(추후 포스팅에서 war 수동 배포를 해볼 예정인데, 간단한 프로그램이기 때문에 was만 설치하도록 하겠습니다)

설치하기

먼저, 설치 가능한 tomcat 목록을 확인하겠습니다.

다음 명령어로 tomcat 설치 가능한 목록을 확인하고 8 버전을 설치하여 줍니다.

1
2
3
4
sudo yum list tomcat*
sudo yum install tomcat8
sudo yum install tomcat8-admin-webapps
sudo yum install tomcat8-webapps


설치가 되었다면 서버를 구동해보도록 하겠습니다

먼저 root 계정으로 접속

1
sudo su
cs

다음으로 톰캣을 실행합니다.

1
service tomcat8 start
cs

port 연결이 잘 되어 있는지 확인하여 줍니다.

1
2
3
netstat -anp | grep 8080
netstat -anp | grep 8005
netstat -anp | grep 8009
cs

마지막으로 / 접속되는 페이지를 받아오는지 확인하여 줍니다.

1
curl http://127.0.0.1:8080
cs


다음으로 퍼블릭 ip 접속을 해보도록 하겠습니다.

보안그룹 규칙을 설정해두셨다면 접속이 되지만 아니라면 다음과 같이 인바운드 규칙을 추가하여 줍니다.

외부접속을 위해 8080 포트를 열어줍니다. 

https는 따로 적용하지 않기에 443은 열어두지 않았습니다. 

운영시 22번 port에 한해 ip를 고정시켜주는 것이 좋습니다 ex) 회사나 집의 ip 대역

변경된 보안그룹을 AWS 인스턴스에 적용시켜 줍니다.

자 이제 퍼블릭 ip를 통해 접속해보겠습니다.

접속이 잘 되는 것을 확인할 수 있습니다.

추가적으로 톰캣이 설치된 디렉토리에 대해서 알아보겠습니다.

tomcat8 디렉토리

tomcat8/ROOT 디렉토리 

tomcat8 server.xml 위치

8080가 설정 되어 있는 것을 확인할 수 있습니다.


[출처] 

http://thereclub.tistory.com/27

https://idchowto.com/?p=13190

https://m.blog.naver.com/PostView.nhn?

blogId=jkssleeky&logNo=220838311137&proxyReferer=https%3A%2F%2Fwww.google.com%2F





블로그 이미지

yhmane

댓글을 달아 주세요