지구정복
[Naver Cloud] 02/10 | 클라우드 개념, 네이버 클라우드 리눅스 생성, 클라우드 리눅스 서버 사용, 클라우드 리눅스에 MariaDB설치 및 사용, DB설치되어있는 리눅스서버 생성 및 사용, 우편번호검색기 본문
[Naver Cloud] 02/10 | 클라우드 개념, 네이버 클라우드 리눅스 생성, 클라우드 리눅스 서버 사용, 클라우드 리눅스에 MariaDB설치 및 사용, DB설치되어있는 리눅스서버 생성 및 사용, 우편번호검색기
eeaarrtthh 2021. 2. 10. 17:51복습 및 배울내용
회사에서 처음에 하는 것
1. 호스팅
1. 웹호스팅 - 하드 일부 공간을 임대
* 각종 서버용 프로그램이 설치되어 있음
2. 서버호스팅 - 서버를 임대
* 직접 설치하거나 설정을 직접 변경
hosting.cafe24.com
2. 자체에 데이터 센터(IDC - Internet Data Center) - 관리
1. 은행
* 회사가 IDC를 가질 필요는 없지만 서버는 운영하고 싶을 때
또한 신축성있게 서버를 확장하고 싶을 경우
=> 클라우드
=> 필요할 때마다 가상화한 하드웨어를 사용한다.
1. 클라우드 개념
1. 클라우드 컴퓨팅이란?
IT 리소스를 인터넷을 통해 필요할 때마다 제공하고 사용한 만큼만 비용을 지불하는 것을 의미.
물리적 데이터센터와 서버를 구입, 소유 및 유지관리하는 대신, AWS와 같은 클라두으 공급자로부터 필요에 따라 컴퓨팅파워, 스토리지, 데이터베이스와 같은 기술 서비스에 액세스할 수 있다.
2. 클라우드 컴퓨팅의 이점
- 민첩성 : 클라우드를 통해 광범위한 기술에 쉽게 액세스할 수 있으므로, 더 빠르게 혁신가능
- 탄력성 : 필요한 리소스를 사전에 구매하는 것이 아니라 비즈니스 요구가 변함에 따라 리소스를 확장 가능
- 비용절감 : 클라우드를 통해 자본비용( 데이터센터, 물리적 서버 등 ) 을 가변 비용으로 전환하고,
사용한 만큼만IT 비용을 지불할 수 있다. 또한 규모의 경제 덕분에 직접 운영할 때보다 가변 비용일 훨씬 저렴하다.
3. 클라우드 컴퓨팅 유형
- IaaS(Infrastructure as a Service)
네트워킹 기능, 컴퓨터(가상 또는 전용 하드웨어) 및 데이터 스토리지 공간을 제공
- PaaS(Platform as a Service)
애플리케이션 실행과 관련된 리소스 구매, 용량 계획, 소프트웨어 유지 관리, 패치 작업 또는 다른 모든 획일적인 작업에 대한 부담 없이 더욱 효율적으로 운영할 수 있음
- Saas(software as a Service)
특정 소프트웨어 제공
4. DevOps 란?
애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철락, 방식 및 도구의 조합.
개발팀과 운영팀이 더 이상 다른 팀이 아니라 하나의 팀이 되어서 엔지니어가 개발에서 테스트, 배포, 운영에 이르기까지 전체 애플리케이션 수명 주기에 걸쳐 작업하고 단일 기능에 한정되지 않은 광범위한 기술을 개발한다.
2. 네이버 클라우드 플랫폼으로 리눅스 서버 생성하기
1. 회원가입 및 로그인
2. 콘솔에 들어간다.
3. 리전은 한국으로 설정한다.
각 서비스는 Products & Services에 있다.
4. Server를 클릭
1세대의 Micro 무료서버를 생성할 것이다.
서버 생성 클릭
5. 서버에 대한 설정을 한다.
디스크 크기, 이미지 타입, 리눅스 종류, 서버 타입 등
6. 서버에 대한 설정을 한다.
7. 서버에 접속하려면 인증키가 필요하다. 인증키를 다운받고 삭제하면 안된다.
8. ACG란 별도의 방화벽 구축없이, 외부에 방화벽을 설정하는 것 (Access Control Group)
서버 안에 같이 방화벽이 있는 것이 아니라 서버 외부에 있는 것
9. 클라우드 설정에 대한 요약이 나온다. 서버 생성을 누른다.
10. 생성중이 뜨고 생성이 끝나면 운영중이 뜬다.
* 외부에서 클라우드 서버에 접속하려면 포트 포워딩 정보인 서버 접속용 공인 IP를 알아야 한다.
외부접속 설정하기
외부접속을 하려면 아래의 두 가지를 설정해야 한다.
1. 외부 포트 변경
2. 관리자 비밀번호 확인하기
1. ACG를 눌러서 현재 포트를 확인해보자.
2. 현재 ACG를 클릭 후 ACG 설정을 누른다.
3. 현재 22번 포트를 사용중인 것을 알 수 있다. 외부에서 접속할 때 이 22번 포트를 그래도 사용하면 안전하지 않으므로 22번포트 앞에 새로운 포트를 설정해준다.
4. 다시 서버 탭으로 이동 후 현재 운영중인 서버 체크 -> 서버 포워딩 설정 클릭
5. 외부 포트를 2200으로 설정하고 추가 클릭
외부에서 2200번 포트를 통해 들어오면 22번 포트로 연결된다.
6. 포트 포워딩 설정을 적용한다.
7. 다음으로 관리자 암호를 알아내보자.
서버 탭에서 운영중 서버 체크 -> 서버 관리 및 설정 변경 클릭 -> 관리자 비밀번호 확인
8. 처음 서버 생성시 다운받은 인증키를 올려준 뒤 비밀번호 확인 클릭
9. 해당 비밀번호는 노출되면 안된다. 해당 비밀번호를 따로 적어두고 확인 클릭
10. Putty를 실행하고 서버 공인용 IP를 적고, 2200 포트번호를 적어준다.
11. root를 친다음 아까 확인한 관리자용 비밀번호를 적어준다.(대소문자조심)
그러면 네이버 클라우드 플랫폼에 설치된 리눅스 서버에 접속이 완료된 것이다.
이때 조심해야할 것이 관리자 암호를 쉽게 바꾸면 해킹이 될 수 있으므로 암호를 변경하면 안된다.
3. 네이버 클라우드 플랫폼의 리눅스 서버 사용하기
보안에 관련된 설정은 모두 꺼져있는 상태이다.
이제 시스템 업데이트후 리눅스를 사용해보자.
#보안 관련 설정 확인하기
[root@project ~]# cat /etc/sysconfig/selinux
[root@project ~]# systemctl status firewalld.service
#시스템 업데이트하기
yum update
업데이트 완료후 서버탭에서 '재시작'을 누른다.
#jdk 설치하기 및 설치확인
[root@project ~]# yum -y install java-1.8.0-openjdk-devel
[root@project ~]# java -version
[root@project ~]# javac -version
#jsp실행하기 위한 톰캣 설정
#먼저 사용자를 새로 만든다.
[root@project ~]# adduser tomcat
[root@project ~]# passwd tomcat
Changing password for user tomcat.
New password:
Retype new password:
[root@project ~]# su - tomcat
[tomcat@project ~]$ wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.43/bin/apache-tomcat-9.0.43.tar.gz
[tomcat@project ~]$ tar xvf apache-tomcat-9.0.43.tar.gz
[tomcat@project ~]$ ./apache-tomcat-9.0.43/bin/catalina.sh run
외부접속이 가능하게 하는 설정
1. ACG 방화벽을 풀어줘야지 외부 접속이 가능하다.
2. 외부접근용 IP 추가
서버 탭에서 ACG를 클릭
ACG체크 후 ACG 설정
어느 IP에서 접근이 가능한 0.0.0.0/0으로 접근소스 설정하고 포트번호는 8080 톰캣포트와 똑같이 설정한다.
추가 -> 적용
왼쪽 탭에서 Public IP에 들어가서 공인 IP 신청
(공인 IP 신청하면 과금이 되므로 신규 회원은 크레딧 10만원을 받고 하자,
또한 서버를 지우더라도 공인 IP를 지우지 않으면 과금이 되므로 서버 삭제 후 공인 IP도 같이 삭제해줘야 한다.)
적용 서버는 방금 만든 project를 설정하고 다음
생성 클릭
다시 톰캣을 켜주고 윈도우 브라우저에서
외부접근용 공인 IP:8080 에 접속해보자.
톰캣에 접속이 되는 것을 확인할 수 있다.
실습) 아래처럼 html문서를 만들어서 브라우저에서 출력해보자.
[tomcat@project ~]$ vi apache-tomcat-9.0.43/webapps/ROOT/hello.jsp
<html>
<head>
</head>
<body>
Hello Naver Cloud
</body>
</html>
[tomcat@project ~]$ ./apache-tomcat-9.0.43/bin/catalina.sh run
* 네이버 클라우드 사용 가이드 확인하기
4. 네이버 클라우드 플랫폼에 MariaDB 설치하고 사용하기
1. Maria DB 설치 및 사용
#MariaDB 설치
[root@project ~]# yum -y install mariadb
[root@project ~]# yum -y install mariadb-server
[root@project ~]# systemctl start mariadb
[root@project ~]# mysql
MariaDB [(none)]> exit
#MariaDB root계정 비밀번호 설정
[master@localhost ~]$ mysqladmin -u root password '!123456'
[master@localhost ~]$ mysql -u root -p
Enter password: !123456
#MariaDB 한글설정하기
[root@localhost ~]# vi /etc/my.cnf.d/client.cnf
#
# These two groups are read by the client library
# Use it for options that affect all clients, but not the server
#
[client]
default-character-set=utf8
# This group is not read by mysql client library,
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb]
[root@localhost ~]# vi /etc/my.cnf.d/mysql-clients.cnf
#
# These groups are read by MariaDB command-line tools
# Use it for options that affect only one utility
#
[mysql]
default-character-set=utf8
[mysql_upgrade]
[mysqladmin]
[mysqlbinlog]
[mysqlcheck]
[mysqldump]
default-character-set=utf8
[mysqlimport]
[mysqlshow]
[mysqlslap]
[root@localhost ~]# vi /etc/my.cnf.d/server.cnf
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#
# this is read by the standalone daemon and embedded servers
[server]
# this is only for the mysqld standalone daemon
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld/mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server=utf8
[root@localhost etc]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character_set_server = utf8
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mysql
MariaDB [(none)]> show variables like 'c%';
MariaDB [(none)]> grant all privileges on *.* to 'root'@'%' identified by '!123456';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
[root@localhost ~]# systemctl enable mariadb
한글설정할 때 주의할 점으로 한글설정 이후에 새로운 데이터베이스를 만들고 테이블을 만들어줘야 한다.
기존 데이터베이스의 테이블에 한글을 사용하면 한글이 안나올 수도 있다.
원격접속을 허용하려면 acg에 maraidb 포트를 열어줘야 한다.
이제 윈도우 마리아cmd창에서 클라우드 리눅스의 데이터베이스에 접속해보자.
접속이 되는 것을 알 수 있다.
2. war파일 업로드시키기
1. ftp 서버 설치
[root@localhost ~]# yum install vsftpd
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl enable vsftpd
vsftpd - ftp server
ssh - sftp
ftp 서버에 접속해보자.
먼저 파일질라를 켠다.
아래와 같이 기존 리눅스 연결 설정을 수정해준다.
호스트는 네이버 클라우드의 포트 포워딩의 서버 접속용 공인 IP이다.
포트는 tomcat서버에 설정한 2200포트이고
사용자는 tomcat 그리고 비밀번호는 네이버 클라우드 서버 비밀번호이다.
아래와 같이 접속되는 것을 확인할 수 있다.
5. 서버 초기화 및 다른 서버에있는 데이터베이스 이용하기
1. 서버 삭제
먼저 리눅스 서버를 정지한다.
다음 정지가 되면 서버를 반납한다.
IP도 같이 반납한다.
ACG도 아까 만든 포트들을 모두 삭제한다.
2. 데이터베이스가 설치되어있는 서버 만들기
기존에 사용한 인증키를 사용한다.
새롭게 접속 완료
현재 mariaDB가 설치되어 있으므로 mariadb 프로세스를 확인해보자.
현재 실행중인 것을 확인할 수 있다.
다시 처음부터 정리하면 다음과 같다.
#기본 리눅스 업데이트, 업데이트 종료후 클라우드서버 재시작
[root@project ~]# yum update
#MariaDB 한글설정
[root@project ~]# mysqladmin -u root password '!123456'
[root@project ~]# vi /etc/my.cnf
#
# This group is read both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include *.cnf from the config directory
#
!includedir /etc/my.cnf.d
# Recommended in nCloud for MariaDB 10.2 Basic setup
[mysqld]
innodb_file_per_table
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
default_storage_engine=InnoDB
query_cache_type = ON
query_cache_size = 0M
expire_logs_days = 7
slow_query_log
sysdate-is-now
#------------여기서부터 적어준다---------------------
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8
collation-server = utf8_general_ci
[client]
port=3306
default-character-set = utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
[root@project ~]# systemctl restart mariadb
[root@project ~]# mysql -u root -p
Enter password:
MariaDB [(none)]> show variables like 'cha%';
#원격 접속 허용시키기
MariaDB [project]> grant all privileges on *.* to 'root'@'%' identified by '!123456';
MariaDB [project]> flush privileges;
#ACG에 mariaDB 포트 설정 0.0.0.0/0 3306
#JDK 설치하기
[root@localhost ~]# yum -y install java-1.8.0-openjdk-devel
[root@localhost ~]# java -version
[root@localhost ~]# javac -version
#톰캣 설치
#먼저 사용자를 새로 만든다.
[root@project ~]# adduser tomcat
[root@project ~]# passwd tomcat
Changing password for user tomcat.
New password:
Retype new password:
[root@project ~]# su - tomcat
[tomcat@project ~]$ wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.43/bin/apache-tomcat-9.0.43.tar.gz
[tomcat@project ~]$ tar xvf apache-tomcat-9.0.43.tar.gz
#ACG에 톰캣 포트 추가 8080
#접속 시험 공인IP:8080
작업을 끝냈을 때는 다시 공인IP반납하고 서버도 정지하고 반납해야지 요금이 청구되지 않는다.
6. 윈도우에서 만든 우편번호 검색기 JSP 가져와서 실행하기
먼저 데이터베이스 덤프를 받아야 되는데 뭔가 인터넷 공급IP에서 막히는 것 같다.
아래 명령어로 덤프받으려고 하면
[tomcat@project ~]$ mysqldump -h 192.168.219.103 -P 3307 -u root -p'!123456' sample zipcode | mysql -u root -p'!123456' test
자꾸 아래와 같이 이상한 IP를 포함한 에러가 떴다.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
mysqldump: Got error: 1045: "Access denied for user 'root'@'116.39.36.181' (using password: YES)" when trying to connect
현재 root@116.39.36.181 에 접근할 수 있는 권한이 없다는 에러인데 현재 나는 116.39.36.181이란 IP를 사용하지 않고 있다. 그래서 IP 조회를 해보니 LG U+ IP였다. 즉, 인터넷 공급업체 IP인데 그쪽을 통과하지 못하는 것 같다.
해결방법은 LG U+ root 비밀번호를 알아내서 해야되는 것 같은데 어려우니깐
ftp 서버를 이용해서 데이터베이스 덤프파일을 옮겨본다.
먼저 윈도우 마리아디비에서 sample > zipcode테이블을 덤프파일로 만든다.
#윈도우 마리아디비 cmd
C:\Program Files\MariaDB 10.5\bin>mysqldump -u root -p sample zipcode > C:\sql\zipcode.sql
아래 처럼 덤프파일이 생겼다. 이를 ftp 서버에 넣어준다.
먼저 리눅스 서버에 새로운 사용자를 만든다. 비밀번호는 웬만해서는 클라우드 root 비밀번호랑 같게하자.
#먼저 사용자를 새로 만든다.
[root@project ~]# adduser tomcat
[root@project ~]# passwd tomcat
Changing password for user tomcat.
New password:
Retype new password:
파일질라 ftp에서 아래처럼 설정하고 연결한다.
다음 덤프파일을 리스토어 해준다. 그리고 마리아디비 접속해서 확인해본다.
[root@project ~]# cd ../home/tomcat
[root@project tomcat]# mysql -u root -p test < zipcode.sql
[root@project tomcat]# mysql -u root -p test
Enter password:
MariaDB [test]> show tables;
MariaDB [test]> select * from zipcode limit 10;
다음으로 윈도우 이클립스에서 만들었던 우편번호 검색기 war파일을 ftp를 통해서 가져온다.
이때 데이터베이스 설정에 관련된 내용을 수정해준다. 나는 ZipcodeJSTLEx01 프로젝트를 가져왔다.
<s:setDataSource
var="ds"
url="jdbc:mysql://localhost:3306/test"
driver="org.mariadb.jdbc.Driver"
user="root"
password="!123456"
scope="page"
/>
클라우드 리눅스 서버에서 톰캣을 먼저 실행시키고
[tomcat@project ~]$ ./apache-tomcat-9.0.43/bin/catalina.sh run
ftp서버에서 home/tomcat/webapps 안에 war 파일을 집어넣는다.
윈도우 웹브라우저에서 실행이 잘 되는 것을 알 수 있다.
만약에 서블릿클래스를 이용한 우편번호 검색기를 실행하려면 아파치 톰캣이 자바 서블릿클래스를 실행시켜줘야 한다.
'데이터 엔지니어링 정복 > Cloud(AWS, Ncloud)' 카테고리의 다른 글
[AWS] S3 서비스 이용, SNS서비스 이용 (0) | 2021.05.06 |
---|---|
[AWS] EBS(Elastic Block Storage) 만들기 및 Snapshot 기능 사용 (0) | 2021.05.05 |
[AWS] 4장 가상 네트워크 공간 만들기 (0) | 2020.12.29 |
[AWS] 3장 무한대로 저장 가능한 스토리지 만들기 (0) | 2020.12.21 |
[AWS] 2장 확장성과 안정성 높은 서버 만들기 (0) | 2020.12.02 |