Project
[Mini_Project] AWS Cloudλ₯Ό νμ©ν Web,NFS,DB μλ² κ΅¬μΆ
cumo
2025. 3. 14. 11:06
π 1. νλ‘μ νΈ κ°μ
λ€νΈμν¬ κ΅¬μ±λ
νλ‘μ νΈ λͺ©μ
- μ¨νλ λ―Έμ€ μλ²μ λ€μν κΈ°λ₯λ³ κ΅¬μΆμ μννκ³ μ νλ€. κ³ κ°μ μΉ νμ΄μ§λ₯Ό λ§λ€μ΄ μμ¬μ 컨ν μΈ λ₯Ό μλΉμ€νκ³ μΆμ΄νλ©°, μΉ λ©μΌ ꡬνμ ν΅ν΄ μ΄λ©μΌμ μμ¬ μλ²λ₯Ό ν΅ν΄ μμ½κ² μ¬μ©νκ³ μ νλ€.
- κ°μ’ νμΌ μλ²λ₯Ό ꡬννμ¬ κΈ°μ’ μ λ°μ΄λμ νΈλ¦¬ν νμΌ κ³΅μ μμ€ν μ ꡬμΆνκ³ μ νλ€.
- μ΄μ λ°λΌ μ£Όλ¬Έ μ¬μμ λ§λ μλ² κ΅¬μ±μ ν΅ν΄ μ μ ν κΈ°λ₯μ ꡬννκ³ κ°κ° ꡬνλ λ€λ₯Έ μλ² κΈ°λ₯κ³Ό μ°κ²°νμ¬ μνλ μλΉμ€λ₯Ό μ 곡νλ €κ³ νλ€.
- 리λ μ€ λ° μ λμ€ κ³μ΄μ μμ€ν κ° μ¬λ¬ λμ μλ²μ λμΌν μμ μ μνν μ μκ³ μΌκ΄μ± μ μ§λ₯Ό ν μ μλλ‘ μ루μ μ±ν
- βΆ μ루μ μ¬ν
λ보기
- μμ μ μκΈ°ν μν© 1μ 5λ² μΉ μλ² κ΅¬μΆ μμ μ€ μΉ μλ² μ€μ μ μλν
- AWSλ₯Ό μ΄μ©ν EC2 2λλ₯Ό μμ±νκ³ ν΄λΉ EC2λ€μ μν₯μ λ―ΈμΉλλ‘ μ°κ²° λ° κ΅¬μ±(EC2κ° μ€μλΈ λ Έλ, μ¦ μΉ μλ²κ° λλλ‘ κ΅¬μ±νλ©° μΈλΆμμ μ μμ΄ κ°λ₯νλλ‘ κ΅¬μ±)
- νλ μ΄λΆ μ€ν μ Ansible μμ μν κ° λΉλ°λ²νΈ μ΅μ (-k)μ΄ μμ΄ μνλλλ‘ κ΅¬μ±
- Ansible Playbookμ νμ©νμ¬ λ Έλμ λ€μκ³Ό κ°μ μμ μ μν
- μμ κ° ‘νλ μ΄λΆ’μ μμ±νμ¬ μμ μ΄ νμΌ ν κ°μ μ¬μμ ν΅ν΄ μνλλλ‘ κ΅¬μ±
- μμ± μ μμΈ νμμ‘΄μΌλ‘ λ Έλκ° λ³κ²½λλλ‘ μν
- λ Έλλ€μ ansibleuserλΌλ μ΄λ¦μ μ μ λ₯Ό μμ± λ° ansibleuserμ λΉλ°λ²νΈ λν ‘ansible’λ‘ μλμ μΌλ‘ μ λ ₯λλλ‘ κ΅¬μ±
- μ€μλΈ λ Έλκ° μΉ μλ²κ° λλλ‘ κ΅¬μ±
- μ μλ μΉ μλ² κ΅¬μ±κ³Ό λλΆμ΄ μ€μλΈ μλ² – λ Έλ κ° μλ ꡬμ±λμ΄ ν΄λΌμ΄μΈνΈμμ μλ²λ₯Ό ν₯ν΄ μ°κ²°μ΄ κ°λ₯ν μμμ ννμ νλ‘ν μ½ ν κ°λ₯Ό μ μ νμ¬ μμ λ‘κ² κ΅¬μ±(e.g. NFS, SAMBA, Telnet, FTP λ±)
- λͺ¨λ μμ μ΄ μλ£λ ν Ansibleμ ν΅ν ꡬμ±μ΄ μλ£λμλμ§ νμΈν μ μλλ‘ Ansibleμ ν΅ν΄ νμμ‘΄, μ μ νν©, μΉ μλ² κ°λ μ¬λΆμ λν κ²°κ³Ό, μμ λ‘κ² κ΅¬μΆν νλ‘ν μ½μ μλ κ²°κ³Ό λ±μ λν λμΆ ν ν΄λΉ κ²°κ³Όλ¬Όμ μ μ₯νμ¬ νμΌλ‘ 보κ΄
- κ΅¬μ± κ° νμν κ²½λ‘, κΆν, λ°©λ² λ±μ μμλ‘ μ€μ
μ£Όμ κΈ°λ₯
- μλ² 1 : μΉ μλ²(μλνλ μ€ λ±μ CMS), DB μλ²(λͺ¨λ DBλ₯Ό ν΄λΉ μλ²μ ν΅ν©)
- μλ² 2 : DNS μλ², SAMBA μλ², NFS μλ²
- μλ² 3 : λ©μΌ μλ² 1, μΉ λ©μΌ ν΄λΌμ΄μΈνΈ, FTP μλ²
- μλ² 4 : λ©μΌ μλ² 2, μΉ λ©μΌ ν΄λΌμ΄μΈνΈ, μΉ λ¦¬ν¬μ§ν°λ¦¬ μλ²
- μλ² 5 : μ€μλΈ μλ², μ€μλΈ λ Έλ κ° 1λ(EC2 2λλ₯Ό μ€μλΈ μλ² λ° λ Έλλ‘μ μν₯μ μ£Όμ΄ μλν, μμΈ μ¬νμ μν© 2 μ°Έμ‘°)
κΈ°μ κ°μ
- μ΄μ체μ : Ubuntu Server, CentOS, Debian
- μλ² μ΄μ©: Samba, WordPress, FTP, rcm, evolution, Maria DB
- μλ² μμ°: AWS EC2, Router, Switch
- κΈ°μ μ€ν: Ansible, Nginx, MySql
Server 1
WEB μλ² κ΅¬μ±
dnf -y install httpd php*
systemctl restart httpd
wget https://wordpress.org/latest.zip #μλνλ μ€ ν¨ν€μ§ λ€μ΄
WEB μλ² μ€μ
DB μλ² μ°λ
dnf -y install mariadb-server
mysql
λ°μ΄ν°λ² μ΄μ€μ€μ
CREATE DATABASE reputabledb; GRANT ALL PRIVILEGES ON reputabledb.*
TO reputableuser IDENTIFIED BY 'rocky'; FLUSH PRIVILEGES;
CREATE DATABASE mail; #μ°λν λ©μΌ μλ² Database μμ±
CREATE DATABASE WEB; #μ°λν WEB μλ² Database μμ±
CREATE DATABASE
Server 2
βΆ DNS Server :
[root@localhost ~]#dnf –y install bind
[root@localhost ~]#vi /etc/named.conf
(11λ²μ§Έ ν = any, 12λ²μ§Έ ν = none, 19λ²μ§Έ ν =any)
[root@localhost ~]#vi /etc/named.rfc1912.zones (μ‘΄νμΌ μμ±)
[root@localhost ~]#cd /var/named
[root@localhost ~]#cp named.empty daum1.com.zone
[root@localhost ~]#chgrp named daum1.com.zone
[root@localhost ~]#vi daum1.com.zone (daum1.com μ‘΄ νμΌ κ΅¬μ±)
[root@localhost ~]#vi /etc/named.rfc1912.zones
[root@localhost ~]#vi my.rev (리λ²μ€ μ‘΄νμΌ)
230 PTR ns.daum1.com.
230 PTR www.daum1.com.
[root@localhost ~]#systemctl restart named
[root@localhost ~]#systemctl enable named
[root@localhost ~]#vi /etc/resolv.conf
Samba μλ² κ΅¬μΆ
[root@localhost ~]#dnf –y install samba-clinet
[root@localhost ~]#vi /etc/samba/smb.conf
[root@localhost ~]#useradd shared
[root@localhost ~]#passwd shared
[root@localhost ~]#smbpasswd –a share
[root@localhost ~]#group smbgroup
[root@localhost ~]#mkdir /share
[root@localhost ~]#chown smbuser.smbgroup /share
[root@localhost ~]#chmod 770 /share
[root@localhost ~]#systemctl restart smb
[root@localhost ~]#systemctl restart nmb
Server 3
βΆ mail Server :
dnf -y install sendmail dovecot
/ Sendmail SMTP νλ‘ν μ½μ μ΄μ©νμ¬ λ©μΌμ μ£Όκ³ λ°λ ν΅μ¬ μλ²
/ Dovecot μ¬μ©μμ λ°μ νΈμ§ν¨(λ©μΌλ°μ€)κ³Ό μ°κ²°νλ μν
#vi /etc/mail/sendmail.cf
85ν
Cwdaum1.com
#vi /etc/mail/local-host-names
mail.daum1.com
hostnamectl set-hostname mail.daum1.com #νΈμ€νΈ μ΄λ¦ λ³κ²½
exec bash
#vi /etc/mail/access
daum1.com RELAY
10.0.1 RELAY
dovecot μ€μ
systemctl start dovecot
#vi /etc/dovecot/dovecot.conf
24ν μ£Όμ μ κ±°
30ν μ£Όμ μ κ±°
33ν μ£Όμ μ κ±°
#vi /etc/dovecot/conf.d/10-mail.conf
25ν μ£Όμ μ κ±°
121ν mail_access_groups = mail
systemctl restart sendmail dovecot
firewall-cmd --add-service=imap
firewall-cmd --add-service=smtp
firewall-cmd --add-service=pop3
firewall-cmd --add-service=imaps
firewall-cmd --add-service=smtps
firewall-cmd --add-service=pop3s
firewall-cmd --runtime-to-permanent
useradd mailuser1
passwd mailuser1
vi /etc/resolv.conf
nameserver 10.0.1.99 # μΈλΆ DNS μλ² IP (μ: dns.example.com)
μΉ λ¦¬ν¬μ§ν°λ¦¬
dnf –y install httpd
mkdir /var/www/html/repo
dnf –y install yum-utils createrepo
reposync –m –repoid=baseos –newest-only –download
-metadata –p /var/www/html/repo
createrepo –g comps.xml /var/www/html/repo/baseos
Server 4
- Server 3λμΌ κ΅¬μ±
Server 5
Ansible File
---
- name: Solution / install web, change timezone, NFS server
hosts: cloud
become: yes
tasks:
# νμμ‘΄ λ³κ²½
- name: Change timezone
timezone:
name: Asia/Seoul
# μ μ μΆκ°
- name: useradd
user:
name: ansibleuser
password: ansible
# μμλΈ λ
Έλ μΉ μλ²λ‘ ꡬμ±
- name: Install httpd php*
dnf:
name: "{{ item }}"
state: latest
with_items:
- httpd
- php
- name: start httpd
service:
name: httpd
state: started
enabled: yes
# WEB νμ΄μ§ μμ±
- name: Deploy index.php template
template:
src: ~/index.php.j2
dest: /var/www/html/index.php
vars:
title: "ν΄λΉ νμ΄μ§λ Node1μ μ°κ²°λμ΄ μλ νμ΄μ§ μ
λλ€."
heading: "ν΄λΉ νμ΄μ§λ Node1μ μ°κ²°λμ΄ μλ νμ΄μ§ μ
λλ€."
message: "Name EC2-node1"
when: ansible_host == "3.39.22.9"
# WEB νμ΄μ§ μμ±
- name: Deploy index.php template
template:
src: ~/index.php.j2
dest: /var/www/html/index.php
vars:
title: "ν΄λΉ νμ΄μ§λ Node2μ μ°κ²°λμ΄ μλ νμ΄μ§ μ
λλ€."
heading: "ν΄λΉ νμ΄μ§λ Node2μ μ°κ²°λμ΄ μλ νμ΄μ§ μ
λλ€."
message: "Name: EC2-node2"
when: ansible_host != "3.39.22.9"
# NFS μλ² μ€μ
- name: install nfs server
dnf:
name: nfs-utils
state: latest
- name: start nfs server
service:
name: nfs-server
state: started
enabled: yes
- name: create nfs directory
file:
path: /nfsserver
state: directory
mode: 0777
- name: export nfs directory
lineinfile:
path: /etc/exports
line: "/nfsserver *(rw,sync,no_root_squash)"
- name: start nfs server
service:
name: nfs-server
state: restarted
- name: make testfile
file:
path: /nfsserver/testfile
state: touch
# NFS ν΄λΌμ΄μΈνΈ μ€μ
- name: make directory
file:
path: /nfsclient
state: directory
- name: install nfs-utils
dnf:
name: nfs-utils
state: latest
- name: mount to nfs server
mount:
path: /nfsclient
src: 13.125.251.142:/nfsserver
fstype: nfs
state: mounted