Ⅰ. 개요
리눅스 파일 구조는 제일 상단에 root 디렉토리가 있으며 그 밑에 bin, boot, dev, home, lib, media, mnt, opt, sbin, tmp, usr, var, proc, run 디렉토리 등이 있다. 각각의 디렉토리에 어떤 파일이 모여있는지 알아본다. 그리고 특정 작업을 위해 어떤 파일 혹은 디렉토리를 찾아서 접근해야 하는지 알아본다. 리눅스에는 다양한 명령어가 있지만, 오늘은 사용자 그룹과 관련한 명령어, 파일과 디렉토리 관련 명령어, 링크 명령어, 관리자 명령어, 네트워크와 시스템 설정 관련 명령어를 알아본다. 그리고 리눅스에서 문서 편집을 용이하게 하는 vi 에디터에 대해 알아본다.
Ⅱ. 리눅스 파일 구조
리눅스의 파일 구조는 계열마다 차이가 있을 수 있지만 거의 동일한 구조를 가진다. 파일 구조를 알아야 서버 구축이든, 보안을 위한 작업이든 명령어를 통해 수월하게 진행해나갈 수 있는데, 구조를 모른다면 어떻게 작업해야 할지 감이 안잡힐 것이다. 처음에 리눅스 명령어를 간단하게 배울 때에도 명령어를 어떻게 써야 할지 감이 오지 않았지만, 파일 구조를 이해하면서 조금씩 개념이 잡히는 것 같다.

기본적으로 최상단에 root 디렉토리가 있다. 윈도우에서 '로컬 디스크 c:\'와 유사하며, 전체 디렉토리의 가장 위에 존재하기 때문에, 리눅스에서 모든 경로는 root 디렉토리로부터 시작한다. 관리자 계정으로 로그인하면 이 디렉토리부터 경로를 가진다.
bin
이 디렉토리는 리눅스에서 실행 파일을 모와둔 곳이다. binary파일의 집합으로 시스템 실행 파일이 있으며, 일반적인 시스템 명령어에 관련된 파일이 모여있다.
2. boot
kernel(커널)과 관련된 파일이 모여있으며 부팅할 때 커널이 읽어들이는 정보가 모여있다.
3. dev
이 디렉토리는 드라이버 관련 파일이 모여있다. 가상머신을 이용하게 될 경우 가상 하드웨어에 대한 디바이스 제어를 위한 정보, 드라이버 관련 파일이 있다.
4. etc
이 디렉토리는 서버를 구축 및 운영, 관리하게 될 때 많이 접근하게 될 수도 있는데, 리눅스와 관련한 모든 설정 파일이 이 디렉토리에 담겨있다. 나중에 서버(ex. nginx)를 설치할 경우 관련 설정 파일도 이 디렉토리에 접근해서 변경가능하다.
5. home
이 디렉토리는 윈도우의 사용자 계정 디렉토리와 같다고 생각할 수 있다. 리눅스에서 사용자 계정을 만들게 되면 이 디렉토리 밑에 사용자 계정명으로 된 디렉토리가 생성된다. 일반적으로 여러 파일을 이 디렉토리에 업로드해서 다른 경로로 보내주거나 수정을 하는 등 여러 작업을 할 수 있다. 일반 사용자 계정으로 로그인하게 되면 이 경로로부터 시작된다.
6. lib
여러 프로세스가 실행될 때 메모리(리소스) 공간의 효율적인 관리를 위해 프로그램의 동일한 코드를 같이 사용할 수 있게 해주는 윈도우의 dll 파일처럼 리눅스에서 so, a 파일이 모여있는 곳이다. 윈도우에서 프린트 기능을 이용했을 때 동일한 창을 어디서든 볼 수 있듯, 리눅스에서도 공통된 프로그램 기능이 이 디렉토리를 참조하여 실행된다.
7. media, mnt
이 디렉토리를 이해하기 위해 마운트(Mount) 개념을 알고 있어야 한다. 마운트는 usb, 디스크 등의 장치를 연결했을 때 디렉토리와 연결시키는 것이다. 윈도우에서 외장 하드 디스크나 usb를 연결해서 파일을 백업하거나 가져오거나 하는 과정을 생각하면 이해가 될 것이다. 이렇게 물리적인 장치를 디렉토리와 연결해서 활용할 수 있게 해준다.
※ ubuntu에선 자동 마운트를 위한 cdrom 디렉토리가 있다. media 디렉토리와의 차이점은 어떤 장치를 읽어들이냐인데, cdrom의 경우 CD/DVD를 읽어들이지만, media의 경우 수동으로 마운트해줘야 하며, USB, 외장 하드, SD 카드 등을 읽어들인다.
8. opt
윈도우에서 사용자 프로그램이 'Program Files' 디렉토리에 설치되듯 리눅스에서 추가적으로 설치한 외부 사용자 프로그램이 이 디렉토리에 설치된다. 보통 'sudo apt-get install 프로그램' 명령어로 설치하는 외부 프로그램이 설치되는 디렉토리이다.
9. usr
opt 디렉토리와 비슷하게 사용자 프로그램이 설치되지만, 외부 사용자 프로그램이 아닌 일반 사용자 계정이 사용하는 기본 응용 프로그램과 관련된 디렉토리이다. 일반 사용자와 관련된 시스템 관련 파일이 포함된다.
10. var
로그(log)나 데이터 파일이 여기에 저장된다. 웹서버, DB 등의 소스들이 여기에 설치되며, 사용자가 직접 변경하는 파일들이 여기에 많다. 서버를 개설하고 관리하고 운영하는데 있어 이 디렉토리는 많이 들어가게 될 수 있다.
11. proc
윈도우에서 ctrl + alt + del 키의 조합으로 들어갈 수 있는 작업관리자에서 프로세스를 확인할 수 있다. 현재 실행되고 있는 프로그램부터 백그라운드 프로그램까지 메모리를 얼마나 차지하고 있고 cpu는 얼마나 사용하고 있는지 등 프로세스 관련 정보를 볼 수 있는 곳이다. 이와 마찬가지로 리눅스에서 프로세스 관련 정보를 볼 수 있는 곳이 이 디렉토리이다.
12. run
서버 구동 시 서로 통신하기 위한 socket, 프로세스 id 등을 관리하며 실행 중인 서비스와 관련된 파일이 저장되어 있는 곳이다.
13. sbin
시스템 명령어와 관련된 파일이 모여있다. bin 디렉토리에서 일반적인 시스템 명령어가 모여있다면, 이 디렉토리에선 'sudo apt update', 'sudo su', 'sudo apt-get install 프로그램' 등 root 권한을 가진 사용자만 접근할 수 있는 필수적인 시스템 바이너리(system binary) 파일과 관련되어 있다.
14. tmp
임시 파일 디렉토리이며, 시스템을 종료하고 다시 킬 때 날라갈 수 있다. 버퍼나 임시로 다운받은 파일을 필요없어지면 지운다. 임시로 다운받은 파일을 실제 이용할 디렉토리로 옮기기 전에 잠시 담아두는 역할을 한다.
※ VMware에서 가상머신을 복사하는 방법이 있다.

위에서 보이는 화면에서 복사하고자 하는 가상머신에 마우스를 갖다 대고 오른쪽 클리 후 Manage - Clone을 누르면

이 화면이 나타난다.

다음 화면에서 기존의 스냅샷이 있다면, 그 데이터를 기준으로 복사할 수 있고 없다면 현재 가상머신 상태를 그대로 복사한다.

여기선 가상머신의 데이터 전체를 그대로 복사할지 아니면, 원본 가상머신을 링크로 연결할지 선택할 수 있는데, 만약 배포와 관련할 경우 링크로 복사함으로써 디스크의 용량을 절약할 수 있다. full clone의 경우 전체를 그대로 복사하기 때문에 용량을 더 차지한다.

마지막으로 가상머신의 이름과 디렉토리 경로를 지정하면 끝난다.
Ⅲ. 리눅스 명령어
지난 게시글 이후로 추가적으로 배운 명령어를 정리한다.
사용자와 그룹 관련 명령어
사용자와 그룹 관련 파일 중 /etc/passwd 파일이 중요하다. 리눅스에 접속하고 로그인할 때 이 파일로 권한을 부여하여 로그인을 제한할 수 있으며, 모든 계정이 이 파일에 담겨있다.

위 사진에서 보이는 것처럼 /etc/passwd 파일은 이렇게 구성되어 있는데, 한 줄의 구성은 다음과 같다. ':(콜론)'으로 구분되는 맨 처음은 사용자 계정명이다. 다음의 'x' 기호는 암호화된 비밀번호를 의미하고, 다음의 숫자 중 첫 번째는 사용자 ID, 그리고 두 번째는 사용자가 소속된 그룹 ID를 뜻한다. 그 다음은 추가 정보이며, 그 다음에 오는 경로는 홈디렉토리를 의미한다. 사용자 계정으로 로그인 했을 때 바로 홈디렉토리로 접속되는데 그때 그 경로이다. 마지막에 나타내는 정보는 기본적으로 사용하는 셸이다. 예를 들어, /bin/bash로 끝나게 된다면 root 계정으로 로그인 시 셸을 실행시킨다.
※ 예전에는 /etc/passwd 파일에서 사용자 계정의 비밀번호를 볼 수 있었지만, 이 파일은 모든 사용자 계정이 접근할 수 있기 때문에, 보안상의 이유로 /etc/shadow 파일에서 단방향으로 암호화된 비밀번호를 숨겨두고 있다.
※ /bin/bash는 로그인 시 기본적으로 셸을 실행시킨다면, /usr/sbin/nologin은 비밀번호가 맞다하더라도 로그인을 제한한다. 마찬가지로 /bin/false도 로그인을 막지만, 올바른 비밀번호에도 비밀번호가 잘못되었다고 나오며 로그인을 제한한다.


리눅스 셸인데, 위 두 사진을 보면 가장 마지막에 '$'로 끝나는지 '#'으로 끝나는지 구분된다. '$'은 일반 유저 상태임을 나타내고 '#'은 슈퍼 유저(관리자 권한)을 나타낸다. 보통 'sudo ~'로 시작하는 관리자 명령어는 슈퍼 유저 권한일 때 사용 가능하다.
많이 활용될 수 있는 사용자와 그룹 관련 명령어를 소개한다.
#유저추가
adduser 유저명
#유저 비밀번호 지정 및 변경
passwd 유저명
#유저 속성 변경
usermod [옵션: -c, -d, -g, -l, -s] 바꿀 내용 유저명
-- c옵션은 사용자에 대한 주석이다.
-- d옵션은 사용자의 홈디렉토리 경로를 변경한다.
-- g옵션은 사용자가 속할 그룹을 변경한다.
-- l옵션은 사용자 이름을 변경한다.
-- s옵션은 사용자의 로그인 셸을 변경한다.
#유저 삭제
userdel 유저명
#유저 암호 주기적 변경 설정
chage -m 숫자 유저명
-- m옵션 뒤의 숫자는 달(몇월)을 이야기 한다.(만약, 2라면 2달 간격이다.)
#그룹 목록
groups
-- 현재 사용자가 속한 그룹을 보여준다.
#그룹 생성
groupadd 그룹명
#그룹 삭제
groupdel 그룹명
#그룹 암호 설정 혹은 관리 수행
gpasswd 그룹명위의 명령어 예시에선 생략되었지만, 기본적으로 사용자와 그룹 관련 명령어를 사용하기 위해선 관리자 권한이 필요하다.
※ 리눅스 설치 시 처음 만든 계정은 슈퍼 계정인데, 로그인할 때는 일반 계정으로 되지만 'sudo su'를 통해 슈퍼 권한 계정으로 변경 가능하다. 그러면 sudo 없이 관리자 권한이 필요한 명령어를 실행 가능하다.
2. 파일 권한 관련 명령어

위에 보이는 사진에서 맨 앞에 '-', 'd'는 각각 파일과 디렉토리를 나타낸다. 그 뒤에 6자리의 r, w, x, - 이 4가지의 문자와 기호의 조합이 중요한데, 이는 파일 혹은 디렉토리의 접근 권한을 의미한다. 맨 앞에 파일, 디렉토리 구분자를 빼고 9개가 있는데, 3개씩 나눠서 계정 권한, 그룹 권한, 그 외 사용자 권한이다. 'r'은 읽기 권한, 'w'은 쓰기 권한, 'x'는 실행 권한이다. 그 뒤의 내용은 아래의 사진과 같다.

※ 'man' 명령어가 있는데 man 명령어 뒤에 알고 싶은 명령어를 입력하면, 관련 옵션이 무엇이 있고 그 설명에 관해 볼 수 있는 도움말 명령어가 있다.

위 권한을 숫자로 표시하면 8진수로 표현되고 다음과 같다. 만약 읽기 권한과 쓰기 권한을 주고 싶다면 숫자 6, 읽기 권한만 준다면 4, 모든 권한을 주면 7, 실행 권한만 주면 1, 아무 권한도 주지 않는 다면 숫자 0으로 명령어를 통해 권한을 줄 수 있다. 숫자말고 알파벳으로도 가능한데, 'r+w'라면 소유자에게 쓰기 권한을 주는 것이다.
#파일 허가권 변경
chmod 숫자(ex. 777) 파일명, 디렉토리명
#파일 소유권 변경
chown 변경하려는 소유자, 그룹 변경하려는 파일, 디렉토리
chgrp 변경하려는 그룹 변경하려는 파일, 디렉토리두 명령어 모두 '-R'옵션으로 하위 디렉토리까지 권한을 전부 바꿔줄 수 있다.
3. 링크 관련 명령어
파일의 링크(Link)에는 두 가지가 있다. 하드 링크(Hard Link)와 심볼릭 링크(Symbolic Link or Soft Link)가 있는데, 하드 링크는 원본을 복제한 파일로 데이터를 공유하지만, 원본 파일을 삭제해도 데이터는 남아 있고 따로 조회도 가능하다. 그리고 같은 inode를 공유한다.
※ inode란? 파일의 메타 데이터(inode 번호, 파일 모드, 링크 수, 소유자 아이디, 파일 크기, 주소 등)를 나타낸다. 하드 링크의 경우 같은 inode 번호를 참조하고 있지만, 심볼릭 링크는 원본과 다른 inode 번호를 가진다.
그래서 심볼릭 링크는 새로운 inode 번호를 만들고 원본 파일과 연결 되는데, 실질적으로 원본과 다른 파일이므로 원본을 삭제해도 연결은 남아있지만, 원본이 없어졌기 때문에 불러오려고 하면 오류가 난다. 윈도우에 프로그램 설치 후 같이 깔리는 바로가기를 생각하면 이해가 용이할 수 있다.
ln 원본 경로/파일 대상 경로/파일명
ln -s 원본 경로/파일 대상 경로/파일명위에는 하드 링크 파일을 만드는 방법이고 아래는 심볼릭 링크 파일을 만드는 방법이다.
4. 패키지 관련 명령어
dpkg명령어가 리눅스에 외부 프로그램을 설치할 때 이용되곤 했지만, 의존성 문제가 있어 편리한 apt 명령어를 많이 이용한다. 예를 들어, python을 설치한다고 했을 때 실행시키는 관련 패키지를 apt 명령어로 설치하게 되면 모두 자동으로 설치해주지만, dpkg는 각각 모든 프로그램을 따로 명령어로 설치해줘야하기 때문이다. /etc/apt/sources.list 파일을 조회해보면 기본적인 레파지토리 url 경로가 포함되어 있는데, apt 명령어를 사용하면 이 레파지토리를 참조해서 관련 패키지를 설치한다. 추가적으로 써드파티 프로그램을 설치할 수 있는 사설 레파지토리가 있는데, 위 경로의 sources.list 파일에 url 경로를 추가해주면 설치할 수 있다.
sudo apt-get install 프로그램명
#패키지 목록 업데이트
sudo apt-get update
sudo apt remove 패키지명
#사용하지 않는 패키지 제거
sudo autoremove 패키지명
#내려 받은 파일 제거
sudo apt clean/apt autoclean
#패키지 정보 보기
sudo apt-cache show 패키지명
#패키지 의존성 확인
sudo apt-cache depends 패키지명5. 파일 압축 관련 명령어
윈도우에서 압축하면 zip을 많이 떠올릴 것이다. 리눅스도 파일을 압축할 수 있는데, 리눅스에선 tar를 더 많이 보게 될 것이다. 기본적으로 파일을 묶어주기만 하는 건 tar형태이다. 이렇게 묶은 파일을 xz, bz2, gz, zip, Z 등의 형태로 압축을 추가적으로 해줘야한다.
#파일 묶는 명령어(파일을 묶거나 풀어준다)
#묶기
tar cvf my.tar 경로
#풀기
tar xvf my.tar
#cvf와 xvf는 옵션
#옵션의 종류로
#동작 관련 옵션은 c - 묶기, x - 풀기, t - 경로 확인
#나머지 옵션으로 f - 파일, v - 묶거나 푸는 과정 보이기, J - tar + xz, z - tar + gzip, j - tar + bzip2
#이렇게 묶은 파일을 압축하고 풀 수 있다.
xz 파일명
xz -d 파일명.xz
bzip2 파일명
bzip2 -d 파일명.bz2
gzip 파일명
gzip -d 파일명.gz
zip 새로운 파일명.zip 압축할 파일 이름
unzip 압축 파일 이름.zip
#파일을 묶으면서 동시에 바로 압축까지 할 수 있다.
#gzip 형태
tar cvzf 파일명.gz 경로
tar xvzf 파일명.gz
#xz 형태
tar cvfJ 파일명.xz 경로
tar xvfJ 파일명.xz※ 압축하는 파일명에 .gz, .xz, .zip 등의 확장자를 붙이는 이유는 어떤 압축파일인지 헷갈리기 때문이다. 리눅스는 확장자 개념이 없기 때문에 file 명령어로 어떤 파일인지 구별해야하는 번거로움이 있다.
6. 파일 찾기 관련 명령어
파일 찾기 명령어는 find가 있다. 옵션으로 -name(파일명), -user(소유자), -perm(허가권) 등이 있으며, -print, -exec로 파일을 찾은 후 추가 명령을 수행시킬 수 있다. -exec는 외부 명령을 실행시키는데 기재하지 않는다면 기본값은 -print(출력)이다.
find 경로 옵션 파일명/소유자/허가권 -print(디폴트), -exec 추가 명령어※ which 명령어: 명령어의 실행 파일 경로를 찾아준다. whereis 명령어: 명령어의 실행 파일, 소스 코드, 매뉴얼 페이지 위치를 찾아준다. locate 파일명/키워드: 파일 목록 데이터베이스에서 파일명/키워드에 대한 빠른 검색을 제공한다.
grep 키워드 -r 경로
grep 키워드 경로파일에서 내용을 검색할 때 사용할 수 있는 명령어가 있다. 'grep 키워드'가 오며 옵션으로 '-r'을 붙일 경우 하위 디렉토리까지 찾아준다.
7. 네트워크 관련 명령어
네트워크 설정을 위한 파일 수정은 /etc/netplan/01-network-manager-all.yaml 파일을 통해 변경할 수 있다. 환경설정 파일인데, 들여쓰기도 지켜야 하고 하나하나 다 입력해야 하기 때문에, GUI를 통한 네트워크 설정 편집 명령어가 있다. 'nmtui'인데 BIOS 설정을 수정하는 것처럼 선택하는 것만으로 간단하게 수정이 가능하다.

다음으로 ssh명령어와 scp명령어가 있다. ssh명령어는 PuTTY 같은 클라이언트로 이미 접속한 가상머신에서 다른 가상머신에 원격으로 접속할 수 있게 해준다. scp는 원격 서버의 파일을 복사해오거나 보내줄 수 있다. ssh명령어의 옵션 중 하나는 '-p'로 원격 접속할 서버의 포트 번호를 입력할 수 있다. 보안상 포트번호는 서비스하는 애플리케이션이 아니면 바꾸기 때문에, 접속하려면 일치시켜줘야 한다.
ssh 계정명@IP주소(원격으로 접속하고자 하는 서버)
#그 후 해당 서버의 계정 비밀번호로 로그인해야 한다.#원격 서버에서 내 로컬 서버로 복사(다운로드)
scp 원격서버계정@IP주소:경로 ./내서버경로
#내 로컬 서버에서 원격 서버로 업로드
scp ./내서버경로 원격서버계정@IP주소:경로※ 가상머신 리눅스에 윈도우에서 파일을 바로 보낼 수 있는 프로그램이 있는데 주소를 아래 첨부한다.
https://winscp.net/eng/docs/lang:ko※ 'wget url주소' 명령어를 통해 url주소를 통해 리눅스에서 직접 다운로드도 가능하다.
※ ubuntu는 서버 설치와 구동이 동시에 되지만 Red Hat 계열은 서버 설치와 구동이 별도이다. * sudo apt-get install nginx
8. 시스템 관련 명령어
추가적으로 공부가 더 되어야 할 명령어지만 간단하게 소개한다. cron과 at이 있다. cron은 주기적으로 반복되는 일을 자동적으로 실행할 수 있게 하며, 셸 스크립트와 같이 활용하면 유용하다. at은 일회성 작업을 예약해서 실행시킬 수 있다. cron은 시스템 관리자가 많이 쓰는 윈도우의 작업 스케쥴러와 같다. 백업 기능을 활용하기 유용하다.

cron명령어 같은 경우 '분 시간 일 월 요일 사용자 실행명령'형태로 사용한다. at명령어는 'at 시간 > 스크립트 > Ctrl+D'형태로 쓸 수 있는데 정한 시간에 스크립트를 실행 후 완료되면 Ctrl+D를 수행한다.
ps와 top명령어가 있는데 ps명령어는 프로세스 정보를 출력하며 '-ef' 옵션과 같이 활용된다. '-ef'옵션은 현재 실행중인 프로세스와 관련된 UID(User ID), PID(Process ID), C(CPU Utilization), STIME(Start Time), TTY(Terminal Type) 등을 표시해준다. UID는 프로세스를 실행한 사용자 ID이고 PID는 프로세스 고유 식별자이며, C는 프로세스의 CPU 사용량의 분 단위 평균량을 나타낸다. STIME은 프로세스가 시작한 시간 혹은 날짜이며, TTY는 프로세스가 실행 중인 터미널 유형인데 '?'의 경우 백그라운드이고, pts/0은 원격 접속, tty1은 로컬 콘솔을 알려준다. top명령어는 윈도우의 작업 관리자와 같은 역할로 시스템 리소스 정보를 출력해주는데, 옵션 '-n'을 사용하여 몇 초마다 화면을 갱신할지 정할 수 있다.
dmesg명령어는 시스템 명령어로 부팅될 때 올라온 메시지를 확인할 수 있다. 부팅 시 오류로 인해 제대로 실행되지 않은 프로세스나 시스템 문제를 파악할 수 있다.
※ 명령어를 연속으로 실행하는 키워드가 있다. 명령어의 마지막에 ';(세미콜론)'을 붙여줘서 이어쓸 수 있는데, '명령어 ; 명령어 ; 명령어 ;' 이런 식으로 명령어를 순차적으로 실행시킬 수 있다. ';'은 명령어 종료 시점을 구분한다. echo명령어는 문자열을 터미널에 출력하고 sleep은 실행을 잠시 쉬는 명령어이다.
echo "abc"; sleep 1; echo "1234"; sleep 1; echo "finish";Ⅳ. 리눅스 에디터
리눅스에서 파일을 수정할 때 표준으로 많이 사용되는 것이 vi 에디터이다. 모두 키보드로 입력되어야 하는 리눅스 특성상 에디터는 필수인데, 윈도우에서 메모장을 수정해서 리눅스에 업로드하거나, 웹에서 다운받는 것은 번거로울 수 있기 때문에, 에디터 활용을 잘 할 수 있으면 좋다. 하지만 초반엔 에디터가 익숙하지 않아(윈도우같은 GUI환경에 익숙하기 때문) 고전할 수 있지만 연습하는 걸 권장한다. 기본적으로 '명령 모드', '입력 모드', '라인 명령 모드'가 있다.
vi /etc/passwd(경로와 파일명)위처럼 vi를 입력 후 경로와 파일명을 입력해주면 에디터가 실행된다. 진입 시 기본적으로 명령 모드로 입력 모드로 전환하거나 라인 명령 모드로 변경할 수 있다. 라인 명령 모드로 진입하려면 ':(콜론)'을 입력해야 하는데, 진입하면 w(저장), q(종료) 등을 선택해서 수행할 수 있다. w는 말그대로 편집한 내용을 종료하고 q는 에디터를 종료한다. 그리고 w, q에 '!'를 붙인다면 주의사항을 무시하고 바로 명령어를 실행시킨다. 명령 모드에서 입력모드로의 전환은 현재 커서 위치로부터 'i'를 누르거나 'a'를 누르면 된다. 입력 모드에서 다시 명령 모드로 빠져나오려면 'ESC'를 누르면 된다. 기본적인 기능에 대해서는 아래의 표를 참고하면 된다.

후기
확실히 처음 보는 내용이 많아 갈수록 외울 내용이 많아지고 있지만, 예전에 웹프로젝트를 진행하고 배포하는 과정에서 잘 이해되지 않았던 네트워크와 서버 관련한 내용을 이렇게 이해할 수 있어 좋았습니다. 나중에 클라우드와 어떻게 연결될지 궁금하며, 리눅스 명령어도 사용해보지 않은 것이 많아 앞으로가 더 기대됩니다.😁
Log in