0428

망지·2022년 4월 28일
1
post-custom-banner

web01,02,03 무게 맞춰주기

web01 - CentOS

[root@web01 ~]# cd /var/www/html
[root@web01 html]# ls
[root@web01 html]# echo "<h1>web01</h1>" > index.html
[root@web01 html]# ls
index.html
[root@web01 html]#

web01 html파일 생성

Web02 - Ubuntu

seo@web02:~$ sudo find / -name index.html
[sudo] password for seo:
/usr/lib/python3/dist-packages/twisted/python/_pydoctortemplates/index.html
/usr/share/nginx/html/index.html
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel.other/index.html
/usr/share/doc/python3/python-policy.html/index.html
/usr/share/doc/shared-mime-info/shared-mime-info-spec.html/index.html

web02에서 html파일 찾기. => /usr/share/nginX/html/
Docker NginX경로임 아래(web02 반영안되는 상황 발생) 참조

seo@web02:/usr/share/nginx/html$ sudo cp index.html index.html.bak
seo@web02:/usr/share/nginx/html$ ls
index.html  index.html.bak
seo@web02:/usr/share/nginx/html$ sudo echo "<h1>web02</h1>" > index.html
-bash: index.html: Permission denied
seo@web02:/usr/share/nginx/html$ ls -al
total 16
drwxr-xr-x 2 root root 4096 Apr 28 09:22 .
drwxr-xr-x 4 root root 4096 Apr 27 17:23 ..
-rw-r--r-- 1 root root  612 Apr 18  2018 index.html
-rw-r--r-- 1 root root  612 Apr 28 09:22 index.html.bak
seo@web02:/usr/share/nginx/html$ vi index.html
seo@web02:/usr/share/nginx/html$ sudo chmod 646 index.html
seo@web02:/usr/share/nginx/html$ ls -al
total 16
drwxr-xr-x 2 root root 4096 Apr 28 09:22 .
drwxr-xr-x 4 root root 4096 Apr 27 17:23 ..
-rw-r--rw- 1 root root  612 Apr 18  2018 index.html
-rw-r--r-- 1 root root  612 Apr 28 09:22 index.html.bak

index.html 백업 후 index파일 cat으로 생성하려고 했으나 권한 없어서 불가.
chmod 646으로 주어서 변경할 수 있도록 생성 => 'seo'는 other에 해당
*복습 r:4 w:2 x:1
Docker NginX경로임 아래(web02 반영안되는 상황 발생) 참조

Win -Web03

탐색창 - this PC - localDisk - inetpub - wwwwroot
새로운 텍스트 창 만들기 - 이름 index.html

<h1>web03</h1>

입력 후 저장하고 닫기.
확장자가 txt로 되어있음 확장자 보일 수 있게 상단 view메뉴에서 확장자 보일 수 있게 설정주고 , rename하여 .txt삭제해서 html파일로 바꿔줘야함.

web02 반영안되는 상황 발생

위 경로 뿐만 아니라 CentOS와 마찬가지로 var/www/html에도 index파일 있음.
(여기로 연동되는 듯 함.)

seo@web02:/usr/share/nginx/html$ cd /var/www/html
seo@web02:/var/www/html$ ls
index.nginx-debian.html
seo@web02:/var/www/html$ sudo vi index.html
seo@web02:/var/www/html$

=> win10호스트 PC => nat.lovemj.shop으로 접근해서 확인 가능.
=> win2012(내부서버) => 각 서버 도메인 접근해서 확인 가능. (nat도메인은 X)

(정리)html 루트폴더

CentOS HTTPD(=apache) : /var/www/html/
Ubuntu NginX : /var/www/html/
Ubuntu Docker NginX : /usr/share/nginX/html/
Windows IIS : C:\inetpub\wwwroot\index.html

HAProxy - Sticky session 설정

[root@nat ~]# vi /etc/haproxy/haproxy.cfg

#    cookie  SVID insert indirect nocache maxlife 3m #sticky session(고정세션)

맨 앞에 앞에 붙어있는 #제거해서 아래와 같이 주석처리 해제.

    cookie  SVID insert indirect nocache maxlife 10s
    server             web01 10.0.14.2:80 cookie check
    server             web02 10.0.14.5:80 cookie check
    server             web03 10.0.14.4:80 cookie check
    
    [root@nat ~]# systemctl restart haproxy

systemctl이용해서 적용될 수 있도록 haproxy재시작

라운드로빈 된 직후 새로고침을 한번 더 하면 바로 다시 이전의 페이지로 돌아가는 현상 발생=>추가 설정 필요

haproxy.cfg파일 진입 (이하 전문)

[root@nat ~]# vi /etc/haproxy/haproxy.cfg
global
    daemon

defaults
    mode               http 

frontend  http-in
    bind *:80
    default_backend    backend_servers

backend backend_servers
    balance            roundrobin
    cookie  SVID insert indirect nocache maxlife 10s
    server             web01 10.0.14.2:80 cookie check
    server             web02 10.0.14.5:80 cookie check
    server             web03 10.0.14.4:80 cookie check
defaults
    mode               http # http L7(Application Layer) S/W, tcp L4(Tranport Layer)

L7기능 -> http
L4 기능 -> tcp
=> 그래서 우리는 더 높은..?단인..? http사용예정.

frontend  http-in
    bind *:80
    default_backend    backend_servers

=>프론트엔드. 'http-in'이부분은 아무거나 주고싶은 이름 줘도 됨.
*;anywhere
어디서든 접근 가능하다. end유저들이 바라보는 최외곽 부분.

=>프론트엔드로 들어오면 default_backend backend_servers 여기로 연결해준다.
여기서 backend_servers (그룹명) 이거랑 아래부분 받아주는 곳이 같아야한다.
=> 백엔드에 정의된 이름과 일치해야 연결 가능하다. (아래 참조)

backend backend_servers #바로여기!
    balance            roundrobin
    cookie  SVID insert indirect nocache maxlife 10s
    server             web01 10.0.14.2:80 cookie check
    server             web02 10.0.14.5:80 cookie check
    server             web03 10.0.14.4:80 cookie check

고정세션의 주된 이유는 로그인때문에. 로그인하려면 일정 세션에 머물러야 한다.
지금 우리는 짧게 설정했지만 보통은 하루 이상으로 준다.

문제해결을 위한 추가 설정. [쿠키에 이름을 부여]

backend backend_servers
    balance            roundrobin
    cookie  SVID insert indirect nocache maxlife 10s
    server             web01 10.0.14.2:80 cookie w1 check
    server             web02 10.0.14.5:80 cookie w2 check
    server             web03 10.0.14.4:80 cookie w3 check

w1,w2,w3이름 부여.

DB서버(CentOs7)에 SAMBA 설치

# yum install -y samba
# mkdir -p /var/samba/share
# chmod 777 /var/samba/share
# adduser kosa
# passwd kosa
# smbpasswd -a kosa
# vi /etc/samba/smb.conf
[share]
        comment = Share Directory
        path = /var/samba/share
        browserable = yes
        writable = yes
        valid users = kosa
        create mask = 0777
        directory mask = 0777

=>이전에는 워크그룹도 바꿔주었지만 상관이 없더라.
=> vi 편집기 진입해서 아래에 [share]추가.

[root@db ~]# systemctl enable --now smb nmb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.

서비스 실행시켜주기.
{ 서비스 두개 동시에 실행 가능 => smb, nmb 한 칸 띄고 적어주기}

[root@db ~]# firewall-cmd --permanent --add-service=samba
success
[root@db ~]# firewall-cmd --reload
success

방화벽 처리해주기.

내부 윈도우 서버(win2012)로 진입=> 검색창에 \\db.lovemj.shop
=>username,passwd입력하면 진입 가능.!

내부 윈도우서버에서, 구글 - wordpress검색.
https://ko.wordpress.org/접속. => workdpress zip파일 다운받아서 공유폴더에 넣기.

오류발생 : 권한주었는데도 불구하고 권한 없다고 나옴
해결 : selinux해제를 안해주었음. 해제하고 해결 완료!

클라우드 3대 스토리지

block storage(OS설치, app설치)
-AWS EBS(Elastic Block Store)
file storage(네트워크 폴더공유;마운트, 파일공유)
-AWS EFS(Elastic File Storage)
object storage(web share, url 파일[link]공유; http서버 탑재)
-AWS S3 (Simple Storage Service)

DB서버(CentOs7)에 nfs 설치

# yum install -y nfs-utils
# mkdir /share && cd $_
[root@db share]# cp /var/samba/share/wordpress-5.9.3-ko_KR.zip .
[root@db share]# ls
wordpress-5.9.3-ko_KR.zip

=>samba에 공유해놓은 zip가져오기. zip 옆에 '.'이 현재 폴더를 의미하므로 점 찍어주었음.

# vi /etc/exports
/share 10.0.14.0/24(rw,sync)
/share *(rw,sync)

=>내부 네트워크만 접속 가능하도록 내부ip대역 등록.
=>ip부분 다 지우고 '*'로 하면 아무나 들어올 수 있음.=>그렇게 하기로 함.

# systemctl enable --now nfs-server
# exportfs -v
=>export파일 시스템 v;버전확인.
/share          <world>(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
[root@db share]#

world로 되어있다. *로 해서.

[root@db share]# firewall-cmd --permanent --add-service=nfs
success
[root@db share]# firewall-cmd --permanent --add-service=rpc-bind
success
[root@db share]# firewall-cmd --permanent --add-service=mountd
success
[root@db share]# firewall-cmd --reload
success

방화벽 처리. aws환경에서는 nfs만 오픈되어있으면 됨. 근데 지금 cent os환경에서는 세개 다 열어줘야한다.

-클라이언트 [nat,web01연결]

[root@nat ~]# rpm -qa | grep nfs-utils
[root@nat ~]# yum install -y nfs-utils
showmount -e db.lovemj.shop

nat에서 nfs연결(마운트)가능한지 확인.

[root@nat ~]# mkdir share
[root@nat ~]# ls
anaconda-ks.cfg  share
[root@nat ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.5M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/mapper/centos-root   97G  1.4G   96G   2% /
/dev/sda1               1014M  151M  864M  15% /boot
tmpfs                    182M     0  182M   0% /run/user/0

폴더만들어주고 마운트 확인.

[root@nat ~]# mount -t nfs db.lovemj.shop:/share /root/share

db서버에 마운트.

[root@nat ~]# ls share/
wordpress-5.9.3-ko_KR.zip

마운트 된 파일 확인.


[root@nat ~]# echo "db.lovemj.shop:/share /root/share nfs defaults 0 0" >> /etc/fstab

재부팅해도 마운트되어있도록 설정.
'>>' => 맨 마지막 라인에 해당 문구 추가.

====> web01도 똑같이 진행하면 됨.

-클라이언트 2[web02-ubuntu연결]

seo@web02:~$ sudo apt-get update
[sudo] password for seo:
Get:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Hit:2 http://kr.archive.ubuntu.com/ubuntu bionic InRelease
Get:3 http://kr.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:4 http://kr.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Get:5 http://kr.archive.ubuntu.com/ubuntu bionic-updates/main i386 Packages [1,464 kB]
Get:6 http://kr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [2,545 kB]
Fetched 4,260 kB in 4s (1,017 kB/s)
Reading package lists... Done

습관적으로 업데이트 해주기.

seo@web02:~$ sudo apt-get install -y nfs-common

NFS 패키지 설치.

seo@web02:~$ pwd
/home/seo
seo@web02:~$ mkdir share
seo@web02:~$ ls
share

경로확인 이 경우 sudo 붙이지 않아도 됨. 사용자 seo의 home이기때문.

seo@web02:~$ sudo mount -t nfs db.lovemj.shop:/share /home/seo/share

마운트

seo@web02:~$ cd share
seo@web02:~/share$ ls
wordpress-5.9.3-ko_KR.zip

마운트 된 파일 확인.


seo@web02:~/share$ sudo cp /etc/fstab /etc/fstab.bak
$ sudo vi /etc/fstab
db.lovemj.shop:/share /home/seo/share nfs defaults 0 0

fstab 파일 백업 후 파일 수정 (vi텍스트 진입해서 마지막에 아래 문구 '추가')

-클라이언트 3[web03-win2012연결]

윈도우 버튼 - control panal - turn windows features on or off -
next - role-based - next- next - client for NFS체크 - install
윈도우 버튼 - 검색창에서 cmd 검색 - run as administrator 

mount db.lovemj.shop:/share Z:\

탐색창-this pc 들어가면 share 폴더 진입 가능.

wordpress 설치

win2012

servermanager - tools - IIS Manager - yes - 인터넷브라우저 창 뜸 - install this extension 클릭

파일 저장 후 실행시켜서 설치.

다시 위 경로로 들어가서 왼쪽 서버 클릭, 창 뜸 no. - web platform installer 클릭 -Products - 검색창에서 php 7.4.13 Add - install - i accept

CentOS(web01)

# yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
# unzip /root/share/wordpress-5.9.3-ko_KR.zip 
# mv wordpress/* .
# chown -R apache:apache /var/www/*
# systemctl restart httpd

#unzip /root/share/wordpress-5.9.3-ko_KR.zip ; 아까 받아두었던 zip 파일 이용.

nat접속해서 아래와 같이 설정

[root@nat ~]# vi /etc/haproxy/haproxy.cfg
global
    daemon

defaults
    mode               http # http L7(Application Layer) S/W, tcp L4(Tranport Layer)

frontend  http-in
    bind *:80
    default_backend    backend_servers

backend backend_servers
    balance            roundrobin
    cookie  SVID insert indirect nocache maxlife 10m
    server             web01 10.0.14.2:80 cookie w1 check
#    server             web02 10.0.14.5:80 cookie w2 check
#    server             web03 10.0.14.4:80 cookie w3 check
[root@web01 html]# ls
index.html   wordpress           wp-comments-post.php  wp-includes        wp-mail.php       xmlrpc.php
index.php    wp-activate.php     wp-config-sample.php  wp-links-opml.php  wp-settings.php
license.txt  wp-admin            wp-content            wp-load.php        wp-signup.php
readme.html  wp-blog-header.php  wp-cron.php           wp-login.php       wp-trackback.php
# mv index.html index.html.bak

index.html, index.php index파일 두개. html이 우선이라 web01을 출력했음.
mv 통해서 index.php읽히도록 함.

그런데 잘 안돼...

[root@web01 html]# php -v
PHP 5.4.16 (cli) (built: Apr  1 2020 04:07:17)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
[root@web01 html]#

우리가 wordpress 최신버전 다운받아서 centos의 php버전이랑 맞지 않음.

5.4 => 7.4로 바꾸어줘야 함. 오류해결 최종 스크립트는 아래와 같다.

# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
=>저장소 생성
# yum -y install epel-release yum-utils
=>extra 패키지를 설치하겠다.
# yum-config-manager --enable remi-php74
=>이걸 사용하겠다.
# yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
=>바로 위엣줄 enable 해주면 알아서 php 버전이 7.4점대로 설정됨.
# cd /var/www/html
# unzip /root/share/wordpress-5.9.3-ko_KR.zip
# mv wordpress/* .
# cd ..
# chown -R apache:apache /var/www/*
# systemctl enable --now httpd
# systemctl restart httpd
# php -v

=> 윈10호스트 pc에서 nat페이지로 진입해서 wordpress설치 진행.

Ubuntu(web02)

nat에서 아래와 같이 설정.

[root@nat ~]# vi /etc/haproxy/haproxy.cfg

global
    daemon

defaults
    mode               http # http L7(Application Layer) S/W, tcp L4(Tranport Layer)

frontend  http-in
    bind *:80
    default_backend    backend_servers

backend backend_servers
    balance            roundrobin
    cookie  SVID insert indirect nocache maxlife 10m
#    server             web01 10.0.14.2:80 cookie w1 check
    server             web02 10.0.14.5:80 cookie w2 check
#    server             web03 10.0.14.4:80 cookie w3 check

[root@nat ~]# systemctl restart haproxy

ubuntu로 돌아와서, (web02)

$ sudo apt update && sudo apt upgrade -y
$ sudo reboot
$ sudo apt install -y nginx
$ sudo apt install -y php7.2 php7.2-mysql php7.2-fpm php7.2-mbstring php7.2-gd wget unzip
$ sudo mkdir -p /var/www/html/wordpress/public_html
$ cd /etc/nginx/sites-available
$ sudo vi wordpress.conf
server {
            listen 80;
            root /var/www/html/wordpress/public_html;
            index index.php index.html;
            server_name nat.lovemj.shop;

	    access_log /var/log/nginx/SUBDOMAIN.access.log;
    	    error_log /var/log/nginx/SUBDOMAIN.error.log;

            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;
           }
}
$ sudo nginx -t
=>nginx 상태보기
$ cd /etc/nginx/sites-enabled
$ sudo ln -s ../sites-available/wordpress.conf .
=>available에 있는 파일을 링크 걸어서 enabled로 해주기.
$ sudo systemctl reload nginx
$ cd /var/www/html/wordpress/public_html
$ sudo wget https://ko.wordpress.org/latest-ko_KR.zip
$ sudo unzip latest-ko_KR.zip
$ sudo mv wordpress/* .
$ sudo chown -R www-data:www-data *
=>nginx의 사용자명과 그룹명 : www-data
$ sudo chmod -R 755 *

참고 : https://www.journaldev.com/25670/install-wordpress-nginx-ubuntu

그 다음

window(web03)

nat에서

global
    daemon

defaults
    mode               http # http L7(Application Layer) S/W, tcp L4(Tranport Layer)

frontend  http-in
    bind *:80
    default_backend    backend_servers

backend backend_servers
    balance            roundrobin
    cookie  SVID insert indirect nocache maxlife 10m
#    server             web01 10.0.14.2:80 cookie w1 check
#    server             web02 10.0.14.5:80 cookie w2 check
    server             web03 10.0.14.4:80 cookie w3 check

web03(win2012)탐색창 진입,samba shsre에서 wordpress zip파일 복사
C:\inetpub\wwwroot 가서 붙여넣기
index.html,iistart.htm을 뒤에 확장자 .bak으로 바꾸기.
압축폴더 오른쪽버튼 extract all 해서 압축풀기 안에 폴더 들어가서 wordpress안에 있는 내용물 wwwroot폴더에 넣기.
=> 완료!!

config파일 같게 하기(web01,02,03)[web01에서만 설치해서 wp-config.php파일 만들어두었음.]

[root@web01 html]# cp wp-config.php /root/share/

=>nfs 폴더로 전송.
윈도우(2012) 가서 . samba share폴더에 그 php복사
C:\inetpub\wwwroot에 붙여넣기.
=>다시 윈도우 10 크롬으로 접속해서 새로고침하고 설치이미 진행됐다고 하면 로그인만 하면 됩니당!!

web02에서,

$ ls /home/seo/share
$ sudo cp /home/seo/share/wp-config.php /var/www/html/wordpress/public_html

아까 web01 nfs로 올려두었던 파일 가져오기!

global
    daemon

defaults
    mode               http # http L7(Application Layer) S/W, tcp L4(Tranport Layer)

frontend  http-in
    bind *:80
    default_backend    backend_servers

backend backend_servers
    balance            roundrobin
#    cookie  SVID insert indirect nocache maxlife 10m
    server             web01 10.0.14.2:80 cookie w1 check
    server             web02 10.0.14.5:80 cookie w2 check
    server             web03 10.0.14.4:80 cookie w3 check

nat에서 고정세션 해제.

하이퍼바이저 - 타입 2인 실습환경에서 타입 1 구현할 수 있도록 구성해 놓은 것이 있움,,
그래서 컴퓨터 밀지 않아도 구현 가능.

haproxy 확인 위해 index 파일 수정


[root@web01 share]# cd /var/www/html
[root@web01 html]# vi index.php
profile
꾸준히, 차근차근
post-custom-banner

0개의 댓글