4 분 소요


파티션

리눅스 시스템에서는 각각의 장치들을 파일로 만들어 파일이 장치를 가리킬 수 있게끔 만들어 놓았고 이러한 파일들을 장치파일이라고 한다.

주 파티션
기본 파티션. 하나의 하드디스크에는 주 파티션과 확장 타피션을 4개 까지 만들 수 있는 제한이 있다. 그 이상 만들기 위해서는 확장 파티션을 만들어 그 안에 논리 파티션을 두게 된다.
확장 파티션
저장 공간이 없으며 논리 드라이브를 만들 수 있게 해주는 그릇 역할만 한다. 확장 파티션은 디스크에 하나만 만들 수 있다.
논리 드라이브
4개 이상의 파티션을 사용하게 되는 경우 hda4를 확장 파티션으로 지정하여 논리 드라이브를 만들게 된다. 무조건 5번부터 번호가 부여된다.

sda~sdz 디스크파일들 img

# 파티션 생성
fdisk 디스크파일
# 파일시스템 생성
mkfs -t fstype 장치명

mkfs ext4 /dev/sdb1 # 혹은 mkfs -t ext4  /dev/sdb1
# 파일시스템 마운트 (타입 명시해야 하나 보통 감지하므로 생략)
mount [-t 파일시스템] [-o 기타옵션] 장치파일경로 마운트포인트

mount /dev/sdb1 /data
# 마운트 해제
unmount 장치명 # 또는 unmount 마운트포인트

img

정적 마운트 파일(/etc/fstab)
시스템 부팅 시 자동으로 마운트 될 파일시스템을 기록 장치명 마운트포인트 파일시스템종류 마운트옵션 점검여부 점검우선순위
  • 점검여부(dump가능 여부)
  • 점검우선순위: 0:안함, 1;루트파일 시스템일 경우, 2:루트파일 시스템이 아닐경우
blkid 장치 # uuid 알아낼 수 있다.

diff 파일 파일 # 두 파일의 차이를 출력

응급복구

체인지 루트 명령어로 복구대상 루트로 변경

chroot /mnt/sysimage

리눅스 네트워크

네트워크의 기초

img

WAN (World Area Network): 광역 통신망

LAN (Local Area Network): 근거리 통신망; 작은 의미의 Network

Intranet: 기업이나 단체가 내부에서 사용하는 통신망

IP주소
호스트 간의 통신을 위해서 주소가 필요한데 이를 ip라는 프로토콜이 제공한다.

IPv4 - ‘.’을 이용한 4개의 필드 (주로 사용)
IPv6 - ‘:’으로 구성된 8개의 필드

넷마스크
넷마스크(NewMask: 255.255.255.0 같은)를 확인하면 같은 네트워크인지 확인가능하다. (넷마스크와 ip주소를 and 비트연산을 수행해서 같으면 같은 네트워크)
넷마스크는 네트워크의 규모를 나타낸다. (255.255.255.0 일 경우 0~255의 호스트 가능)
이 주소(.0)는 이 네트워크에 부여하는 주소 (Network 주소)
마지막 주소인 .255는 네트워크의 끝을 알려주는 주소(Broadcast 주소)
해당 네트워크 내의 호스트들은 broadcast주소를 항상 주시하므로 이 주소로 메시지를 날리면 모든 호스트들이 메시지를 받는다.

넷마스크 255.0.0.0을 사용하는 네트워크: A클래스
넷마스크 255.255.0.0을 사용하는 네트워크: B클래스
넷마스크 255.255.255.0을 사용하는 네트워크: C클래스
넷마스크 255.255.255.128을 사용하는 네트워크: 128개의 호스트(C클래스를 쪼갬) -> 서브넷이라고 한다.

라우터(Roouter)
게이트웨이 역할을 하는 일반적인 하드웨어 장비이다. 게이트워이는 두개 이상의 물리적으로 구성되어있는 네트워크에서 서로의 네트워크를 연결해 주는 중계 호스트이다. 또한 이런 중계 호스트 역할을 하는 것이 전용 라우터 장비이다. 기술적인 용어로써 라우터는 논리적으로 구성된 네트워크 사이에서 패킷을 전송시키는 장치를 말한다.

GATEWAY: 어떻게 다른 네트워크로 가야하는지를 알려줌
ROUTER: 외부에서 내부를 안내함
둘다 같은 장비이나 시점에 따라 다르게 불림

DNS(Domain Name Server)
호스트 이름을 IP주소로 변환한다.(역변환도 가능)
논리적 네트워크이다. 다른 LAN에 있어도 구성된다.
  • 근거리 통신망에서의 통신

우선 연결을 구성해야 한다. 최초 연결을 생성할 때 세션이 구성된다.

클라이언트가 대상서버에 접근하기 위해서는 port를 통해야 한다.

포트번호는 1~65535까지 존재, 특정 포트에 대해 어떤 목적의 접근인지에 대한 명세가 존재한다. 서버에서는 해당 포트에 서비스를 바인딩해서 소켓(socket)을 형성한다.

일반적으로 포트의 절반은 IN전용 포트, 나머지 절반은 OUT전용 포트로 사용한다.

1~1023포트: 용도가 정해져 있다. 임의로 서비스 포트번호를 바꿀 수 없다.


네트워크 관련명령

ifconfig
네트워크를 설정하거나 네트워크 정보를 확인
nslookup
네임서버 호스트 검색
host
호스트 이름에 정보를 가져온다.
nmap
포트를 검사하는 유틸리티이다. 해당 주소 탐색한다.

파일의 백업 및 복원

# 압축하기
gzip Python-3.9.15.tar

아카이브 자체를 압축해버려 원본이 사라진다. 디렉토리는 압축하지 못한다(그래서 tar이 필요)

# 압축해제
gunzip Python-3.9.15.tar.gz

원본파일이 사라진다

tar 아카이브

일반적으로 리눅스에서의 압축은 하나의 파일만 압축할 수 있다. 그러므로 디렉토리나 여러개의 파일을 압축하기 위해서는 하나로 묶어주는 tar라는 명령어를 제공한다.

옵션 설명}
c create; 압축
x extract; 압축해제
v verbose; 압축과정을 보여줌
f file; 파일 묶음
z gzip으로(*.gz)
j bzip으로(*.bz2)
J  
# tar묶기(Python-3.9.15/ 디렉토리를 Python-3.9.15.tar 파일로 묶기)
tar cf Python-3.9.15.tar Python-3.9.15/
# tar 해제(Python-3.9.15.tgz 파일을 현재 디렉토리에 해제, 디렉토리 지정불가)
tar xf Python-3.9.15.tar
# tar 묶고 압축(./Python-3.9.15/ 디렉토리를 묶은 후 Python-3.9.15.tgz 파일로 gzip압축, 과정 보여주기)
tar zcvf Python-3.9.15.tgz ./Python-3.9.15/
# 압축 해제와 tar 해제(Python-3.9.15.tgz 파일을 gzip 압축해제하고 묶음을 풀기, 과정 보여주기, 대상 디렉토리는 /tmp/)
tar xvzf Python-3.9.15.tgz -C /tmp/
  • 아카이브 특징 그 파일의 모든 속성을 그대로 유지한채 풀 수 있다. (소유권 등)

시스템 백업에는 dump나 cat으로 이미지 통채로 떠야한다.


MySQL Database

CentOS에서는 MySQL 데이터베이스 패키지를 지원하지 않는다. 설치가 불가능한 것은 아니지만 MariaDB를 설치한다.

  • 설치
# 패키지 목록 확인
yum list | grep mariadb
# 패키지 정보 확인
yum info mariadb-server
# mariadb-server 설치
yum install mariadb-server
  • 데몬구동, 확인, 정지 img
# 구동
systemctl start mariadb
# 구동 확인
systemctl status mariadb
# 시스템 시작 시 자동 실행 설정
systemctl enable mariadb

포트 포워드

10.0.2.0/24(24:CDIR 표현법255.255.255.0 와 같음)

img

# sql실행
mysql -uroot
-- 비밀번호 변경
MariaDB> SET PASSWORD FOR root@'localhost' = PASSWORD('비밀번호');
# 비밀번호 적용 접속
mysql -uroot -p -hlocalhost(접속할 주소)
# mariadb 삭제(이후 MySQL설치할 경우를 대비해 클린 삭제)
yum uninstall mariadb
rm -fr /etc/my.cnf /etc/my.cnf.d
rm -fr /var/lib/mysql

JAVA 실행환경 구축하기

JDK 설치

yum install -y java-11-openjdk
# 자바 버전 선택
alternatives --config java
  • JAVA_HOME 시스템 환경변수 설정

부팅 시 /etc/profile.d/*.sh 자동으로 읽어들인다.

/etc/profile.d/java.sh를 작성한다.

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64
# 재부팅 없이 적용
source /etc/profile

# 적용 확인
echo $JAVA_HOME

tomcat 서버 설치

(JRE가 필요하다.)

리눅스 방화벽에 등록이 안된 경우

루트라 할지라도 selinux(security linux)에 등록해야 실행가능 => 둘다 비활성화 할 것이다.

# 방화벽 중지
systemctl stop firewalld

# 방화벽 영구해제
systemctl disable firewalld
# selinux 해제
cd /etc/sysconfig
vi selinux
# selinux 수정
SELINUX=disabled

http 포트포워드 등록(http로 접속하면 기본이 80번 포트인데 이를 8080포트로 돌림) img

# tomcat 구동
systemctl start tomcat

# tomcat 확인
systemctl status tomcat

# 시스템 시작 시 자동 실행 설정
systemctl enable tomcat
# 네트워크 상태 확인
netstat -apn
tomcat 추가 설치
yum install -y tomcat-webapps tomcat-admin-webapps tomcat-javadoc tomcat-el
  • 현재 구성한 네트워크 img

파이썬 환경 구축

yum install -y gcc openssl-devel bzip2-devel libffi-devel
# gcc: 컴파일러
# openssl
# bzip2: 압축프로그램
# libffi: 인터페이스 그룹
# 웹 주소를 다운로드
wget 주소

파이썬 설치

# 압축해제 폴더 이동
cd Python-3.9.15/

# configure: 본격적으로 컴파일 전에 컴파일 환경 체크, 명세파일 만드는 단계
./configure --enable-optimizations

# make 유틸리티를 이용하여 설치
make altinstall

# 파이썬 설치 경로 확인
which python3.9

# 파이썬 버전 확인
python --version

기본 파이썬의 버전을 출력해보면 구버전으로 나온다.

구버전 링크를 바꾸면 구버전을 사용하는 프로그램에 문제가 발생할 수 있다.

vi ~/.bashrc
# 항목 추가
alias python='/usr/local/bin/python3.9'

(이 설정은 root홈에 적용했으므로 root에서만 적용된다)

# 로그아웃 없이 적용
source ~/.bashrc

MySQL 설치

yum에 없으므로 추가로 레포지토리를 등록해야한다.

# 설치
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld

# 로그인
mysql -uroot -p

임의로 비밀번호를 발급하므로 로그를 뒤져야 한다.

less /var/log/mysqld.log # 에서 찾을 수 있다.
-- 로그인 후 비밀번호 재설정(MySQL은 대소문자, 특수기호, 숫자 모두를 사용한 8자리 이상 비밀번호가 필수이다)
ALTER USER root@'localhost' IDENTIFIED BY '비밀번호';

-- 계정추가 (계정과 호스트를 지정할 수 있다. %는 모든 호스트)
CREATE USER 계정@'%' IDENTIFIED BY '비밀번호';

-- 데이터베이스 생성
CREATE DATABASE 데이터베이스명;

데이터 집합체(큰 의미) 테이블 스페이스(작은 의미)

-- 데이터베이스 보기
SHOW DATABASES;

-- 권한부여
GRANT all privileges ON 데이터베이스명.* TO 계정@'%';

HeidiSQL 세션 추가
계정@192.168.56.100;3306/데이터페이스명
외부에서 DB에 접근 허용하려면 포트포워드 해줘야한다.


Reference

  • 이 포스트는 SeSAC 인공지능 SW 개발자 양성 과정 - 김기희 강사님의 강의내용을 정리한 것입니다.

태그:

카테고리:

업데이트:

댓글남기기