
- CentOS HTTPD(=Apache) /var/www/html/
- Ubuntu Nginx /var/www/html
- Windos IIS C:\inetpub\wwwroot\
- Ucuntu Docker Nginx /usr/share/nginx/html/
echo "<h1>WEB01</h1>" >> /var/www/html/index.html: index.html을 찾고 구별을 위해 WEB01을 입력해본다.
sudo find / -name index.html: index.html이 있는 위치를 모두 찾는다.
- nginx엔진의 index.html을 찾았다.
- 내 Ubuntu계정은 Cocudeny이지만 권한은 root에 있다.
- 그래서 수정을 할 수 없다.
sudo chmode명령어로 권한을 변경해줘야 수정이 가능하다.
C:\inetpub\wwwroot\: 이 경로에 index.html을 만들어준다.- view에서
File name extension을 체크해줘 txt가 붙어있는지 확인한다.
- WEB01, WEB03은 제대로 작동 되지만 WEB02(Ubuntu)에서 제대로 작동하지 않는다.
- 다시 살펴보니 Ubuntu Ngins의 html루트폴더의 위치가 달랐다.
/var/www/html/로 수정하니 제대로 나온다.
vi /etc/haproxy/haproxy.cnf: 전에 작성했던 haproxy설정에 들어가 쿠키세션(Sticky Session) 주석처리를 해제해준다. 또 1분으로 설정해준다.- 쿠키를 굽는다고 표현하는데, 쿠키를 구워서 쿠키 시간동안 같은 사람에게 한 세션에 계속 접속하도록 연결해준다. 현재는 1m으로 되어있지만 보통 하루 이상으로 준다.
- 확인을 위해 쿠키세션시간을 10s로 설정해본다.
- 10s로 하니 WEB01에서 10초 후에 WEB02로 가지지만, 바로 다시 새로고침 하니 WEB01로 갔다. 오류가 있다.vi /etc/haproxy/haproxy.cfg다시 확인한다.global daemon # 전역, daemon : 백그라운드에서 실행하겠다. defaults mode http # http : L7 (Application Layer) S/W, # tcp : L4(Transport Layer) frontend http-in # frontend [front end 정의 이름] bind *:80 # * 표시는 Anywhere, 어디서들어오던지 80번포트(http)로 들어오는 연결을 받아들인다. default_backend backend_servers backend backend_servers # backend [backend 정의 이름] # 아래 서버들을 순차적으로 접속할 수 있게 해준다. # 계속 사이트가 바뀌면, 로그인을 할 수 없다. 세션이 계속 바뀌기 때문에 로그인 버튼을 누르면 다른 서버에 접속된다. # 따라서 스티키세션을 주는 이유는 주로 로그인 문제 때문이다. # 그래서 보통 하루 이상을 준다. # 사용자들은 똑같은 페이지를 보여주기 때문에 어느 서버인지 알 수 없다. balance roundrobin cookie SVID insert indirect nocache maxlife 10s server web01 10.0.28.100:80 cookie w1 check server web02 10.0.28.101:80 cookie w2 check server web03 10.0.28.102:80 cookie w3 check
- 위 server정의에 보면 쿠키설정에
w1,w2,w3해서 쿠키의 이름을 정해주었다. 그럼 쿠키설정이 정의되어 방금전의 오류가 해결된다.
- WEB01에서 10초동안 머물고 WEB02로 이동하자마자 바로 새로고침하면 다시 WEB01로 돌아가던 오류가 해결되어, WEB02에서 머물고있다. 오류해결
- 이번 설계에서는 DB_SAMBA_NFS가 모두 한곳에 모여있다.
- 또, 예전
/etc/samba/smb.conf에서 workgourp설정이 의미가 없는 것 같당...
yum install -y sambamkdir -p /var/samba/share: 폴더 생성, 중간단계 폴더가 없어도 -p옵션을 생성한다.chmod 777 /var/samba/share: 권한 변경adduser kosa: 테스트용 계정 생성passwd kosa: 계정 비밀번호 생성smbpasswd -a kosa: SAMBA에서 이용할 비밀번호 생성vi /etc/samba/smb.conf: 삼바 설정, 설정을 마지막에 새로 추가한다.smb : Small Message Block 작은 메세지 블록[share] comment = Share Directory path = /var/samba/share browserable = yes writable = yes valid users = kosa #방금 생성한 계정 입력 create mask = 0777 directory mask = 0777
systemctl enable --now smb nmb: smb, nmb 둘다 동시에 시작 및 시작 프로그램 등록
-systemctl status smb nmb이렇게 두가지 상태를 동시에 볼 수 있다.firewall-cmd --permanent --add-service=samba --zone=public: 방화벽에 SAMBA를 오픈해준다.firewall-cmd --reload
- Window(WEB03)에서 들어갈 수 있는지 확인해본다.
- 시작 -> 검색에 \ + 도메인 주소 로 검색한다.
- 접속이 된다!
- 크롬에서
https://ko.wordpress.org/download/에 들어가서 가운데 다운로드버튼을 클릭해서 최신버전 워드프레스 압축파일(ZIP)을 다운로드 해준다.- 또, 이를 SAMBA폴더로 이동해준다.
- DB VM에 들어가서 확인해보면 제대로 공유가 되고있다.
- Cloud 3대 스토리지
- Block 스토리지 (OS 설치, App설치) - AWS EBS (Elastic Block Store)
- File 스토리지 (네트워크 폴더 공유-> 마운트과정이 필요하다, 파일 공유 목적) - AWS EFS(Elatic File Storage)
- Object 스토리지 (Webshare, URL파일 공유(링크), Http 서버 탑재되어야 한다.) - AWS S3 (Simple Storage Service)
yum install -y nfs-utils: NFS를 위한 Utils(도구)설치mkdir /share && cd $_: 최상위 폴더에 share만들고 그 폴더로 이동cp /var/samba/share/wordpress-5.9.3-ko_KR.tar.gz .: 아까 다운로드받은 Wordpress를 NFS로 받는다.- 현재 폴더가 NFS폴더로 이동해있기 때문에
.으로 지정해주면 현재 폴더로 가져온다.vi /etc/exports: NFS에 들어올 수 있는 권한설정을 진행한다.#/share 10.0.28.0/24(rw,sync) # 만약 모두 들어오게 만드려면 IP주소에 *를 주면 된다. /share *(re,sync)-
chmod 707 /share: 권한 설정
systemctl enable --now nfs-server: NFS시작 및 시작프로그램 등록exportfs -v: exportfs에러 fs는 File System을 말한다.
질문 아래 rpc-bind, mountd의 역할은?
- 만약 결과가 안나오면
systemctl restart nfs하면된다.firewall-cmd --permanent --add-service=nfs방화벽 설정firewall-cmd --permanent --add-service=rpc-bindfirewall-cmd --permanent --add-service=mountd
- AWS에서는 nfs만 오픈되어있으면 되지만, CentOS7에서는 셋다 오픈해야한다.firewall-cmd --reload: 잊지말고 리로드 꼭한다.
RPC(Remote Procedure Call)RPC(Remote Procedure Call)
RPC는 동적으로 서비스와 포트를 연결할 떄 사용하는 방법이다.
기본적으로 정적으로 포트가 구성될쨰는 /etc/services 파일을 참조하지만,
동적으로 포트를 할당 받을 떄는, RPC를 담당하는 데몬인 rpcbind를 사용한다.자동으로 현재 사용하지 않는 포트번호를 연결해주지만, 이미 정패진 포트번호를 사용하게 할 수 있다.
그러나 서비스를 요청하는 시스템이 /etc/servieces파일을 사용하면 그대로, RPC를 사용한다면 RPC로, 서로 맞춰 사용해야 한다.
mountd 데몬
- mountd 데몬은 원격 시스템으로부터의 파일 시스템 마운트 요청을 처리하며 액세스 제어 기능을 제공한다.
- mountd 데몬은 /etc/dfs/sharetab를 확인하여 원격 마운트에 사용 가능한 파일 시스템 및 원격 마운트 수행이 허용되는 시스템을 결정한다.
rpm -qa | grep nfs-utils: 패키지가 설치되어있는것이 있는지 검색yum install -y nfs-utilsshowmount -e 10.0.28.103: Mount가 가능한지 확인
mkdir sharemount -t nfs 10.0.28.103:/share /root/sharedf -h
- 103(DB):/share에 잘 mount된 것을 볼 수 있다.
vi /etc/fstab: 마운트 마감db.cocudeny.shop:/share /root/share nfs defaults 0 0질문 fstab 왜하는거지?
- 자동 마운트 설정이다.
- systemctl enable --now ~~~ 하는것처럼 재부팅 이후에도 자동으로 마운트하기위해 설정하는 것이다.
$ sudo apt-get update: 습관적으로 한번씩 해야한다.$ sudo apt-get upgrade: 그냥 한번 해준다.$ sudo apt-get install nfs-common: nfs를 설치해준다.$ mkdir /home/cocudeny/share$ pwd: Ubuntu에서는 경로가 조금 다르다
$ sudo mount -t nfs db.cocudeny.shop:/share /home/cocudeny/share/: 다행히 CentOS와 같은 방법으로 마운트가 가능하다.
$ df -h: 마운트 확인
$ sudo cp /etc/fstab /etc/fstab.bak: 백업 생성$ sudo vi /etc/fstabdb.cocudeny.shop:/share /home/cocudeny/share nfs defaults 0 0
- SAMBA는 윈도우에서 편하고, Linux에서는 편하지 않았지만
- NFS는 윈도우, Linux 둘다 적절히 사용할 수 있다.
- 시작 -> Control Paner(제어판) -> Turn Windows features On or Off(윈도우즈 기능 켜기/끄기)
- CMD관리자 권한으로 실행
- 핑 확인
mount db.cocudeny.shop:/share Z:\: 비슷하게 마운트를 실행한다. 뒤에 Z:\는 C드라이브처럼 Z드라이브로 이름을 주어 사용하기 위함이다.
- SAMBA는 Linux <-> Window는 편하지만 Linux <-> Linux 에서는 불편하다.
- 그래서 NFS를 Linux 사이에서는 주로 NFS를 사용한다.


yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
- PHP 7버전대로 설치하기 위해 구글링yum -y install epel-release yum-utils
- extra, 외부의? 별도 파일 추가yum-config-manager --enable remi-php74
- remi php74 시작yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
- wordpress를 사용하기 위해 필요한 도구 설치cd /var/www/htmlunzip /root/share/wordpress-5.9.3-ko_KR.zipmv wordpress/* .
- wordpress안에 있는 모든 파일을 끄집어낸다.chown -R apache:apache /var/www/*
- 파일의 소유자를 Apache로 설정하여 아파치가 폴더들을 컨트롤할 수 있게 만든다.systemctl restart httpdphp -v: 버전이 7 대로 나와야 한다.
- NAT에서
vi /etc/haproxy/haproxy.cfg설정으로 들어가서 쿠키10분, WEB02, 03서버 주석처리한다.- systemctl restart haproxy
- WEB01밖에 출력되지 않는다.
- wordpress 는 PHP7버전 이상의 버전을 사용해야 한다. 그러나 CentOS7는 구형 5번을 사용하기 때문에 최신버전 WordPress는 사용할 수 없다.
- PHP버전을 올리거나, WordPress를 구형으로 사용하거나 둘중 하나이다.
- 위 설치에서 아래 내용 추가해서 업그레이드를 실행하였다.
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
- PHP 7버전대로 설치하기 위해 구글링
-yum -y install epel-release yum-utils
- extra, 외부의? 별도 파일 추가
-yum-config-manager --enable remi-php74
- remi php74 시작cd /var/www/html에서 index.html을 삭제하면 WordPress 설치화면으로 들어간다.
- 처음 데이터베이스에 연결하기 위해, 데이터베이스 아이디와 비밀번호를 입력하여 데이터베이스와 연결한다.
- 그 다음 WordPress root계정을 생성한다.
- 로그인 진행
- 아쉽게도 선인장이 사라졌다.
- https://www.journaldev.com/25670/install-wordpress-nginx-ubuntu
sudo apt-get install php7.2 php7.2-mysql php7.2-mbstring php7.2-gd -ycd /var/www/htmlunzip /root/share/wordpress-5.9.3-ko_KR.zipmv wordpress/* .
- wordpress안에 있는 모든 파일을 끄집어낸다.sudo chown -R www-data:www-data /var/www/*쉽지 않은 오류로 인해 보류한다.
- 기존 데이터를 제거하고 시작한다.
sudo apt-get autoremove php7.2 php7.2-mysql php7.2-mbstring php7.2-gd -y아까 설치한 PHP7버전을 삭제한다.sudo apt-get autoremove nginx -yNginx까지 삭제sudo apt update && sudo apt upgrade -y: 업데이트 업그레이드
- Public Cloud에서는 Reboot하는것이 아니지만, VM은 Reboot가 필요하다.sudo apt install -y nginx: nginx 다시설치sudo apt install -y php7.2 php7.2-mysql php7.2-mbstring php7.2-gd unzip wget: PHP7 간략화버전 다운로드, 만약 부족하면 아래 코드로 다시 다운로드 한다.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 unzip wget: PHP7버전 다시 다운로드sudo mkdir -p /var/www/html/wordpress/public_html: WordPress경로 만들기sudo nginx -t: nginx 상태 확인cd /etc/nginx/sites-available: 공부가 더 필요한 부분이다. nginx의 가능한 사이트들을 정의하는 곳이다?sudo vi wordpress.conf: 환경변수 설정 부분sudo nginx -t: nginx 상태 다시 확인cd /etc/nginx/sites-enabled: enabled 폴더로 이동sudo ln -s ../sites-available/wordpress.conf: link를 enable폴더에 넣어서 nginx 에서 enable을 시켜준다.enable wordpress한 느낌?sudo systemctl reload nginxreload해준다.cd /var/www/html/wordpress/public_html
- 아까 conf파일에 html루트폴더를 다시 정의했다.
/var/www/html/wordpress/public_html여기가 이제 html루트폴더가 된다.- 이제 wordpress를 다운로드 받는다.
- NFS폴더에 없다면 아래 wget을 사용해서 다운로드 받는다.
sudo wget https://ko.wordpress.org/latest-ko_KR.zipsudo unzip latest-ko_KR.zip: 압축 해제한다.sudo mv wordpress/* .: 압푹해제한 폴더내 모든 파일을 꺼내온다.sudo chown -R www-data:www-data *: CentOS7과 같이 소유자를 변경시켜 줘야 하는데, CentOS7에서는 Apache지만 Ubuntu는www-data이다.sudo chmod -R 755 *: 또, 모든 파일의 권한을 소유자(www-data)만 7, 나머지는 읽기 및 실행 가능
안된다....
에러를 확인해 보다
같은 에러가 존재한다.
주소가 이미 사용되었다는 에러 메세지로 추정해보면 Apache와 충돌한다는 가정으로 Apache를 중지시켜본다.
아파치를 중지시키니,
sudo systemctl start nginx가 에러없이 작동된다!
된다!!
다음날 사실 안됬다... 트러블 슈팅default 파일을 수정해보도록 한다.
Default root PATH를 /var/www/html/wordpress/public_html/로 수정해준다. 그리고, index를 index.php를 만들어준다.
- 위와같이 WordPress파일을 압축 해제해준다.
- 잘된다!
- PC를 다 밀어서 깡통으로 밀고, 클라우드 환경을 꾸며볼 것이다.