- 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 samba
mkdir -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-bind
firewall-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-utils
showmount -e 10.0.28.103
: Mount가 가능한지 확인
mkdir share
mount -t nfs 10.0.28.103:/share /root/share
df -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/fstab
db.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/html
unzip /root/share/wordpress-5.9.3-ko_KR.zip
mv wordpress/* .
- wordpress안에 있는 모든 파일을 끄집어낸다.chown -R apache:apache /var/www/*
- 파일의 소유자를 Apache로 설정하여 아파치가 폴더들을 컨트롤할 수 있게 만든다.systemctl restart httpd
php -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 -y
cd /var/www/html
unzip /root/share/wordpress-5.9.3-ko_KR.zip
mv 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 -y
Nginx까지 삭제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 nginx
reload해준다.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.zip
sudo 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를 다 밀어서 깡통으로 밀고, 클라우드 환경을 꾸며볼 것이다.