nfs -> shared storage
storage
sed -i 's/old/new/' abc.txt
-> abc.txt 파일 내에서 만나게 되는 첫 번째 old를 new로 변경한다.
sed -i 's/old/new/g' abc.txt
-> 파일 전체에서 old를 new로 변경
edit=meow
sed -i "s/old/$edit/" abc.txt
-> 변경될 변수를 이용하여 처리하고 싶으면 큰 따옴표 사용
vi에서 sed 사용하기
:%s/old/new/g
:s/old/new/
sed -i -r -e "/\[database\]/a\5.5.5.5" test.txt
-e: 정규표현식
/a -> 아랫 줄에 append
centos7 버전 이후로(이전에는 eth0, eth1, ...) 인터페이스의 이름은 다음의 과정을 거쳐 결정되도록 설정되어있다.
ens(slot) -> enp(port) -> eno(bios)
우리는 우리가 직접 입력한 인터페이스 이름을 사용하고 싶다. eth0으로 변경
vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
한 줄 수정
cd /etc/sysconfig/network-scripts/
ls ifcfg-*
mv ifcfg-ens32 ifcfg-eth0
vi ifcfg-eth0
해당 줄만 남기고 모두 삭제
:%s/ens32/eth0/g
ens32를 모두 eth0으로 변경
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
ifconfig eth0
ping -c 3 www.google.com
touch ddd.sh
ls -l ddd.sh
rw- r-- r--
chmod u+x ddd.sh
ls -l
rxx r-- r--
user에게 x 권한 추가
chmod +x ddd.sh
ls -l
rwx r-x r-x
모두에게 x 권한 추가
vi /etc/default/useradd
HOME=/newhome
한 줄 변경
mkdir /newhome
ls -l /
home과 newhome이 보임
useradd user2
tail -1 /etc/passwd
newhome 밑에 user2가 생겼음
ls -l /newhome/
퍼미션 확인 -> user2라는 소유주만 rwx를 할 수 있음
groups user2
user2: user2
-> user2그룹에 속함
usermod -g root user2
groups user2
user2: root
-> root 그룹으로 바뀜
생성된 사용자는 무조건 하나의 그룹에는 포함되어야 한다.
만약 2개의 그룹에 포함되어 있다면? 둘 중 하나는 primary group이어야 한다.
usermod -g user2 user2
usermod -aG wheel user2
groups user2
user2 : user2 wheel
usermod -aG newgroup user2
groups user2
user2를 기존 그룹을 유지하면서 새로운 newgroup에 포함시킨다.
-a: append
자주 쓰는 명령어이므로 반드시 기억하기!
mount | grep sr0
ls /run/media/root/CentOS\ 7\ x86_64/
umount /dev/sr0
/dev/sr0는 리눅스의 ODD
리눅스의 물리장치는 논리장치(디렉토리)와 연계된 상태에서 사용할 수 있다. -> 마운트
물리 장치 -> /dev
(외부에 있는 스토리지에서 볼륨을 마운트하여 사용하는 경우에는 로컬에서 vda, vda와 같은 형태로 보이기도 한다. vda -> vda1, vda2)
mount /dev/sr0 /test
umount /test 또는 umount /dev/sr0
mkdir /test
mount /dev/sr0 /test
ls /test
mount | grep /dev/sr0
umount /test
ls /test
마운트 정보를 지속적으로 유지하고 싶다면 /etc/fstab 에 기록해둔다. OS가 부팅 시 읽어들인다.
cat /etc/fstab
RAID는 두 개 이상의 디스크를 결합하여 데이터 손실을 방지하고 데이터 I/O를 높여줄 수 있다.
RAID는 리눅스와 같은 운영체제에서 소프트웨어적으로 제공하는 방식과 서버/스토리지 자체적으로 제공하는 하드웨어적인 기법으로 구분할 수 있다.
-> iptime에서 RAID 설정 화면
결국 RAID를 사용하면 데이터를 안정적으로 관리할 수 있다. 또한 쓰기 속도를 향상시킬 수 있다.
init 0
edit virtual machine settings -> Add... -> Hard Disk -> SCSI -> create a new virtual disk -> 5GB -> disk file: CentOS1-0.vmdk -> Finish
파티셔닝, 포멧, 마운트까지 해야 사용할 수 있음
fstab에 기록해두어야 재부팅 시에서 마운트 유지됨
ls /dev/sd*
/dev/sdb -> 아직 설정되지 않았기 때문에 번호가 부여되지 않았음
fdisk /dev/sdb
n
p
w
primary -> 데이터 작성이 가능한 공간
최대 4개의 공간 있음 -> p1, p2, p3, p4
MBR(master boot record) -> OS 설치 가능
마지막 영역은 extended -> OS 설치 불가 -> 추가로 파티셔닝을 할 수 있음
mkfs.ext4 /dev/sdb1
mkdir /added
mount /dev/sdb1 /added
df -h | grep /added
vi /etc/fstab
/dev/sdb1 /added ext4 defaults 0 0
앞 0: 부팅 시 디스크 점검을 안 하면 0, 점검을 하면 1
뒤 0: 점검 순서
df | grep sdb
그림 출처: https://velog.io/@dustndus8
chmod 777 /added
touch /added/index.html
vi /added/index.html
파일에 내용 입력
nfs-utils 설치
yum -y install nfs-utils
vi /etc/exports
/added 192.168.1.115(rw,sync,no_root_squash)
/added 192.168.1.116(rw,sync,no_root_squash)
systemctl restart nfs-server
systemctl enable nfs-server
systemctl status httpd
touch /var/www/html/main.html
showmount -e 192.168.1.114
mkdir /suyeon
mount -t nfs 192.168.1.114:/added /suyeon
cp /suyeon/index.html /var/www/html/main.html
tail -3f /var/log/httpd/access_log
https://cloudwafer.com/blog/installing-haproxy-on-centos-7/
yum -y install haproxy
vi /etc/haproxy/haproxy.cfg
haproxy 설치
haproxy 다음과 같이 설정
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http_front # frontend 에 속하며, Group 은 http_front 그룹이다.
bind *:80 # 모든 IP 로 80포트로 접근하는 대상에 대해서 처리한다.
stats uri /haproxy?stats # status 를 체크할수 있는 url 로 서버/haproxy?status 로 접근
default_backend http_back # 해당 front_end 로 접근하는 대상은 backend 중 http_back 그룹으로 보낸다.
backend http_back # backend 중 http_back 그룹으로 설정하였다. (status 에서도 동일 이름 출력)
balance roundrobin # roundrobin 방식으로, 아래 사이트를 순차적으로 접근하게 한다.
server my_server1 192.168.1.115:80 check # 접근 대상 site 1번이며, 서버의 닉네임은 my_server1 이고, 해당 서버 ip 와 port 에 접근하도록 한다. check 는 health 체크를 의미한다.
server my_server2 192.168.1.116:80 check # 접근 대상 site 2번이며, 서버의 닉네임은 my_server2 이고, 해당 서버 ip 와 port 에 접근하도록 한다. check 는 health 체크를 의미한다.
frontend -> 192.168.1.117 -> HAProxy
backend -> 192.168.1.115
backend -> 192.168.1.116
sudo systemctl restart haproxy
sudo systemctl enable haproxy
haproxy 실행
http://192.168.1.117/haproxy?stats
.115와 .116 에게 round robin으로 load balancing이 되는 것 확인
리눅스는 설치를 위한 모든 코드를 외부에 공개한다. 따라서 특정 애플리케이션을 설치하고자 한다면 소스코드를 다운로드하고 파일을 컴파일한 뒤 이를 설치하는 과정을 거쳐야한다. 컴파일을 위해서는 설치 위치, 필요한 옵션 등을 수동으로 지정할 수 있어 전문가나 익숙한 사람들에게는 좋은 방법이 될 수 있으나, 초보자나 클라우드 환경과 같이 빠른 설치가 필요한 곳에서는 어려운 일이 될 수 있다. 이를 해결하기 위하여 윈도우의 install.exe와 비슷한 파일을 RedHat에서 만들었는데, 이를 RPM이라 부른다(또는 패키지라 칭한다).
rpm -e gedit
-e: erase
gedit 삭제함
rpmfind.net에서 gedit 검색
맨 아래의 버전에서 링크 복사
wget http://www.rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/gedit-3.28.1-3.el7.x86_64.rpm
rpm -ivh 패키지이름.rpm
install한다. 단, 동일 패키지가 설치되어있다면 오류가 발생한다. -> 잘 안 씀
rpm -Uvh 패키지이름.rpm
기존에 설치된 것 있는지 확인하고 기존 설치된 버전보다 지금 설치하고자 하는 버전이 최근 버전이라면 업그레이드 설치를 진행한다. 만약 설치되어있지 않다면 정상적인 install을 진행한다. -> 자주 쓰는 명령어
-v: 설치 과정 확인
-h: #를 이용하여 확인
rpm -Uvh gedit-3.28.1-3.el7.x86_64.rpm
gedit 설치 완료
rpmfind.net에서 wireshark-gnome 검색
wget http://www.rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/wireshark-gnome-1.10.14-25.el7.x86_64.rpm
rpm -Uvh wireshark-gnome-1.10.14-25.el7.x86_64.rpm
의존성 문제로 설치 안 됨
gedit는 그래픽 환경에 의존성을 갖는다.
yum -> dnf
yum은 인터넷이나 회사 내에 다수의 패키지를 저장소에 보관하고 사용자가 필요한 패키지를 요청했을 때 해당 패키지, 의존성 해결을 위한 패키지를 묶어 사용자에게 전달해주는 방식이다.
민약 패키지가 epel에서 제공하는 패키지라면 CentOs에서는 설치할 수 없다. 이 경우에는 epel 목록을 설치하여 해결할 수 있다.
ls /etc/yum.repos.d/
yum 설치 목록 확인
yum -y install epel-release
ls /etc/yum.repos.d/
epel 목록이 설치되었음
wget http://...com/test.rpm
yum -y install test.rpm
test.rpm을 설치하면서 해결해야할 의전성 패키지는 yum으로 연결하여 다운로드 설치한다.
yum clean all
yum check-update
yum -y install && init 0
dnf -y install php
php -v
php 설치 후 설치 확인
7.2버전이 설치되었음
dnf module list php
php의 버전들 확인
dnf -y remove php
php 제거, 의존성 있는 것들까지 제거
dnf module reset php
y
dnf module enable php:7.4
y
7.4버전 enable 시키기
dnf module list php
7.4 버전이 enable 되었음
dnf -y install php
php -v
php 재설치
7.4 버전이 설치되었음
dnf module list python*
3.6 버전이 enable 되어있음
python3 --version
3.6.8 버전이 설치되어있음
내일 배울 내용:
파일 압축, cron과 at
cron은 젠킨스(crontrigger), k8s(cronjob)에서도 나오기 때문에 매우 중요함
반복 일정에 따라 잡을 만든다
과제 1. cron이란?
과제 2. date 명령을 실행했을 때 아래와 같은 형식으로 출력되도록
2207211750