728x90
반응형
SMALL

리눅스 명령어

쉘 프롬프트 상에서 입력 토큰의 종류

  • 명령어
  • 옵션: -기호로 시작되는 토큰
  • 인자: -기호로 시작되지 않는 토큰

기본 명령어

sudo : super user(root)인 관리자 권한(root 계정)으로 실행

pwd : 현재 자신이 위치한 디렉토리 출력

cd : 디렉토리 이동

ls : 현재 자신이 속해있는 디렉토리 내용 확인(-a 모든 파일 보기, -l 더 자세한 정보 출력, -t 시간 순 정렬, -S 크기 순 정렬)

mkdir : 디렉토리 생성

rmdir : 디렉토리 삭제

help : 내장 명령어에 대한 도움말 출력 (명령어 뒤에 --help 붙이는 것과 동일)

echo : 화면에 문자열 출력

touch : 파일 생성 (크기 0)

cp : 파일 및 디렉토리 복사 (-r 디렉토리 안의 모든 내용을 재귀적으로 복사)

mv : 파일 이동

rm : 파일 및 디렉토리 삭제 (-r 디렉토리 안의 모든 파일을 재귀적으로 삭제하는 옵션, -f 존재하지 않는 파일이나 엑세스 권한이 없는 파일에 대하여 확인 메시지를 무시하라는 옵션)

rmdir : 비어있는 디렉토리 삭제

cat : 파일의 내용을 화면에 출력

more : 텍스트 파일을 화면 단위로 출력(space/f 다음 페이지로 이동, b 이전 페이지로 이동, enter 라인 단위 이동, q: 종료)

less : more보다 조금 더 보기 편함

find : 특정한 파일을 찾는 명령어

grep : 특정 패턴으로 파일을 찾는 명령어

>> : 리다이렉션 (파일 끼워넣기 등)

file : 파일 종류 확인

ping : 네트워크 상태 점검 및 도메인 IP 확인

ifconfig : 리눅스 IP 확인 및 설정

netstat : 네트워크의 상태 정보 출력

wget : 비대화식 네트워크 다운로더로 뒤에 다운로드할 주소를 인자로 적음

vi 편집기

visual editor의 줄임말인 vi는 리눅스에 기본 편집기이다. vi가 오래됐기 때문에 vi를 보완한 vim(visual editor improved)이 있는데 이 편집기는 apt-get install vim의 명령어를 통해 설치하여 사용할 수 있다.

vi를 통해 편집기를 실행하거나 vi 파일명로 파일과 함께 편집기를 실행한다.

vi는 모드가 3개 존재한다.

  1. 명령모드: 문서 복사, 이동 등의 작업(명령모드 집입은 ESC)
  2. 편집모드: 문서 작성 및 편집(편집모드 진입은 i, a, o)
  3. 실행모드: 파일 저장, 종료 등 수행(실행모드 진입은 명령모드에서 가능하며 :를 누름)

명령모드

h j k l : ← ↓ ↑ → 커서 이동

x : 커서 뒤 위치한 문자 1개 삭제

yy : 현재 행을 복사

p : 현재 행에 붙여넣기

dd, :d : 현재 행 잘라내기

u : 바로 이전 명령 취소

:set nu : 행 번호 표시

:set nonu : 행 번호 표시 제거

편집모드

i : 현재 커서 앞쪽에 입력

I : 현재 라인 처음에 입력

a : 현재 커서 뒤쪽에 입력

A : 현재 라인 마지막에 입력

o : 현재 라인 아랫줄에 입력

O : 현재 라인 윗줄에 입력

실행모드

:w : 저장

:w FILENAME : FILENAME에 저장

:q : 종료

:wq : 저장하고 종료

:q! : 저장하지 않고 종료

:! : 외부 명령어 실행


 

sudo rm -rf /

sudo는 관리자의 권한으로 명령어를 실행한다는 의미이고, rm은 파일을 삭제하는 명령어인데 -r는 재귀적으로 디렉토리와 그 안의 모든 것을 삭제하는 옵션이고,-f는 존재하지 않거나 액세스 권한이 없는 파일도 확인 메세지 없이 강제로 삭제하는 옵션이다. 그리고 /는 리눅스의 최상위 디렉토리인 root이다.

‘진정 새로운 무언가를 창조하려 한다면 처음부터 다시 시작해야 합니다..’

즉, 최상위 디렉토리와 그 밑에 있는 모든 파일과 디렉토리를 한꺼번에 포맷하는 무시무시한 명령어이다..

따라서 디렉토리를 안전하게 삭제하는 방법으로 아래 방법을 추천한다.

  1. rmdir 명령어를 사용하여 빈 디렉토리를 삭제하기
  2. ls 명령어를 사용하여 디렉토리 내용 확인하며 테스트하기
728x90
반응형
LIST
728x90
반응형
SMALL

리눅스란

리눅스의 마스코트인 펭귄 이미지

**리눅스(Linux)**는 **유닉스(Unix)를 기반으로 만들어진 운영체제(Operating System)**의 커널, 혹은 리눅스 커널을 사용하는 운영체제를 의미한다. 그렇다면 이게 무엇을 의미하는지 하나씩 살펴본다.

유닉스

먼저 유닉스(Unix)란 무엇인가. 유닉스는 동시 다중 사용자 및 다중 작업의 실행을 지원하는 대화식 운영체제이다. 1970년대 초반 AT&T Bell Lab에서 Ken Thompson, Dennis Ritche, Douglas McIlroy등이 주축이 되어 개발했다. (Tmi. Ken Thompson, Dennis Ritche는 C언어를 만든 사람이기도 하다. Ken Thompson는 아직도 구글에서 개발 중이며 Dennis Ritche는 스티브잡스가 타개하던 해에 돌아가셨다.) 주로 서버용 컴퓨터에 사용되는 운영체제이며 보안성이 매우 뛰어난 특징을 가지고 있다.

유닉스가 다양한 변종으로 발전하면서, 표준화의 필요성으로 나타난게 POSIX(Portable Operating System Interface)이다. 이는 IEEE에서 제안하였으며 유닉스도 이를 따르고 있다. (Tmi. 약자에는 X가 있는데 뜻에는 X가 없다. 이는 POSI라고 하면 발음하기도, 모양도 좀 그래서 추가한 알파벳이라고 한다.)

리눅스의 역사


위 그림처럼 리눅스는 유닉스의 계보를 따라 나온 운영체제이다. 1991년 핀란드 헬싱키 대학의 Linus Tovalds가 개발한 오픈소스 OS로 유닉스를 경량화한 미닉스(Minix)를 만든 교수님 지도 아래 대학원에 있을 때, 미닉스를 보며 이렇게 저렇게 기능을 추가하다가 혼자 리눅스를 만들었다고 한다. (Tmi. 이 사람은 Git을 만든 천재이다. 리눅스 버전 관리 시스템의 필요성으로 혼자 만들었다고 한다.) 그의 이름 Linus에 Unix의 ix를 합성한 Linux의 최초 모습을 만들었다.

Copyright과는 반대로 지식과 정보는 소수에게 독점되어서는 안된다는 Copyleft를 주장하는 Richard Stallman이라는 사람이 있는데, 이 분은 GCC 등을 개발했으며 자유 소프트웨어 재단에서 진행하는 GNU 프로젝트를 주도하고 있다. Linus Tovalds가 이 분을 만나 GNU 프로젝트에 참여하면서 리눅스를 오픈소스로 공개하였고 수많은 개발자들이 개발에 동참하여 빠르게 발전하였다. (Tmi. GNU 프로젝트 덕분에 리눅스가 발전하게 되었으므로 Linus Tovalds는 원형만 제시했을 뿐 현대의 Linux는 GNU/Linux로 불리길 바라는 세력이 있다고 한다.)

즉, 리눅스가 짧은 역사를 가지고 있는 운영체제임에도 많은 인기를 얻게 된 이유는 오픈소스였기 때문이라 할 수 있다. 역사상 가장 많은 참여자가 관여하고 있는 오픈소스 프로젝트이다.리눅스 커널을 사용하여 다양한 배포판이 파생되었으며, 데스크톱, 웹 서버, 클라우드, 모바일 운영체제인 안드로이드, 게임, 수퍼컴퓨터 등 각종 임베디드 기기를 구동하는 운영체제로 다양한 곳에서 높은 점유율을 보이며 발전하고 있다.

리눅스의 특징

  • 유닉스와 마찬가지로 다중 동시 사용자 시스템이다.
  • 유닉스가 통신 네트워크를 지향해 설계된 것 처럼 리눅스 역시 서버로 작동하는데 최적화 되어있다. 따라서 서버 및 임베디드 시스템 분야에서 많은 발전을 하고 있다.
  • 안정적이며 안전한 운영체제이다.
  • 리눅스는 오픈소스로 누구나 소스 코드를 활용하여 수정 및 재배포가 가능하기 때문에 지속적인 업그레이드가 이루어진다.
  • 리눅스를 기반으로 300가지가 넘는 배포판이 개발되었는데 대표적으로 RedHat, Ubuntu, Debian, Fedora 등이 있다.
  • 리눅스는 명령어 라인(Command Line Interface)을 통해 컴퓨터에 직접 액세스한다. 따라서 운영체제의 학습을 위해서 사용할 수 있다.

리눅스의 구조

커널

커널(kernel)이란 운영체제의 핵심으로 소프트웨어와 하드웨어 간의 커뮤니케이션을 관리하는 컴퓨터 프로그램이다. 시스템의 모든 것을 완전히 통제하고 메모리 관리, 프로세스 관리, 장치 관리 등 컴퓨터의 모든 자원을 제어하는 기능을 한다.

쉘(shell)이란 커널과 사용자가 대화하는 공간으로 키보드로 입력한 명령어를 운영체제에 전달하여 그 명령어를 실행하고, 수행 결과를 전송해주는 프로그램을 말한다. 즉, 커널과 사용자 간의 중간 다리 역할을 하는 프로그램이다. 의미는 껍데기라는 뜻인데, 사용자와 운영체제의 내부(커널) 사이의 인터페이스를 감싸는 층이기 때문에 그러한 이름이 붙여졌다.

최초 유닉스 쉘 프로그램인 sh의 확장판인 Bash 쉘을 리눅스 운영체제에 기본 쉘로 사용한다. macOS의 경우 터미널을 실행시키면 보이는 모습이 Bash였으나 최근 기본 쉘이 Zsh로 변경되었다.

디렉토리

디렉토리는 파일을 가지고 있는 그룹을 의미하며 이는 파일 시스템에 의해 관리된다. 리눅스에서 파일 시스템을 아는 것이 굉장히 중요한데, 왜냐하면 리눅스는 모든 것을 파일로 보기 때문이다. 파일 시스템이란 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 의미한다. 리눅스에서 일반적으로 사용되는 파일 시스템은 ext(extended file system, 확장 파일 시스템)이다.

리눅스는 위와 같은 계층적인 디렉토리 구조로 파일을 구성한다. 최상위 디렉토리를 루트(root)디렉토리라고 하며 / 로 표현한다. 드라이브를 여러 개로 분할하여 사용할 수 있는 윈도우즈와 달리 리눅스는 단일 파일 시스템으로 관리한다.

현대의 운영체제는 다중 사용자 개념을 제공한다. 이 때, 운영체제는 각 사용자에게 개별적으로 부여된 고유한 디렉토리를 제공하는데 이를 **사용자 디렉토리(user directory)**라고 하며 이는 일반 사용자를 위하여 읽고 쓰기 권한이 부여된 유일한 공간이다. Linux의 홈 디렉터리(home directory) 아래에 위치하며 경로는 /home/User_name으로 표현한다.

참고로 **경로(path)**란 파일 시스템 상에서 디렉터리나 파일의 위치를 표현 또는 표기하는 방법이다. 리눅스는 /(슬래시)로 계층을 구분하며 윈도우즈는 \\(백슬래시)로 구분한다.

728x90
반응형
LIST
728x90
반응형
SMALL

(2)과 (3)를 보고 진행하시는 분들 중 sudo nano /etc/nginx/sites-available/도메인이름.conf 파일 말고도 생성한 것이 있다면,
명령어로 지워주시고 시작하시는것이 좋습니다!
1개의 파일만 필요하고 나머지를 같이 사용하게 된다면(도메인이름을 같은 걸로 준비했을때), 엔진엑스에서 실행이 되지 않습니다.
그렇기 때문에

cd /etc/nginx/sites-available/
ls

 

 에 들어가서 몇 개가 있는지 확인한 후 진행하는 것을 추천 드립니다!

없다면 새로 생성!!

sudo nano /etc/nginx/sites-available/도메인 이름

여러개가 존재한다면 삭제!

sudo rm /etc/nginx/sites-available/도메인 이름

전에 만든던걸 활용할 생각입니다 저는~

server {
        listen 80 default_server;
        listen [::]:80 default_server;
                                root /var/www/html;
                                index index.html index.htm index.nginx-debian.html;

        server_name aihtnyc.shop;

        location / {
                # First attempt to serve request as file, then 
                # as directory, then fall back to displaying a 404.
                proxy_pass <http://43.200.22.192:8080>;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                try_files $uri $uri/ =404;
        }

리다이렉트를 하지 않아서 필요합니다!

server {
    listen       80;
    server_name  # 원하는 도메인으로 변경하세요.
    root /var/www/html;
    location / {
        return 301 https://도메인이름$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name 도메인이름;
    # SSL 관련 설정
    ssl_certificate /etc/letsencrypt/live/도메인이름fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/도메인이름/privkey.pem;
    ssl_prefer_server_ciphers on;

        include /etc/nginx/conf.d/service-url.inc;

    location / {

        proxy_pass $service_url;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
    }
}

삭제 후 새로 만드는게 더 편하긴 하더라구여..
기존에 있던 파일에서 시작하면 하나하나 내려가면서 수정해야합니다.

이렇게 입력한 후 저장!

ctrl + ^ + X 
ctrl + Y

SSL 관련 설정은 지난번에 ssl을 발급받아 저장해둔 걸로 이용합니다!
발급받지 않으셧다면 발급받으세요~
https://aihtnyc-h.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-nginx-3-%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0-ssl-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89%EB%B0%9B%EA%B8%B0

 

우분투 nginx (3) 도메인 연결하기 ssl 인증서 발급받기

도메인을 연결하기 위해서는 Certbot을 이용해야하기 때문에 우분투에 설치 먼저해줘야합니다. Certbot을 설치하고 업데이트하세요. sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-rep

aihtnyc-h.tistory.com

 

사용하는 인스턴스 주소를 입력해줘야합니다!
(자동화를 위해!!)

sudo nano /etc/nginx/conf.d/service-url.inc

들어가서 본인의 인스턴스 주소로 넣어줍니다!

 

$service_url <http://127.0.0.0:8080>;

재시작은 필수!!

sudo systemctl reload nginx

상태확인!

sudo systemctl status nginx.service
728x90
반응형
LIST

+ Recent posts