본문 바로가기

KOSA 클라우드 솔루션즈 아키텍트 양성과정

[5.2] WordPress설치 , IIS와 PHP연동, DNS, DB, NFS, SAMBA 등 설치

<수업 전 간단 정리>

* NAT Gateway : AWS의 서비스 이름으로 원래 이름은 NAT

* 라우터(Router) : 경로를 설정해주는 장치 Router에 NAT가 포함됨

* L7스위치 : 글을 읽을 줄 안다 (크롬 사용자인지 IE사용자인지 firefox사용자인지 판단해서 스위치 관리)

=> 콘텐츠를 라우팅하는 장치일뿐, 부하를 분산하는 로드밸런서 역할은 아니다. (L4기능의 로드밸런서 기능도 있다.)

* ESXi는 프라이빗 클라우드가 이니라고 할 수도 있지만, OpenStack은 충분히 프라이빗 클라우드라고 할 수 있다.

* 테넌트 : ESXi실습할 때, 옆에서 나의 ESXi IP를 사용하는 사람이 테넌트(임차인)이 된다.

 


1. SWITCH

포트그룹

* EXTERNAL은 vSwitch0 포트그룹의 이름

* INTERNAL은 vSwitch1 포트그룹의 이름

* 나머지 vm도 네트워크 어댑터 INTERNAL로 연결되어 있는지 확인

 

네트워킹 -> 가상스위치

* 물리적 랜카드를 업링크라고 한다.

 

vSwitch0

* 물리적 어댑터를 업링크(Uplink)라고 하고, 여기에 있는 포트그룹을 업링크 포트그룹이라고 한다.

* 안쪽의 포트 그룹 두 개

* Management Network 포트그룹은 관리를 위한 IP를 설정하고 있는 포트그룹(원래부터 존재)(web관리 IP가 설정되어 있다.)

* NAT가 설정되지 않으면 내부 네트워크의 vm들은 보안상의 이유로 격리되어 있는 네트워크이라서 통신이 되지 않는다.

* 내가 정할 수 있는 EXTERNAL 포트그룹에서 NAT_GW가 두 개의 랜카드를 가지고 있는데 하나는 EXTERNAL 하나는 INTERNAL에 연결되어 있다.

 

vSwitch1

* EXTERNAL 포트그룹에는 master1(NAT), INTERNAL포트그룹에도 master1(NAT) 양쪽의 포트그룹에 연결되어 있다.

 


2. 포트포워딩 후 web01, web02, db서버로 키를 이용해 접속하기

 

2.1 포트포워딩

# firewall-cmd --permanent --zone=external --add-forward-port=port=221:proto=tcp:toport=22:toaddr=10.0.13.2
# firewall-cmd --permanent --zone=external --add-forward-port=port=222:proto=tcp:toport=22:toaddr=10.0.13.4
# firewall-cmd --permanent --zone=external --add-forward-port=port=223:proto=tcp:toport=22:toaddr=10.0.13.3

 

2.2 키를 통한 접속

# ssh-copy-id -p 221 -i id_rsa.pub root@192.168.0.40

# ssh-copy-id -p 222 -i id_rsa.pub skk@192.168.0.40

# ssh-copy-id -p 223 -i id_rsa.pub root@192.168.0.40

 

2.3 timeout Error가 나오면??

# 내외부 인터페이스가 분리되어 있는지 다시 한 번 확인

# nmcli c mod ens192 connection.zone external
# nmcli c mod  ens224 connection.zone internal

# firewall-cmd --get-active-zone (내외부 인터페이스 분리 확인)


3. web03(윈도우2012)와 db(마리아DB) 포트포워딩

web03, MariaDB 포트포워딩

* 윈도우 포트 3389번과 마리아DB포트 3306번 포트포워딩 해주기

* 앞에 포트가 들어가는 포트고, 뒤에 포트가 들어가고자 하는 곳의 포트

 

3.1 3389번 포트로 포트포워딩 안 될 때

vmware윈도우 검색창에서 윈도우 버튼 누르고 돋보기 클릭 후 그림과 같이 검색

 

port만 체크 후 Next

* Inbound Rules 클릭 후 우측의 New Rules에서 New Rule... 들어가서 설정하기

Allow the connection만 체크 후 Next
전부 체크 후 Next
Remote Desktop Protocol

* 프로토콜 이름 지어주기 3389번 포트는 RDP로 80번 포트는 http로 지어주기(이름은 임의로 정의 가능)

* 동일한 방식으로 http 포트 80번도 열어주기

 


3. DNS서버 설정 (resolv.conf파일의 초기화 현상 포함)

순방향 zone파일

* IN NS ns.skk.shop과 ns IN A 10.0.13.1은 한 세트라고 보면 된다.

* IN NS ns.skk.shop에서 ns를 dns라고 하면 ns IN A 10.0.13.1에서도 ns를 dns라고 한다.(임의로 정의 가능하지만 일반적으로 ns로 지정함)

* MX는 메일서버를 의미한다(Mail Exchanger)

 

* DNS1과 DNS3을 추가해준다.

* 내가 만든 DNS가 우선순위가 될 수 있도록 PEERDNS를 no라고 넣어 준다.

 

/etc/resolv.conf파일에 DNS주소 넣어준 상태

* /etc/sysconfig/network-scripts/ifcfg-ens192에서 넣어준 DNS주소가 reslov.conf파일에 들어간다.

* 이렇게 주소를 넣어주어야 DNS설정이 완료되는 것

* 만약 그래도 ping이 안 되면 계속해서 dns를 리스타트 해주면 된다.

* 그래도 또 안 되면, web02(우분투)에서 sudo apt install resolvconf로 resolvconf를 설치한다.

* 설치 후  vi /etc/resolvconf/resolv.conf.d/head로 들어가서 nameserver 10.13.0.1로 dns의 IP를 넣어준다.

* systemctl restart resolvconf.service 넣고 엔터

* 패스워드 입력하면 됨

 


MariaDB 설치

* mysql_secure_installaion할 때, 전부 Y해도 되는데, 실습에서는 root사용자로 원격에서 접속가능하게 하는 항목에 n라고 함

 

MariaDB내에 사용자 및 사용자 테이블 만들기
방화벽 서비스 항목에 mysql 추가

* 방화벽에 mysql서비스 항목 추가 후 포트 번호 확인

* 3306 포트가 추가되어 있는 것 확인 가능

 


4. db서버 설정

vi /etc/samba/smb.conf

* 리눅스 베이스에서는 workgroup 이름을 변경할 필요 없다.

vi /etc/samba/smb.conf

* 마지막에 [share]항목 추가

 

윈도우에서 samba 설치 잘 되었는지 확인
호스트 윈도우에서 SAMBA를 이용하기 위한 포트포워드

* firewall-cmd --reload까지 해주기

 

Window에서 share폴더 접속

* \\192.168.0.40(NAT의 외부랜 IP)를 시작줄 검색창에 입력 후 접속

* 여기서 wordpress 압축파일을 넣으면 web03(WIN2012)에서도 확인 가능

 

web03(WIN2012)

* web03(WIN2012)에서 호스트 윈도우에서 공유한 wordpress 압축파일 확인 가능

 


5. NFS서버 설치 (db서버에 설치)

* yum install -y nfs-utils : nfs서버도 설치하고 클라이언트도 설치할 수 있는 명령어니까 잘 알아두기

 

공유폴더 만들기

* share폴더를 만든 동시에 share폴더로 입장

 

exports파일은 비어있음

* 비어있는 exports 파일에 특정 사용자가 접근할 수 있게 정의

* /share *(rw,sync)로 누구나 접근할 수 있게 할 수도 있다.

이후에 아래와 같이 nfs서버를 시작해주고 exportfs를 통해 제대로 들어갔는지 확인하고 방화벽에 서비스 항목 세 가지 추가

# systemctl enable --now nfs-server
# exportfs -v (현재의 export리스트 확인=접근할 수 있는 IP주소의 리스트)

# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload

 

5.1 nfs 클라이언트 설치(nat, web01, web02, web03)

* 클라이언트까지 yum install -y nfs-utils 명령어로 nfs 클라이언트 설치

* 마운트가 가능한 상태인 것 확인

 

* share폴더 만든 후 share폴더로 마운트 한다.

* mount -t nfs db.skk.shop:/share share 여기에서 앞의 /share는 nfs서버의 share폴더 뒤의 share는 현재 nat에서 새로 만든 share폴더를 의미

* df -h의 맨 마지막 줄에서 마운트된 것 확인 가능

 

fstab백업 해놓기

* fstab 백업파일 만든 후 echo 명령어를 사용

* "db.skk.shop:/share /root/share nfs defaults 0 0"을 /etc/fstab에 넣으면, 리부트 해도 마운트 정보가 유지된다.

* 같은 과정을 web01, web02, web03에도 반복하여, nfs서버의 클라이언트로 만들어 주기(web02우분투는 조금 다르니까 밑에 설명)

 

5.2 Ubuntu에서 nfs클라이언트 설치(CentOS7과 크게 다르지는 않다.)

$ sudo apt update 
$ sudo apt install -y nfs-common

$ sudo showmount -e db.skk.shop

$ mkdir share

$ sudo mount -t nfs db.skk.shop:/share /home/skk/share

$ df -h
$ sudo cp /etc/fstab /etc/fstab.bak 
$ vi /etc/fstab
db.skk.shop:/share /home/skk/share nfs defaults 0 0

 

 


6. 최신 버전의 WordPress 설치 - web02(Ubuntu)

$ sudo apt update && sudo apt upgrade -y 

$ sudo apt install -y nginx php7.2 php7.2-mysql php7.2-mbstring php7.2-gd php7.2-fpm wget unzip

$ sudo mkdir -p /var/www/html/wordpress/public_html : 원래  /var/www/html이 html 루트폴더지만, 사용자가 public_html를 wordpress 루트폴더로 정의해주는 것

$ cd /etc/nginx/sites-available : sites-available에도 wordpress.conf를 만들고,  하단의 코드를 입력

_______________________________________________________________________________

_______________________________________________________________________________

 

server {
            listen 80; #웹서버를 위해 디폴트 포트 80번 포트를 이용할 것이다.
            root /var/www/html/wordpress/public_html; #/var/www/html/wordpress/public_html를 루트폴더로 이용할 것
            index index.php index.html;  # index.php와 index.html 중 index.php를 먼저 읽겠다는 의미(우선순위)
            server_name nat.johnlee.shop; # nat.skk.shop 도메인으로 들어오는 접근만 허용하겠다는 접근제어

    access_log /var/log/nginx/SUBDOMAIN.access.log; # 접근로그를 남김. SUBDOMAIN은 이름 임의로 정의 가능
         error_log /var/log/nginx/SUBDOMAIN.error.log; # 에러로그를 남김. SUBDOMAIN은 이름 임의로 정의 가능

            location / {
                         try_files $uri $uri/ =404; # 애러 페이지를 꾸밀 수 있는 코드
            }

            location ~ \.php$ {
                         include snippets/fastcgi-php.conf;
                         fastcgi_pass unix:/run/php/php7.2-fpm.sock;
            }
            
            location ~ /\.ht {
                         deny all;
            }

            location = /favicon.ico {
                         log_not_found off;
                         access_log off;
            }

            location = /robots.txt {
                         allow all;
                         log_not_found off;
                         access_log off;
           }
       
            location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                         expires max;
                         log_not_found off;
           }
}

_______________________________________________________________________________

_______________________________________________________________________________

 

nginx 잘 구동되는지 확인
sites-enabled

* wordpress.conf내용을 nginx에 적용시키기 위해서 sites-available의 wordpress.conf를 sites-enabled에 링크 

 

nginx를 reload

* reload는 서버를 종료하지 않고, conf설정 파일만 갱신해주는 것

* restart는 서버를 종료하고 다시 시작하는 것

 

잠시 db서버로 가서..

* db에 samba설치되어 있으니까 wordpress 압축파일을 share폴더로 옮겨 준다.

 

web02의 share폴더에서도 wordpress압축파일 확인 가능

* share폴더 안의 wordpress 압축파일을 public_html파일로 가져옴

* sudo unzip wordpress-5.9.3-ko_KR.zip . 해서 wordpress 압축파일을 현재경로에 풀어버린다.

 

권한 설정

* 앞의 www-data가 nginx의 소유자, 뒤의 www-data가 그룹을 의미한다.

 

6.2 web02(WIN2012)에서 PHP를 쉽게 이용할 수 있도록 설치 (IIS와 PHP의 연동)

Server Manager 화면

* 시작표시줄의 윈도우 마크 옆에 Server Manager 클릭

* Server Roles와 Features를 제외하고는 전부 Next하고 마지막에 install

* Server Roles에서 Web Server(IIS) 체크

* Features에서 Client for NFS 체크

 

db의 share폴더 안으로 WebPlatformInstaller 드래그

 

web02(WIN2012) share폴더에서 WebPlatformInstaller 확인 가능

* WebPlatformInstaller : PHP같은 써드파티 도구들을 쉽게 설치할 수 있게 도움을 주는 모듈

 

좌측 WIN-861KK.... 를 누르기

 

Web Platfor... 설치

 

* 설치 후 php 7.4.13(x86) add 해주고 install 해주기


--애러 발생

* 우분투에서 명령어를 입력할 때마다 sudo : unable to resolve host라는 메시지가 출력됨

/etc/hostname 과 /etc/hosts의 hostname을 같게 해주면 해결.