01. aws.amazon.com/ko/free 가입 - choickey76@naver.com
02. Region을 아시아-서울 로 설정
03. 프리티어로 인스턴스 생성 : t2.micro
- 우분투로 설정 - 키페어는 pem 으로 받고, putty-gen으로 암호없이 ppk생성 (pem 파일의 소유자와 권한을 수정하여 윈도우커맨드에서 ec2접속해 보기) - 보안그룹 생성 : MySQL, SSH, HTTP, HTTPS - 볼륨 30G 설정 - 용량확인 명령어 : https://velog.io/@hyeonseop/ec2-용량-full일-때-대처법 df -gT 또는 lsblk : 프로젝트 중간에 용량을 증설하면 재기동 해줘야 함
05. putty 설정시 ppk 파일로 접속 - d2coding으로 폰트변경 - Ubuntu AMI : ubuntu Amazon Linux2 : ec2-user Amazon Lunux AMI : ec2-user Debian AMI : admin or root Fedora AMI : ec2-user or fedora
06. 리눅스 버전 확인 - 리눅스의 배포판 버전 확인 1) $ grep . /etc/*-release 2) $ cat /etc/*-release | uniq - 리눅스 커널 버전 확인 1) uname 2) uname -r 3) cat /proc/version
09. MySQL 설치 1) root 권한으로 실행 $ sudo su 2) mysql 설치 $ apt-get update $ apt-get install mysql-server 3) 외부접속허용 # vi /etc/mysql/mysql.conf.d/mysqld.cnf bind-address=0.0.0.0 으로 수정 4) 유저생성/권한설정 $ mysql -u root -p # CREATE USER 'donz'@'%' IDENTIFIED BY '비밀번호'; -- %는 모든 곳에서 접속 허용 # GRANT ALL PRIVILEGES ON *.* TO 'donz'@'%' WITH GRANT OPTION; # SHOW GRANTS FOR 'donz'@'%'; # FLUSH PRIVILEGES; 5) 방화벽설정 및 서비스 재시작 $ ufw allow out 3306/tcp $ ufw allow in 3306/tcp $ service mysql restart 6) DB생성 # CREATE DATABASE {사용할 DB명}; # SHOW DATABASES; 7) 인스턴스 확인 $ apt-get install net-tools $ netstat -tap | grep mysql
10. 외부에서 EC2에 설치한 MySQL에 접속 ┌────────────────────────────┐ │ 삽질금지 : 외부에서 MySQL 접속시 SSL이니 SSH니 설정필요 없음 │ └────────────────────────────┘ 1) DBeaver 접속 Public Key Retrieval is not allowed 에러 발생 에러 해결 : https://deviscreen.tistory.com/85 Driver properties -> allowPublicKeyRetrieval=true 2) MySQL Workbench 접속 Public Key Retrieval is not allowed 에러 발생 에러 해결 : https://sailer.tistory.com/entry/Mysql-Workbench-접속-에러-ssl-connection-error SSL -> Use SSL : No
11. root 계정 활성화 $ sudo passwd root $ sudo vi /etc/ssh/sshd_config #PermitRootLogin yes 부분의 주석(#)을 삭제하고 저장 $ sudo mkdir /root/.ssh $ sudo cp /home/ec2-user/.ssh/authorized_keys /root/.ssh $ sudo systemctl restart sshd
03. 프리티어로 인스턴스 생성 : t2.micro - 레드햇 설정 (★★★ 조언 : 괜히 다른 OS로 삽질하지 말고 처음부터 레드햇으로 설치하세요 ★★★) - 볼륨 20G 설정 - 용량확인 명령어 : https://velog.io/@hyeonseop/ec2-용량-full일-때-대처법 df -gT 또는 lsblk : 프로젝트 중간에 용량을 증설하면 재기동 해줘야 함
04. putty 설정시 ppk 파일로 접속 - d2coding으로 폰트변경 - Ubuntu AMI : ubuntu Amazon Linux2 : ec2-user Amazon Lunux AMI : ec2-user Debian AMI : admin or root Fedora AMI : ec2-user or fedora
05. 리눅스 버전 확인 - 리눅스의 배포판 버전 확인 1) $ grep . /etc/*-release 2) $ cat /etc/*-release | uniq - 리눅스 커널 버전 확인 1) uname 2) uname -r 3) cat /proc/version
06. root 계정 활성화 $ sudo passwd root $ sudo vi /etc/ssh/sshd_config #PermitRootLogin yes 부분의 주석(#)을 삭제하고 저장 $ sudo mkdir /root/.ssh $ sudo cp /home/ec2-user/.ssh/authorized_keys /root/.ssh $ sudo systemctl restart sshd ┌──────────────────────────────────┐ │ 이후 root로 재접속하여 작업 진행 └──────────────────────────────────┘
- 자원 제한 설정 $ vi /etc/security/limits.conf oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240
- 전체적용 및 확인 $ reboot $ /sbin/sysctl –p
★ oracle 로 사용자전환하여 하위 작업 진행 ★ ┌───────────────┐ │ $ su - oracle └───────────────┘ - 오라클 환경 변수 설정 $ vi /home/oracle/.bash_profile ORACLE_BASE=/opt/oracle ORACLE_SID=XE ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1 ORACLE_HOME_LISTNER=$ORACLE_HOME/bin/lsnrctl PATH=$ORACLE_HOME/bin:$PATH export PATH export ORACLE_BASE export ORACLE_SID export ORACLE_HOME export ORACLE_LISTNER export TMP=/tmp export TMPDIR=$TMP $ source /home/oracle/.bash_profile
10. oracle 설치 (Ubuntu) ┌─디펜던시 설치 (우분투일 경우)─────────────────────────── │ │ 1) 우분투 디스크 늘려주기 : 안늘려주면 2기가짜리 rpm -> deb 변환하다가 "No space left on device" 에러남 │ $ lsblk -f │ NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS │ loop0 squashfs 4.0 0 100% /snap/amazon-ssm-agent/5656 │ loop1 squashfs 4.0 0 100% /snap/core18/2409 │ loop2 squashfs 4.0 0 100% /snap/core20/1518 │ loop3 squashfs 4.0 0 100% /snap/lxd/22923 │ loop4 squashfs 4.0 0 100% /snap/snapd/16010 │ xvda │ ├─xvda1 ext4 1.0 cloudimg-rootfs 767f2b75-d030-4999-951c-d4ab6b37f31f 7.2G 53% / │ ├─xvda14 │ └─xvda15 vfat FAT32 UEFI 83EA-FFE2 99.1M 5% /boot/efi │ │ $ mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp │ $ xfs_growfs -d / │ xfs_growfs: / is not a mounted XFS filesystem │ $ resize2fs /dev/xvda1 : ec2에서 용량 늘려 설정 후 ex4 파일 시스템일 경우 resize2fs 명령어로 적용 │ resize2fs 1.46.5 (30-Dec-2021) │ The filesystem is already 4165883 (4k) blocks long. Nothing to do! │ $ df -h │ Filesystem Size Used Avail Use% Mounted on │ /dev/root 16G 8.1G 7.3G 53% / │ tmpfs 484M 0 484M 0% /dev/shm │ tmpfs 194M 844K 193M 1% /run │ tmpfs 5.0M 0 5.0M 0% /run/lock │ /dev/xvda15 105M 5.3M 100M 5% /boot/efi │ tmpfs 97M 4.0K 97M 1% /run/user/0 │ tmpfs 10M 0 10M 0% /tmp │ $ umount /tmp │ │ 2) 우분투 메모리 늘려주기 │ $ dd if=/dev/zero of=/swapfile bs=128M count=32 : 스왑 파일의 읽기 및 쓰기 권한을 업데이트 │ $ chmod 600 /swapfile : Linux 스왑 영역을 설정 │ $ mkswap /swapfile : 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 │ $ swapon /swapfile : 프로시저가 성공적인지 확인 │ $ swapon -s : /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 시작 │ $ sudo vi /etc/fstab : 재부팅 후에도 적용되도록 파일 끝에 다음 줄을 새로 추가 │ /swapfile swap swap defaults 0 0 │ $ swapon --show │ $ free -h │ - 스왑파일삭제 │ $ swapoff -v /swapfile : 스왑 비활성 │ $ vi /etc/fstab : fstab파일 오픈 │ $ /swapfile swap swap defaults 0 0 : 추가했던 라인 삭제 │ $ rm /swapfile : 스왑 파일 삭제 │ │ 3) apt-get으로 yum, python, java 설치 │ $ apt-get update && sudo apt-get upgrade : apt(Advanced Packaging Tools) 은 리눅스에서 패키지 관리를 담당 │ $ apt-get update : 설치 되어있는 패키지들의 새로운 버젼이 있는지 확인할 때 해당 명령어를 사용합니다 │ $ apt-get upgrade : 위에 있는 apt-get update를 통해서 확인한 패키지들의 최신 버전에 따라서 패키지들의 버전을 업그레이드 해주는 명령어입니다 │ $ apt install yum │ $ apt-get -y install yum │ $ apt update │ $ apt -y install yum │ $ apt-get update │ $ apt-get install yum │ $ apt install python-lzma │ $ apt install python-sqlitecachec │ $ apt install python-urlgrabber │ $ apt install python-pycurl │ $ apt install python-urlgrabber │ $ apt-get install openjdk-11-jdk │ $ javac -version │ $ vi ~/.bashrc │ export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))) │ export PATH=$PATH:$JAVA_HOME/bin │ $ source ~/.bashrc : 현재 실행중인 shell에 즉시 적용 (새로 실행한 shell에서는 필요없음) │ $ echo $JAVA_HOME │ │ 4) Alien 버전업 설치 │ Alien은 레드햇 패키지(.rpm) 를 데비안 패키지(.deb) 로 변환해 주는 프로그램 │ RPM은 RedHat Package Manager 로 Linux Standaard Base의 표준 패키지포맷 중 하나이며, │ 레드헷 계열(Redhat, CentOS, Fedora)계열의 리눅스에서 사용. │ 반면 Debian, Ubuntu 같은 데비안 계열에서는 deb 포맷의 파일을 사용하고, │ apt-get라는 패키지관리도구를 이용하는데, 확장자가 .rpm 인 파일은 apt-get 으로 설치가 되지 않아 │ 이때 Alien을 이용하면 rpm파일을 바로 설치하거나 deb파일로 변환하여 설치가 가능함 │ │ ★ 이전 alien 이 문제가 있어 재설치 ★ │ $ uname -i : 서버 버젼 확인 64 bit │ $ apt-get install -y alien libaio1 unixodbc │ $ apt-get --fix-broken install │ $ apt-get remove alien │ $ curl -O http://archive.ubuntu.com/ubuntu/pool/main/a/alien/alien_8.90_all.deb │ $ dpkg -i alien_8.90_all.deb : dpkg(Debian Package) 패키지 │ │ 5) 오라클 rpm -> dev 변경 │ $ alien --scripts -d oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm : 파일변환 rpm -> deb │ $ alien -i -c -v oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm : 파일변환없이 바로설치 │ $ apt-get install dpkg-dev debhelper build-essential │ $ yum -y localinstall oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm │ │ $ dpkg --install ora*.deb └─────────────────────────────────────────
warning: /home/oracle/install/oracle-database-ee-19c-1.0-1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:oracle-database-ee-19c-1.0-1 ################################# [100%] [INFO] Executing post installation scripts... [INFO] Oracle home installed successfully and ready to be configured. To configure a sample Oracle Database you can execute the following service configuration script as root: /etc/init.d/oracledb_ORCLCDB-19c configure
- 기동화면 $ lsnrctl LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 19-JUN-2022 15:44:05 Copyright (c) 1991, 2019, Oracle. All rights reserved. Welcome to LSNRCTL, type "help" for information.
TNSLSNR for Linux: Version 19.0.0.0.0 - Production System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora Log messages written to /opt/oracle/diag/tnslsnr/ip-172-31-7-255/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 19-JUN-2022 15:44:08 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Default Service XE Listener Parameter File /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora Listener Log File /opt/oracle/diag/tnslsnr/ip-172-31-7-255/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "XE" has 1 instance(s). Instance "XE", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 19-JUN-2022 15:44:08 Uptime 0 days 0 hr. 0 min. 11 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Default Service XE Listener Parameter File /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora Listener Log File /opt/oracle/diag/tnslsnr/ip-172-31-7-255/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "XE" has 1 instance(s). Instance "XE", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully
① It’s been the story of my live (내 삶의 이야기에요) The things I love I have to sacrifice (내가 사랑하는 것들은 내가 희생해야 해요) And now there’s nothing left of me (이젠 내게 남은 건 아무것도 없어) Feeling invisible (보이지 않는 느낌) In need of a miracle (기적이 필요해)
④ [후렴]
② Another castle in the sky (하늘의 또 다른 성) Another dream I have to push aside (내가 밀어내야 하는 또 다른 꿈) And now I kneel before the truth (이젠 진실 앞에 무릎을 꿇고) To face the unthinkable (생각지도 못한 일에 직면했어) Feeling so breakable (깨지기 쉬운 기분)
④[후렴]
③ Trying to forget about you now (이젠 널 잊으려고 해) Trying to move on but I don’t know how (넘어가려고 하는데 어떻게 해야 할지 모르겠어) It’s only love that I feel (내가 느끼는 건 오직 사랑이야)
④[후렴]
④ [후렴] I try to remember, it’s only love (기억하려고 노력하는데, 그건 오직 사랑이야) We had to surrender, there’s no more us (우린 항복해야 했어 우린 이제 없어) The world keeps on turning and I carry on (세상은 계속 돌아가고 난 계속해) The dream of another you (또 다른 너의 꿈) The song that I hold on to (내가 들고 있는 노래는)
① In my search for freedom (자유와 마음의 평화를) And peace of mind (찾아 다니면서) I've left the memories behind (추억들은 뒤로 했어) Wanna start a new life (새로운 삶을 시작하고 싶어) But it seems to be rather absurd (그런데 지금도 늘 당신 생각 하고) When I know the truth (있다는 사실 생각하니) Is that I always think of you (왠지 말도 안되는 짓 같아)
② [Chorus:][후렴:] Someday someway (언젠간 언젠간) Together we will be baby (우리 하나가 될거야, 내 사랑) I will take and you will take your time (나는 내 시간을, 당신은 당신 시간을 갖겠지) We'll wait for our fate (우린 우리 운명을 기다리겠지) Cos' nobody owns us baby (그 누구도 우리를 소유할 순 없으니까) We can shake we can shake the rock (우리는 흔들 수 있을 거야, 바위조차도)
③ Try to throw the picture out of my mind (나 내 마음에서 그 그림을 지우려 해) Try to leave the memories behind (옛 추억들을 잊으려 해) Here by the ocean (여기 바닷가에서) Wave's carry voices from you (파도들은 당신 목소리를 실어 날라) Do you know the truth (당신 혹 이거 알아?) I am thinking of you too (나 역시 당신 생각하고 있다는 거)
④ (repeat Chorus)(후렴 반복) The love we had together (우리가 함께한 사랑은) Just fades away in time (시간과 함께 사라져가) And now you've got your own world (그리고 이제 당신은 당신 세계를 갖고 있고) And I guess I've got mine (난 내 세계를 갖고 있고. 그런 것 같아) But the passion that you planted (하지만 당신이 내 마음 한가운데) In the middle of my heart (심어놓은 열정은) Is a passion that will never stop (그 열정은 절대 멈추지 않을 거야)