이번 글에서는 웹 서버 및 인프라 구축에 필수적으로 사용되는 서버 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 |