μ΄λλ μ°μ°ν μ€λΌν΄ ν΄λΌμ°λ μΈνλΌ(μ΄ν OCI) μμ ν리ν°μ΄ μλΉμ€λ₯Ό μ 곡νλ κ²μ μκ² λμκ³ βλ΄κ° λ§λ μΉ νλ‘μ νΈλ₯Ό μλΉμ€ν μλ²λ₯Ό μ§μ ꡬμΆν΄λ³΄μ!β λΌκ³ κ²°μ¬νλ€. μλν΄λ³Έ κ²μ VM(κ°μλ¨Έμ )μ CentOS λ₯Ό μ€μΉνκ³ docker νκ²½μμ tomcat, nginx, jenkins, MySQL κΉμ§ μΈν
νμ¬ λ³΄μλ€. κ·Έλ¦¬κ³ μΆκ°μ μΌλ‘ λλ©μΈ μ€μ , SSL μΈμ¦μ λ°κΈ, NAS μλ²μ μλ λ°±μ
μ€μ , Github WebHook κΉμ§ μ€μ νμ¬ νλ‘μ νΈ ν
μ€νΈ μ©λμ μΉ μλ²λ‘ μνν μ¬μ©ν μ μλλ‘ μ€μ μ νμκ³ μμ
ν λ΄μ©μ μ 리ν΄λ³΄λ € νλ€.
κΈ°μ‘΄μ μλλ‘μ§ NASμ dockerλ₯Ό μ΄μ©νλ©΄μ λΉμ·ν κ²½νμ ν΄λ΄μ μμν κ±°λΌ μ°©κ°νμ§λ§ κ½€λ 볡μ‘νκ³ μ 리ν λ΄μ©λ λ€μ λΆμ‘±ν κ² κ°λ€.
1. μλΉμ€ κ°μ
κ°μ
μ https://www.oracle.com/kr/cloud/free/ μμ κ°λ₯νλ©° κ°μ
ν λ region μ μμΈλ‘ μ
λ ₯νλΌλ μ΄μΌκΈ°κ° λ§μλ€. μμΈν μ¬νμ λͺ¨λ₯΄κ² μΌλ μΆνμ λ³κ²½μ΄ μ΄λ ΅λ€κ³ νλ μ΄ λΆλΆλ§ 체ν¬νλ©΄ ν¬κ² μ΄λ €μΈ μ¬νμ μμ κ² κ°λ€. κ°μ
ν λ μΉ΄λ μΈμ¦μ κ±°μΉλλ° ννλ‘ 1800μ μ λ κ²°μ λμλ€κ° μλΆ λ΄λ‘ μ·¨μμ²λ¦¬ λμλ€. κ°μ
μ λ§μΉκ³ 15λΆμ λ νμ λ©μΌλ‘ μ¬μ©μ΄ κ°λ₯νλ€λ μλ΄λ₯Ό λ°μ μ μμλ€. (μΉ΄λκ²°μ λ μ΅μμλ ν λ² μ§νλμλ€. μ΄κ² λ§€λ¬ μΉ΄λ μ ν¨μ±μ κ²μ¬νλ κ²μΈκ° μΆκΈ°λ νλ€.)
2. μΈν
2-1. VM μμ±
λ©μΈ νλ©΄μ 보면 ν΄λΌμ°λμμ νμ©ν μ μλ λ€μν κΈ°λ₯λ€μ΄ μλλ° μ΄μ€μμ VM instanceλ₯Ό μ ννλ€.

μ ν νμ κΈ°λ³Έμ μΈ μΈν μ ν μ μλ νμ΄μ§κ° λμ€λλ°, λ€μ νλͺ©λ€μ μ ννμλ€.
- name: μΆν κ΄λ¦¬μ μ©μ΄νλλ‘ μλ³ν μ μλ μ΄λ¦ μ§μ
- image: βAlways Free-eligibleβ μ€μ μ ννλ©΄ λλλ° CentOS 8μ μ ννκ³ νΉλ³ν μ΄μ λ μλ€.
- networking: βPublic IP addressβ μ²΄ν¬ (μΈλΆ μ μμ μν΄ νμ)
- ssh-keys: SSH μ μμ μν΄ νμνλ λ°λμ λ€μ΄λ‘λνμ¬ μμ ν κ³³μ 보κ΄
- volume: βSpecify a custom boot volume sizeβ μ ν ν 50GB μ€μ
μ€μ μ λ§μΉ νμ create λ₯Ό νλ©΄ λλ€.




2-2. λμ보λ νμΈ
μ€μΉλ₯Ό λ§μΉ ν λμ보λμμ 곡μΈμμ΄νΌμ username μ 체ν¬νλ€. (SSH μ μμ νμ)

Subnet > Security Lists > Ingress Rules > Add Ingress rules μμ 22 ν¬νΈ(http)μ 443 ν¬νΈ(https) 3306ν¬νΈ(SQL)λ₯Ό κ°λ°©ν΄μ£Όκ³ μΆκ°μ μΌλ‘ νμν ν¬νΈκ° μλ€λ©΄ λ§μ°¬κ°μ§λ‘ κ°λ°©ν΄μ€λ€.

2-3. SSH μ μ
2-3-1. SSH μ μ
λ§₯μμλ ν°λ―Έλμμ ssh μ μμ΄ κ°λ₯νλ€.(μλμ°λ ssh ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨ λ€μ΄λ‘λ νμ) μκΉ λ€μ΄λ°μ ssh-keyκ° μμΉν λλ ν λ¦¬λ‘ μ΄λν΄μ ssh μ μμ μλνλ€.
# ssh-keyκ° μ μ₯ λ κ²½λ‘λ‘ μ΄λ
cd oracle_cloud
# ssh μ μ μλ
ssh -i ssh-key.key μμ΄λ@곡μΈμμ΄νΌνΉμλ κΆνλ¬Έμ λ‘ μ€λ₯κ° λ°μνλ€λ©΄ λλ ν 리μ ssh-key κΆνμ μμ νκ³ λ€μ μλν΄μ€λ€.
# ssh-key λλ ν 리
chmod 0700 oracle_cloud
# ssh-key νμΌ
chmod 0400 ssh-key.key2-3-2. λ£¨νΈ λΉλ°λ²νΈ λ³κ²½
ssh μ μμ΄ μλ£λμλ€λ©΄ λ£¨νΈ λ° μ μ λΉλ°λ²νΈλ₯Ό μ€μ ν΄μ€λ€.
# 루νΈ
sudo passwd root
# μ μ
sudo passwd opc2-3-3. ssh-key μμ΄ λ‘κ·ΈμΈ μ€μ
μ΄ν ssh-key μμ΄ λΉλ°λ²νΈλ₯Ό μ΄μ©ν μ μμ μν΄μλ sshd_config νμΌ μμ μ΄ νμνλ€.
# /etc/ssh λλ ν 리 μ§μ
cd /etc/ssh
# μλ³ΈνμΌ λ°±μ
sudo cp sshd_config sshd_config.bak
# μλν° μ§μ
sudo nano sshd_configμλν°λ‘ μ§μ νλ©΄ βPasswordAuthenticationβ νλͺ©μ μ°Ύμ yesλ‘ μ€μ νλ€. (default: no)

μ΄ν sshdλ₯Ό μ¬μ€ν ν΄μ€λ€.
sudo service sshd reload2-4. 리λ μ€ λ°©νλ²½ μ€μ
리λ μ€μ κΈ°λ³Έμ μΌλ‘ iptables λΌλ λ°©νλ²½μ΄ μ€μ λμ΄ μλ€λλ°, μ€λΌν΄ ν΄λΌμ°λμ μ체μ μΈ λ°©νλ²½μ΄ μμΌλ νμνλ€λ©΄ μ€μ§ν΄λ λλ€κ³ νλ€. λ΄μ©μ μ λͺ°λΌ κ·Έλλ‘ λλ €νλ€κ° μλν΄λ΄€λλ° μκ°λ³΄λ€ μ λ₯Ό λ§μ΄ λ¨Ήμλ€.
# μ€μ§
sudo systemctl stop iptables
sudo systemctl stop ip6tables
sudo systemctl stop firewalld
# λΉνμ±ν
sudo systemctl disable iptables
sudo systemctl disable ip6tables
sudo systemctl disable firewalld
# λμ€μ νμνλ©΄ unmask
sudo systemctl mask iptables
sudo systemctl mask ip6tables
sudo systemctl mask firewalld
# μ€μ§ νμΈ
systemctl list-unit-files | grep iptables
systemctl list-unit-files | grep fire
systemctl status firewalld2-5. yum μ λ°μ΄νΈ
CentOS λ₯Ό μ€μΉνλ©΄μ ν¨ν€μ§ κ΄λ¦¬μκ° yum(dnf), rpm, deb, apt-get, dpkg λ± λ€μνκ² μ‘΄μ¬νλ€λ κ²μ μκ² λμλ€. λ§₯μμ homebrewμ κ°μ μν μ΄μ§ μμκΉ μΆλ€.
sudo yum update
sudo yum upgrade2-6. μλ² νμμ‘΄ μ€μ & bash νκΈ μ€μ
μ€μΉ μ΄κΈ°μλ μκ°λκ° GMT κΈ°μ€μ΄κΈ° λλ¬Έμ λ‘κ·Έμ μκ°μ΄ μ΄μνκ² λμ¨λ€. νμμ‘΄μ GMT +9 λ‘ λ³κ²½ν΄μ€λ€.
# νμμ‘΄ μ€μ
sudo timedatectl set-timezone Asia/Seoul
# μ€μ νμΈ
timedatectl.bashrc νμΌμ μμ νλ©΄ bash μμ νκΈμ΄ κΉ¨μ§μ§ μκ³ μ μμ μΌλ‘ μ λ ₯λλ€.
vi ~/.bashrc
# μλ λ΄μ©μ νλ¨μ μ½μ
LANG=ko_KR
export LANG2-7. λ°±μ μ€μ (μ ν)
λ¬΄λ£ μλΉμ€κΈ° λλ¬Έμ μΈμ κ°μκΈ° μλΉμ€κ° μ’ λ£λ μ§ λͺ¨λ₯Έλ€κ³ μκ°ν΄ μλλ‘μ§ μλ²μ μλ£λ₯Ό μ£ΌκΈ°μ μΌλ‘ λ°±μ ν μ μλλ‘ μ€μ νλ€. μλΉμ€ μ’ λ£ μ°λ € μΈμλ λ°±μ λ°μ΄ν°κ° μμΌλ©΄ λ§μμ΄ λ λ ν΄μ§λ κ°κΈμ μΈν νλ κ²μ΄ μ’μ κ² κ°λ€.
μλλ‘μ§ 6λ²μ μμ μμ νκ³ λ€μ λ΄μ©μ΄ 볡μ‘νλ€.
2-7-1. μλλ‘μ§ μ€μ
rsync νμ±ν
μ μ΄ν > νμΌ μλΉμ€ > rsync μμ μλΉμ€λ₯Ό νμ±ν νκ³ ν¬νΈλ₯Ό μ§μ ν΄μ€λ€. (μ¬μ€IPλ₯Ό μ¬μ©νλ€λ©΄ ν΄λΉ ν¬νΈ ν¬μλ© λ±μ΄ νμν μ μμ)

κ³μ μμ±
rsync μΈμ κΆνμ μ΅μν νκΈ°μν΄μ μ μ© κ³μ μ λ§λ€μ΄ μ£Όμλλ° λ³΄μμ μ κ²½μΈκ² μλ€λ©΄ κΈ°μ‘΄ κ³μ μ κ·Έλλ‘ μ¬μ©ν΄λ λλ€. κ³μ μ μλμ κ°μ κΆνμ λΆμ¬ν΄μ€λ€.
-
administrators κ·Έλ£Ή λΆμ¬ (ssh μ€μ μ΄ν κ·Έλ£Ήμμ μ μΈν μμ )
-
βhomesβ λ° βNetBackupβ λλ ν 리 μ κ·Ό κΆν λΆμ¬
-
rsync κ³μ μΆκ° λ° λΉλ°λ²νΈ μ§μ




ssh μ€μ
μΆν rsync μ§νν λ λΉλ°λ²νΈ μμ΄ μ μ₯ λ μΈμ¦ν€λ‘ μ μμ μ€μ νκΈ° μνμ¬ sshλ₯Ό μ μ μ€ννμμΌλ©° νΈμμ rsyncμ λμΌν ν¬νΈλ‘ ꡬμ±νμλ€.

2-7-2. OCI μ€μ
OCI μλ²μ ssh μ μμ νμ¬ ssh-keyλ₯Ό μμ±ν΄μ€λ€.
[root@centos8 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
***************************************************** root@centos8
The key's randomart image is:
+---[RSA 3072]----+
| . . |
| + * . |
| . B * . |
| . @ = |
| ..B S o |
| ..=oB.B |
| .. *=+.Bo. |
|o+ Eooo.o. |
|.o=. . .o. |
+----[SHA256]-----+κ·Έλ¦¬κ³ μλ λͺ λ Ήμ΄λ‘ ssh-keyμ λ΄μ©μ μλλ‘μ§ μλ²μ authorized_keysμ μΆκ°νμ¬ μ€λ€.
[root@centos8 ~]# cat ~/.ssh/id_rsa.pub | ssh -p ν¬νΈλ²νΈ rsync@μλλ‘μ§μ£Όμ "cat >> .ssh/authorized_keys"2-7-3. λ€μ μλλ‘μ§ μ€μ
μ΄νμ μλλ‘μ§ μλ²μ ssh μ μμ νμ¬ λ€μμ²λΌ μ κ·Ό κΆνμ λ³κ²½ν΄μ€λ€. (κΆνμ€μ μ λ°λΌ νμΌμ΄ μ‘΄μ¬ν¨μλ λΆκ΅¬νκ³ μ μμμ λΉλ°λ²νΈλ₯Ό μꡬν μ μλ€.)
rsync@Taedi_NAS:~$ sudo chmod 755 /var/services/homes/rsync
rsync@Taedi_NAS:~$ sudo chmod 700 /var/services/homes/rsync/.ssh
rsync@Taedi_NAS:~$ sudo chmod 600 /var/services/homes/rsync/.ssh/authorized_keysκ·Έλ¦¬κ³ sshd_config νμΌμ μμ νμ¬ μΈμ¦ν€λ‘ λ‘κ·ΈμΈμ΄ κ°λ₯νλλ‘ μ€μ μ μμ ν΄μ€λ€.
# sshd_config νΈμ§ μ§μ
sudo vi /etc/ssh/sshd_config# μμ ν λ΄μ©
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysκ·Έλ¦¬κ³ sshd μ¬μμνλ©΄ λλ€.
# sshd_config μ¬μμ
sudo synoservicectl --restart sshdμ΄ν μλλ‘μ§ μ μ΄νμμ ssh λ₯Ό λΉνμ±ν νκ³ λ€μ νμ±ν νλ©΄ μ μμ΄ κ°λ₯νλ€.
2-7-4. rsync ν μ€νΈ
CentOS μλ² ssh μμ λ€μ λͺ λ Ήμ΄λ₯Ό μ¬μ©νμ λ λΉλ°λ²νΈ μ λ ₯μμ΄ λ°±μ μ΄ μμλλ€λ©΄ μ€μ μ΄ μλ£ λ κ²μ΄λ€. (λ³ΈμΈμ μ΄ν μλλ‘μ§ ssh νμ±ν ν΄μ λ° rsync μμ΄λμ κ΄λ¦¬μ κΆν ν΄μ νμλ μ μμ μΌλ‘ λμνμ)
# CentOS '/'ν΄λ νμμ λ΄μ©μ μλλ‘μ§ 'NetBackup/backup/'κ²½λ‘μ 볡μ¬
rsync -av -e 'ssh -p μλλ‘μ§_ν¬νΈ' / μμ΄λ@μλλ‘μ§_μ£Όμ::NetBackup/backup/μμ
μ μ€κ°μ μ’
λ£νλ €λ©΄ ctrl + c λ²νΌμ λλ₯΄λ©΄ λλ€.
2-7-5. crontab λ±λ‘
ν¬λ‘ νμ μ€μ νλ©΄ μλμ° μμ μ€μΌμ€λ¬ μ²λΌ νΉμ μκ°λ§λ€ λ°λ³΅μ μΌλ‘ μ 무λ₯Ό μ§μν μ μλ€.
# ν¬λ‘ ν νΈμ§
crontab -eν¬λ‘ νμ λ°©κΈμ ν μ€νΈ νλ λͺ λ Ήμ΄λ₯Ό λ§€μΌ 7μμ μ€νν μ μλλ‘ μ€μ ν΄μ£Όμλ€. (vi μλν° μμ λͺ¨λλ insertν€, μ μ₯μ :wq, μ μ₯μμ΄ λκ°λ €λ©΄ :qa!)
* 7 * * * rsync -av -e 'ssh -p μλλ‘μ§_ν¬νΈ' / μμ΄λ@μλλ‘μ§_μ£Όμ::NetBackup/backup/