220428

HyeonKi Jo·2022년 4월 28일
0
post-thumbnail

WEB서버 수정

html 루트 폴더

  • CentOS HTTPD(=Apache) /var/www/html/
  • Ubuntu Nginx /var/www/html
  • Windos IIS C:\inetpub\wwwroot\
  • Ucuntu Docker Nginx /usr/share/nginx/html/

WEB01

  • echo "<h1>WEB01</h1>" >> /var/www/html/index.html : index.html을 찾고 구별을 위해 WEB01을 입력해본다.

WEB02

  • sudo find / -name index.html : index.html이 있는 위치를 모두 찾는다.
  • nginx엔진의 index.html을 찾았다.
  • 내 Ubuntu계정은 Cocudeny이지만 권한은 root에 있다.
    - 그래서 수정을 할 수 없다.
    • sudo chmode 명령어로 권한을 변경해줘야 수정이 가능하다.

WEB03

  • C:\inetpub\wwwroot\ : 이 경로에 index.html을 만들어준다.
  • view에서 File name extension을 체크해줘 txt가 붙어있는지 확인한다.

확인

  • WEB01, WEB03은 제대로 작동 되지만 WEB02(Ubuntu)에서 제대로 작동하지 않는다.
  • 다시 살펴보니 Ubuntu Ngins의 html루트폴더의 위치가 달랐다.
  • /var/www/html/로 수정하니 제대로 나온다.

HAproxy

  • vi /etc/haproxy/haproxy.cnf: 전에 작성했던 haproxy설정에 들어가 쿠키세션(Sticky Session) 주석처리를 해제해준다. 또 1분으로 설정해준다.
  • 쿠키를 굽는다고 표현하는데, 쿠키를 구워서 쿠키 시간동안 같은 사람에게 한 세션에 계속 접속하도록 연결해준다. 현재는 1m으로 되어있지만 보통 하루 이상으로 준다.

HAproxy 트러블슈팅

  • 확인을 위해 쿠키세션시간을 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에서 머물고있다. 오류해결

SAMBA

  • 이번 설계에서는 DB_SAMBA_NFS가 모두 한곳에 모여있다.
  • 또, 예전 /etc/samba/smb.conf에서 workgourp설정이 의미가 없는 것 같당...

SAMBA 설치

  • 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

SAMBA확인

  • Window(WEB03)에서 들어갈 수 있는지 확인해본다.
  • 시작 -> 검색에 \ + 도메인 주소 로 검색한다.
  • 접속이 된다!
  • 크롬에서 https://ko.wordpress.org/download/에 들어가서 가운데 다운로드버튼을 클릭해서 최신버전 워드프레스 압축파일(ZIP)을 다운로드 해준다.
  • 또, 이를 SAMBA폴더로 이동해준다.
  • DB VM에 들어가서 확인해보면 제대로 공유가 되고있다.

NFS

  • 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)

NFS 설치 및 설정

서버

  • 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-bind, mountd의 역할은?

RPC(Remote Procedure Call)RPC(Remote Procedure Call)

  • RPC는 동적으로 서비스와 포트를 연결할 떄 사용하는 방법이다.
    기본적으로 정적으로 포트가 구성될쨰는 /etc/services 파일을 참조하지만,
    동적으로 포트를 할당 받을 떄는, RPC를 담당하는 데몬인 rpcbind를 사용한다.

  • 자동으로 현재 사용하지 않는 포트번호를 연결해주지만, 이미 정패진 포트번호를 사용하게 할 수 있다.
    그러나 서비스를 요청하는 시스템이 /etc/servieces파일을 사용하면 그대로, RPC를 사용한다면 RPC로, 서로 맞춰 사용해야 한다.

mountd 데몬

  • mountd 데몬은 원격 시스템으로부터의 파일 시스템 마운트 요청을 처리하며 액세스 제어 기능을 제공한다.
  • mountd 데몬은 /etc/dfs/sharetab를 확인하여 원격 마운트에 사용 가능한 파일 시스템 및 원격 마운트 수행이 허용되는 시스템을 결정한다.

클라이언트 (CentOS7)

  • 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 ~~~ 하는것처럼 재부팅 이후에도 자동으로 마운트하기위해 설정하는 것이다.

클라이언트 (Ubuntu)

  • $ 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

클라이언트 (Window Server 2012)

  • 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를 사용한다.

추가

  • close로 다 닫으면 아래 화면이 나온다.
  • 초록색 버튼을 클릭하여 다운로드 받는다.
  • 일단 점심시간!

워드프레스 설치 (WEB SERVER)

  • 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 대로 나와야 한다.

HAproxy 설정 후 테스트

WEB01(CentOS7)

  • 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계정을 생성한다.
  • 로그인 진행
  • 아쉽게도 선인장이 사라졌다.

WEB02(Ubuntu)

  • 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/*
  • 쉽지 않은 오류로 인해 보류한다.

WEB02 2차시도

  • 기존 데이터를 제거하고 시작한다.
  • 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를 만들어준다.

WEB03(Window2012)


  • 위와같이 WordPress파일을 압축 해제해준다.
  • 잘된다!

다음강의 공지

  • PC를 다 밀어서 깡통으로 밀고, 클라우드 환경을 꾸며볼 것이다.
profile
Talking Potato

0개의 댓글