1. index.html 파일 수정
# html 루트폴더는 html이 위치해 있는 폴더
# html 루트폴더 : CentOS는 HTTPD(APACHE) /var/www/html/
# html 루트폴더 :Ubuntu Nginx는 /var/www/html/index.html
# html 루트폴더(도커에서): Ubuntu Nginx는 /usr/share/nginx/html
* 수정 전에는 습관적으로 backup파일 만들어 놓기
* index.html 파일을 만듦
* <h1>WEB03</h1> 입력 후 ctrl+s 눌러서 저장
* 파일 형식을 표시하기 위해 좌측 상단의 view에서 file extension 체크박스 체크
* index.html.txt에서 txt를 지워서 온전한 html파일로 만들어주기
2. nat에서 HAproxy 설정
*sticky session(고정세션) : cookie설정을 통해 특정 시간만큼만 해당 호스트네임(web01, web02...)을 이용한 주소에 접속할 수 있다
* cookie에 시간을 넣어서 사용자에게 주면, 사용자는 항상 cookie를 가지고 온다.
* 해당 시간만큼 cookie check되어 있는 서버를 이용할 수 있음
* 가령, web01서버에 10초간 접속해 있었다면, 새로고침 했을 때 web02로 바뀌고 다시 10초간 있어야 다른 서버로 새로고침을 통해 바꿀 수 있다.
* 하지만, 지금은 제대로 작동 X(web01에서 web02로 바뀌었는데 다시 새로고침하면 바로 web01로 돌아감)
* defaults에 L7기능을 하려면 http를 L4기능을 하려면 tcp를 넣어준다.(L7은 L4의 기능을 포함하기에 L7 사용하면 된다.)
* 접속하려는 포인트가 frontend임
* bind *:80에서 *는 anywhere라는 의미로 80포트에 어디서든지 접근할 수 있다는 뜻
* frontend 다음에 http-in을 지우고 원하는 이름 아무거나 넣어도 됨
* backend 다음에 backend-servers도 지우고 아무 이름이나 넣어도 됨
* default_backend 명령어 뒤의 backend_servers(그룹명)는 frontend의 80번 포트로 접근하면 backend_servers(backend에 정의된 이름)로 연결해달라는 뜻
* roundrobin알고리즘으로 하단 세 개 서버에 순차적으로 접속할 수 있게끔 세팅되어 있음
* 세션을 고정 안 하고 roundrobin 방식만 설정되어 있으면, 세션이 계속 바뀌기 때문에 로그인 같은 것을 하기 어려워서 고정세션을 사용하여, 하나의 서버에 일정 시간동안은 머무르도록 해야 한다.(고정세션을 설정하는 이유로 일반적으로 하루 이상의 cookie 시간을 줌)
* w1, w2, w3와 같이 쿠키의 이름을 정의해주고, 해당 이름으로 구운 쿠키를 클라이언트한테 주어야 새로 고침했을 때 이전 세션으로 돌아가는 문제가 발생하지 않는다.
* systemctl restart haproxy로 설정파일 만지면 다시 시작 해주어야 함
* systemctl status haproxy로 애러 없이 잘 돌아가고 있는지 확인
3. DB에 SAMBA설치
* 리눅스에서 kosa 사용자를 생성하고, 해당 유저를 samba에서 이용할 수 있도록 samba에서 이용하는 passwd설정
* 777권한을 줘서 kosa에서도 rwx 전부 가능하게 함
* smb와 nmb를 실행시킨 후 systemctl status smb nmb를 통해 active되어 있는지 확인
* 서비스 추가 시 랜카드가 하나라면 --zone=~~ 으로 zone설정 안 해도 됨(자동으로 public에 추가)
* web03(win2012)에서 돋보기 모양 검색창 -> \\db.skk.shop
* wordpress zip파일이 잘 복사됨
**클라우드 3대 스토리지**
- Block storage : OS설치; APP설치; AWS의 EBS(Elastic Block Stroe)
- File storage : mount 후 네트워크를 통한 폴더(파일)공유; AWS의 EFS(Elastic File Storage)
- Object storage : Webshare와 같은 느낌으로 url을 통한 파일 공유; url을 통한 파일공유는 http서버의 의미를 내포; AWS의 S3(Simple Storage Service)
4. DB에 NFS서버설치
* yum install -y nfs-utils : nfs서버 설치
* mkdir /share && cd $_ : share폴더를 만들면서 동시에 share폴더로 들어감
* 명령어 맨 마지막에 (.)을 찍은 것은 현재 폴더에 복사하겠다는 의미
* /share */24(rw,sync) 를 통해 어디서든지 share폴더에 접근 가능하게 설정(실무에서는 *말고 특정 ip지정해서 보안성 확보)
* (rw, sync) 같이 띄어쓰기 하면 애러발생
* nfs, rpc-bind, mountd를 서비스 항목에 추가
* 서비스이름으로 포트 번호를 오픈하는 것
* 퍼블릭클라우드에서는 nfs만 추가해주면 됨
5. nat, web01, web02에 nfs클라이언트 설정
* rpm -qa | grep nfs-utils : nfs-utils가 이미 설치되어 있는지 확인
* yum install -y nfs-utils : nfs-utils 설치
* 아직 마운트가 안 되어 있는 것을 확인할 수 있음
* 앞의 /share는 db서버에 설정해준 nfs의 share 폴더
* 뒤의 /root/share는 nat에서 설정해 준 share 폴더
* 두 개의 폴더가 마운트됨
** 다른 클라이언트 서버도 nat와 동일하게 설치(web02는 Ubuntu라서 다름)
5.1 web02(Ubuntu)에서 nfs클라이언트 설치
* sudo apt-get update
* sudo apt-get install -y nfs-common
* mkdir share (현재 위치가 일반 사용자 자신의 것이기 때문에 sudo를 붙이지 않아도 된다.)
* sudo cp /etc/fstab /etc/fstab.bak : vi창에서 수정 전에 백업해줌
5.2 web03(WIN2012)에 nfs설치
* Client for NFS 체크 후 넘어가서 install
* Z는 C드라이브처럼 만들어주는 것
* manage는 이미 설치가 되어 있는 것
* tools는 새로 사용하려는 것
* 이후 web platform installer 로 설치
* PHP7.4.13 Add해준 후 하단의 install 활성화 되면 install해주기
6. 최신버전(PHP 7.4)WordPress 설치(web01)
# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum -y install epel-release yum-utils
# yum-config-manager --enable remi-php74
# yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
# cd /var/www/html
# unzip /root/share/wordpress-5.9.3-ko_KR.zip
# mv wordpress/* .
# chown -R apache:apache /var/www/*
# systemctl restart httpd
# php -v : 버전이 7.4.29로 나와야 함
* 위의 과정 설치 이후 nat.skk.shop하면 wordpress접속됨
6.1 web03(WIN2012)에서 워드프레스 실행
* web01에서 cp wp-config.php /root/share 를 통해 share폴더에 wp-config파일 넣음
* wp-config.php파일을 윈도우 share폴더에서 wwwroot폴더에 복사
* 워드프레스 실행(nat.skk.shop)
7. web2(Ubuntu18)에 워드프레스 설치
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install -y nginx
$ sudo apt install -y php7.2 php7.2-mysql php7.2-mbstring php7.2-gd wget unzip
$ sudo apt install -y php7.2 php7.2-cli php7.2-fpm php7.2-mysql php7.2-json php7.2-opcache php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl
$ 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.skk.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
$ cd /etc/nginx/sites-enabled
$ sudo ln -s ../sites-available/wordpress.conf . (sites-available경로에 있던 wordpress.conf파일을 심볼릭 링크)
$ 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/* .
$ cd /var/www/html/wordpress/public_html
$ sudo chown -R www-data:www-data * 앞의 www-data가 사용자명 뒤의 www-data가 그룹명
$ sudo chmod -R 755 *
8. 애러..
web02 우분투에서 wordpress에 접속하려고 하면 DB와의 연결이 되지 않았다는 오류 발생
-> web02에서 vi /etc/resolv.conf 확인해보니 nameserver항목에 ip를 제대로 못 받았음
-> web02에 apt install resolvconf 설치
-> vi /etc/resolvconf/resolv.conf.d/head 접속
-> nameserver 10.0.13.1로 라우터 IP지정
-> sudo systemd-resolve --statistics를 통해 확인해 보면 DNS캐시가 지워져 있음
-> 캐시가 지워지면서 초기화가 안 되게 되는 원리인지.. 나중에 확인해보기
-> /etc/resolv.conf에 dns의 IP를 넣어 준 후 계속해서 dns를 restart하면 캐시가 지워지면서 된다고 함.
'KOSA 클라우드 솔루션즈 아키텍트 양성과정' 카테고리의 다른 글
[5.3] DNS설정, 서브넷 마스크 (0) | 2022.05.03 |
---|---|
[5.2] WordPress설치 , IIS와 PHP연동, DNS, DB, NFS, SAMBA 등 설치 (0) | 2022.05.02 |
[4.29] ESXi (1) | 2022.04.29 |
[4.27] NAT, WEB01, WEB02, WEB03 (0) | 2022.04.27 |
[4.26] 가상화/하이퍼 바이저(Hypervisor)/vmware (1) | 2022.04.26 |