(Linux)리눅스 입문
[카카오 클라우드 스쿨] 리눅스 파트 시작! 기초부터 다져 보자. 디렉터리 등에 대해 알아 보자
LINUX(1) - 리눅스 입문, 디렉터리
클라우드 엔지니어의 리눅스 입문
클라우드 엔지니어가 다루어야 할 리눅스 지식!
- KVM 가상화
- 데이터센터 구축 시나리오 (서비스 제공을 위한 인프라 만들기)
- Docker: PAAS, SAAS
- 예시
- WORDPRESS보다 복잡한, Xpress Engine(웹사이트 제작 코드 제공 환경) 즉시 제공 가능
- 사용자가 클라우드 환경에 접속하여 자신에게 필요한 MARIADB 10.3을 요청하게 되면?
- root 패스워드 -> 컨테이너로 mariaDB를 제공(10초 정도 만에)
- 접속 주소를 제공 -> 그 주소를 통해 LOCAL에서 접속 -> MARIADB에 즉시 접속 가능
- 다음 Linux 운영체제를 모두 사용해 볼 예정!
- Linux: CentOS7(가상화, OpenStack)
- Ubuntu 18.04 LTS, 20.04 LTS (도커/쿠버네티스)
리눅스의 파일 시스템
- 리눅스의 파일시스템은 Tree 형태를 가짐
- 루트 파일 시스템(/): 최상위 디렉터리
- 그 밑에: root, etc, var, home, usr..
- root: root 사용자의 홈 디렉터리
- home: 일반 사용자들의 홈 디렉터리
- etc: 구성 파일들이 존재하는 디렉터리 (config)
- OS(kernel) > 실행 파일 > 구성 파일(서비스의 포트, 경로 등등) > 서비스는 구성 파일을 바탕으로 실행됨
- var: 시스템 내에서 실시간으로 만들어 지는 Log 와 같은 파일들이 저장됨
- usr: 주로 실행 파일들이 존재함
- boot: 부팅을 위한 커널이 존재하는 공간
- 지워버릴 경우 부팅에 심각한 문제가 발생할 것
- CD를 활용하여 경로 이동하기
- 리눅스는 Tree 형태이므로 다른 디렉터리로 직접 이동하는 것은 불가능함
반드시 Tree를 따라 이동해야 함
- 이동 방법
- 절대경로
- 일반적으로 /(루트파일시스템) 부터 시작하여 최종 목적지까지의 디렉터리를 순차적으로 작성함
- 현재 사용자의 위치와 관계 없이 어느 위치에서든 동일한 경로로 이동할 수 있다
- 상대경로
- 주로 . 및 ..을 이용하여 경로를 작성한다
- 현재 사용자의 위치에 따라 이동하는 경로가 달라짐
- ./지금위치 ../상단위치 /하단위치
- 절대경로
알아두어야 할 파일과 디렉터리
1 . usr 폴더
- 각종 실행 파일이 저장되며, 명령어가 저장되는 공간임 (PATH에 등록되어 있다)
- 실행 파일에 두면 호출하기만 하면 명령어처럼 활용할 수 있게 됨
- ex) /usr/bin/zip -> 압축 실행 파일
- path 변수에 zip이 있기 떄문에 zip 만 입력해도 압축 파일 해제를 실행할 수 있다
- 다음을 생성하고
```shell
! /bin/bash
echo "hello"
- usr 폴더로 이동시킨 뒤 실행하면, 풀 경로로 입력 안해도 됨!
[root@localhost ~]# vi hello
[root@localhost ~]# chmod +x
[root@localhost ~]# chmod +x hello
[root@localhost ~]# /bin/bash hello
hello
실행 폴더로 옮기면 PATH에 등록됨
[root@localhost ~]# mv hello /usr/bin
[root@localhost ~]# hello
hello
사실 아래처럼 바로 실행할 수 있는 것은 bash가 실행 파일로 PATH에 저장되어 있어서임
[root@localhost ~]# ./hello
hello
2 . /etc/hosts 파일
- PC나 서버는 도메인 이름을 입력헀을 경우 다음을 수행함
- 캐시 검색
- /etc/hosts 파일 검색
- DNS 서버에서 쿼리함
- 이 때 hsots 파일을 살펴 보면
[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- hosts를 다음과 같이 변경하면
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
211.183.3.1 myhome
- myhome 에 핑을 전달 가능함(PATH에 IP를 등록해 둠)
[root@localhost ~]# vi /etc/hosts
[root@localhost ~]# ping -c 3 myhome
PING myhome (211.183.3.1) 56(84) bytes of data.
64 bytes from myhome (211.183.3.1): icmp_seq=1 ttl=128 time=1.04 ms
64 bytes from myhome (211.183.3.1): icmp_seq=2 ttl=128 time=0.638 ms
64 bytes from myhome (211.183.3.1): icmp_seq=3 ttl=128 time=0.540 ms
3 . /etc/hostname
- 서버의 이름을 정의하는 파일
[root@localhost ~]# 가 의미하는 것
- root: 현재 사용자
- localhost: 서버의 이름
- ~ : 현재 위치가 root의 홈 디렉터리라는 것을 의미 (/root)
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
[root@localhost ~]# hostnamectl set-hostname websrv 파일 수정
[root@localhost ~]# cat /etc/hostname
websrv
[root@localhost ~]# su ROOT 사용자로 재로그인
[root@websrv ~]#
- DataCenter 에서는 /etc/hostname에 DataCenter 내의 서버들의 이름과 IP를 등록해 둔다
- 하지만 서버가 너무 많을 경우, DC 내에 사설 DNS를 구축하여 사용할 수 있다
- (srv1.mycompany.pri, srv2.mycompany.pri ..)
4 . /etc/sysconfig/network-scripts/
- 여기서 IP를 설정을 수정할 수 있다
[root@websrv ~]# cd /etc/sysconfig/network-scripts/
[root@websrv network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@websrv network-scripts]# ls
ifcfg-ens32 ifdown-isdn ifup ifup-plip ifup-tunnel
ifcfg-lo ifdown-post ifup-aliases ifup-plusb ifup-wireless
ifdown ifdown-ppp ifup-bnep ifup-post init.ipv6-global
ifdown-bnep ifdown-routes ifup-eth ifup-ppp network-functions
ifdown-eth ifdown-sit ifup-ib ifup-routes network-functions-ipv6
ifdown-ib ifdown-Team ifup-ippp ifup-sit
ifdown-ippp ifdown-TeamPort ifup-ipv6 ifup-Team
ifdown-ipv6 ifdown-tunnel ifup-isdn ifup-TeamPort
[root@websrv network-scripts]# vi ifconfig-ens32
- GUI 환경에서 애플리케이션을 이용한 IP변경, Wireless 연결 등은 Network Manager를 이용한다
- 만약 GUI가 아닌, 파일을 직접 변경하면 바로 적용되지 않으며, 반드시 서비스를 수동으로 갱신시켜줘야 한다
장점: 수정하고 나서, 갱신 전까지 기존의 네트워크를 계속 사용할 수 있다
- 파일 변경 후, 서비스를 갱신해야 서비스가 설정 파일을 읽어들이고, 이를 서비스 환경에 반영하게 된다