본문으로 바로가기

이번 글에서는 웹 서버 및 인프라 구축에 필수적으로 사용되는 서버 OS인 Linux(리눅스)을 조작하는데 사용되는 명령어와 커멘드에 대해서 써보자 한다. 또한 AWS EC2 Instance으로 생성한 리눅스 서버 환경에서 웹 서버를 구축하는 방법에 대해서 설명하려고 한다. 기존에 리눅스 설치 방법이라던지, 깃 사용법등은 이미 올라와있는 글이 많으니 필자는 가장 자주 사용하는 명령어와 커멘드로 웹 서버를 구축하는 방법등의 핵심에 대해서만 써보려고 한다.

 

아래는 현재 운영중인 서버에 사용된 서버/프로그램의 명칭 및 버전이다.

 

  • Linux - Ubuntu 16.04 LTS
  • Git Linux/Unix 2.7.4
  • Docker 18.09.7
    • Apache2
    • PHP 7.4
    • Mysql 8

Linux(리눅스)

Ctrl + U

: 커서에서 줄 시작까지 지우기

 

Ctrl + A

: 줄 맨 앞으로 커서 이동

 

Ctrl + E

: 줄 맨 끝으로 커서 이동

 

-rwxrwxrwx

: -(-는 파일 d는 폴더)rwx(소유자 작성, 읽기, 실행)rwx(사용자 작성, 읽기, 사용)rwx(모두-전부 작성, 읽기, 사용)

 

dpkg -l

: 설치된 모든 패키지 확인

 

cat /etc/passwd

: 등록된 모든 사용자 확인

 

apt-get install [package-name]

: package 설치

 

apt-get update

: package 목록 업데이트

 

vi [file.txt]

: file.txt 파일 생성하거나 읽기/수정

 

vi [file.txt] -> :q, :q!, :wq

: 편집기 종료, 저장하지 않고 종료, 저장후 종료

 

vi [file.txt] -> i입력 -> esc입력

: INSERT모드로 변경, 명령보드로 변경

 

vi [file.txt] -> gg, dg

: 첫줄로 이동, 전체 지우기

 

cat [file.txt]

: file.txt 파일 읽기

 

mv fileOne.txt fileTwo.txt

: 파일 이름 변경

Git(깃)

git init

: 현재 폴더를 git을 사용할 수 있는 폴더로 변경(최초 레포 생성할때 사용)

 

git clone [repo-domain]

: git레포를 현재 디렉토리로 복사

 

git pull

: git pull 실행

 

git checkout [branch-name]

: 해당 브렌치로 레포지터리 변경(코드도 전부 변경됨)

 

git config credential.helper store

: pull 실행시 인증 절차 생략

Docker(도커)

*docker 명령어를 사용할때는 앞에 sudo(관리자 권한) 명령어를 붙혀야 한다(AWS EC2 기준)

 

docker pull [package-name]

: 도커 허브에서 이미지 다운로드

 

docker images

: 다운로드받은 이미지 확인

 

docker build -t [image-name]:[image-tag] .

: Dockerfile이 있는 위치에서 해당 명령어 실행시 도커 파일을 읽은후 빌드 실행(끝에 마침표 필수임)

 

docker run -i -t [image-name]

: 이미지를 기반으로 컨테이너 실행

 

root@dockerLinux:/ exit

: 컨테이너를 종료시키고 빠져나오기

 

root@dockerLinux:/ [Ctrl+P] [Ctrl+Q]

: 컨테이너를 종료시키지 않고 빠져나오기

 

docker ps

: 실행중인 컨테이너 확인

 

docker ps -a

: 실행되었던 컨테이너 확인

 

docker restart [container-id]

: 종료되어있는 컨테이너 재실행

 

docker stop [container-id]

: 실행중인 컨테이너 종료

 

docker exec -it [container-id] /bin/bash

: 실행중인 컨테이너 내부에 bash 모드로 들어가기

 

docker diff [container-id]

: 컨테이너 실행시 사용된 원본 이미지와 현재 컨테이너가 얼마나 다른지 확인하기. 컨테이너 종료 후에 체크 가능함

 

docker commit [container-id] [repo-name]/[image-name]:[image-tag]

: 컨테이너의 변경된 상태를 이미지로 저장

 

docker rm [container-id]

: 컨테이너 삭제

 

docker rmi [image-name]:[image-tag]

: 이미지 삭제

 

sudo docker run -itd -p 80:80 --dns 8.8.8.8 --name dev-1.3 -v /home/ubuntu/apache/ProjectFolder:/var/www/html webserver:1.3

: 필자가 사용중인 도커 웹 서버 실행 커멘드

설정 백그라운드
포트 리눅스80번 = 컨테이너80번
DNS 8.8.8.8(AWS RDS 연결 용도)
인터렉티브 모드  tty
컨테이너 이름 dev-1.3
공유 디렉토리 ProjectFolder = html
이미지 이름 webserver:1.3

아래는 필자가 아파치 웹서버 용도로 사용중인 도커파일 원본이다.

FROM ubuntu:16.04
MAINTAINER Wimes <happysugar180@gmail.com>

# Avoiding user interaction with tzdata
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update

# install Apache web server (Only 'yes')
RUN apt-get install -y apache2

# For Installing PHP 5.6
RUN apt-get install -y python-software-properties software-properties-common
RUN LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
RUN apt-get update --fix-missing
RUN apt-get install -y php5.6
RUN apt-get install -y php5.6-mysql
RUN apt-get install -y php5.6-mcrypt
RUN apt-get install -y php5.6-dev

RUN apt-get install -y curl
RUN apt-get install -y vim

# Edit Apache conf
RUN a2enmod rewrite
RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

# EXPOSE 80

CMD ["apachectl", "-D", "FOREGROUND"]

'개발 > 인프라, CS' 카테고리의 다른 글

[AWS] SSL인증서 적용된 Https 웹서버 구축하기  (1) 2021.03.28
HTTP Method란?  (0) 2021.03.14
HTTPS와 SSL의 작동 구조  (0) 2020.12.30
DNS는 어떻게 작동하는가?  (0) 2020.12.28
AWS EC2 웹서버 설치하기  (0) 2020.02.13