web01,02,03 무게 맞춰주기
[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파일 생성
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 반영안되는 상황 발생) 참조
탐색창 - this PC - localDisk - inetpub - wwwwroot
새로운 텍스트 창 만들기 - 이름 index.html
<h1>web03</h1>
입력 후 저장하고 닫기.
확장자가 txt로 되어있음 확장자 보일 수 있게 상단 view메뉴에서 확장자 보일 수 있게 설정주고 , rename하여 .txt삭제해서 html파일로 바꿔줘야함.
위 경로 뿐만 아니라 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)
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 설치
servermanager - tools - IIS Manager - yes - 인터넷브라우저 창 뜸 - install this extension 클릭
파일 저장 후 실행시켜서 설치.
다시 위 경로로 들어가서 왼쪽 서버 클릭, 창 뜸 no. - web platform installer 클릭 -Products - 검색창에서 php 7.4.13 Add - install - i accept
# 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설치 진행.
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
그 다음
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폴더에 넣기.
=> 완료!!
[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