CenOS7(minimal) 아파치 설치

Psj·2021년 11월 11일
0

What is RPM?

RPM (Redhat Package Manager)

RPM은 Redhat Package Manager의 약자로 Windows를 예를들면 setup.exe와 비슷하다고 볼 수 있습니다. 즉, 프로그램을 설치한 후에 바로 실행할 수 있는 설치 파일을 제작하게 되었습니다. 이러한 설치파일의 확장명은 *.rpm이며, 이를 패키지라고 부르기도 합니다.

RPM은 패키지 인스톨을 하기 위해서 그 패키지의 필요 요소를 전부 따로 다운로드해야 하는 번거로움이 있습니다. 또한 RPM의 문제점으로는 의존성을 들 수 있는데, 예를들면 페도라의 기본 웹 브라우저인 Firefox는 X윈도우에서 가동된다면, X윈도우가 설치 되지 않는 상태에서 firefox를 설치하면 설치가 되지 않습니다.

RPM이 나오기 전 초기의 리눅스에서는 모든 패키지를 설치할때 직접 컴파일한 후에 수동으로 설치해야 했다. 물론 컴파일을 위한 소스 파일은 tar, gzip으로 묶여있었다. 그렇기 때문에 패키지 설치에 많인 시간이 필요하게 되었고, 이를 극복하고자 RedHat 사에서 패키지 관리 프로그램인 RPM을 개발하게 되었다. 마치, Windows 계열의 setup.exe 파일과 비슷하게 자동으로 설치해주는 프로그램이다. RPM 패키지는 컴파일되어 설치한 실행파일, 설정파일, 라이브러리 등을 하나로 묶어놓은 파일을 말한다. 대표적인 특징은 아래와 같다.

1) YUM과 마찬가지로 패키지 인스톨 프로그램이다.

2) 인터넷이 연결되어있지 않아도 설치가 가능하지만, rpm 확장자로된 패키지 프로그램이 필요하다.

3) 패키지 사이에 의존하고 있는 패키지까지 자동으로 설치되지 않는다.

4) 기본 사용 명령어

-. 설치: rpm -Uvh [패키지명]

-. 삭제: rpm -e [패키지명]

-. 설치확인: rpm -qa [패키지명]

-. 상세정보: rpm -qi [패키지명]

What is YUM?

YUM (Yellodog Updater Modified)

YUM은 Yellowdog Update Manager의 약자로 RPM이 분명 유용하지만, 의존성 문제로 불편한 점이 있습니다. 이를 해결하기 위해서 제공되는 것이 YUM입니다. 즉, 특정 패키지를 설치할 때 의존성이 있는 다른 패키지들을 자동으로 먼저 설치해주는 지능적인 툴입니다.

yum은 인터넷을 통해서 rpm 파일이 저장된 저장소(repository)에서, 설치하려고하는 rpm파일과 해당 rpm파일이 의존성을 가지는 다른 rpm파일까지 모두 다운로드 한 후에 자동으로 설치까지 해주므로, 더 이상 사용자는 rpm 패키지를 설치하기 위한 의존성 문제를 고민하지 않아도 됩니다.

YUM은 RPM 기반의 시스템을 위한 자동 업데이터 및 패키지 설치, 제거 프로그램이다. 듀크 대학교의 Linux@DUKE 프로젝트의 일부분으로 개발되었다. RPM과 다르게 인터넷 사용이 필수이기 때문에 패키지간 의존성 문제를 해결할 수 있다. 예를들어 A 패키지를 설치하기전에 필요한 B 패키지까지 모두 한번에 설치가 가능하며, 의존도를 자동으로 찾고 알아서 설치해준다. 대표적인 특직은 아래와 같다.

1) RPM과 마찬가지로 패키지 인스톨 프로그램이다.

2) 인터넷에서 바로 설치가 가능하기 때문에 패키지 프로그램이 따로 필요없다.

3) 패키지 사이에 의존하고 있는 패키지까지 자동으로 설치가 가능하다.

4) 기본 사용 명령어

-. 설치: yum install [패키지명]
-. 삭제: yum remove [패키지명]
-. 업그레이드: yum update [패키지명]
-. 목록: yum list [패키지명]
-. yum 데이터베이스 동기화 업데이트: yum update

yum update? yum upgrade?

yum에서 패키지를 업데이트 할 때 두가지 명령어를 사용할 수 있다. update와 upgrade.

yum update
update는 패키지에 대한 update만 수행한다.

yum upgrade
반면 upgrade는 패키지 update 과정에서 불 필요 하다고 생각되는 패키지를 삭제한다.

따라서 update가 시스템에 더 안정적으로 판단되며 구글에서 보이는 많은 글들도 update를 기반으로 한다.

sudo, su, su - 차이

sudo
$ sudo 명령어
일반 사용자가 root권한을 잠시 빌려명령을 실행

su
$ su 계정명
현재 사용자를로그아웃하지 않은 상태에서 다른 사용자의 계정으로 전환하는 명령어

su 명령어는 현재 계정의 환경변수들을 유지한 채, 대상 계정으로 전환한다.

su -
$ su - 계정명
다른 사용자의 계정으로 완전히 전환하고, 전환한 사용자의 환경설정을 불러오는 명령어

su - 명령어는 다른 사용자의 계정으로 전환하고 환경변수까지 그 계정의 상태로 완전히 전환한다.

$와 #의 차이

$ → user상태일때 표시
# → root상태일때 표시

SSL이란?

웹을 개발하면 기본적으로 회원을 관리하고 로그인하는 부분을 개발하기 마련이다.

웹서핑을 하다보면 브라우저에 자물쇠표시가 되어있는 경우를 종종 보게된다. 해당 웹사이트는 SSL 이라는 보안 프로토콜을 사용한다는 표시다.

SSL은 Secure Socket Layer이라는 약자로 보안 소켓 레이어이다.

보통 443포트를 사용하며 https:// 를 사용한다.

앞으로 웹개발을 하다보면 이런 https:// 를 사용하는 많은 웹사이트를 보게 될것이고,

또한 SSL기반으로 개발을 할 수도 있다.

아직 SSL의 개념을 잘 모르므로 SSL에 대한 간단하게 개념을 이해해 보도록하겠다.

SSL은 Netscape사에서 웹서버와 웹브라우저간의 보안을 위해 만들어졌으며, 공개키/개인키 대칭키 기반으로 사용한다.

공개키/개인키는 많이 들어봤듯이, 공개키로 암호화하고 공개키와 매칭되는 개인키로만 복화할 수 있다. 따라서 공개키는 누구든지 알아도 상관없고 개인키는 복호화해야 하는 대상만 알 수 있도록 잘 보관해야 한다.

공개키/개인키는 계산하는데 복잡하고 시간복잡도가 높으므로 보통 모든 전송을 공개키/개인키 암호화기법을 이용하여 전송하는것이 아니라, 전송할것들은 대칭키를 이용하여 암호화하고, 대칭키만을 공개키/개인키로 암호화하여 전송한다.

이런 과정을 통해 암호화한다해도 대상 사이트가 만약에 가짜사이트 또는 대상이 해커라면 사용자의 정보가 노출될수 있다. 이 때문에 인증서라는것이 있다.

https로 통신하는 웹사이트를 이용하다보면 웹브라우저에 자물쇠 표시가 있는데 해당 자물쇠를 눌러보면 보통 인증서가 있다. 이 인증서는 신뢰할수 있는 제3자 인증기관에서 발급받을 수 있으며 이 인증서에는 인증서의 해당 사이트의 공개키와 사이트의 정보들이 있다. 인증서가 전송될떄는 인증기관의 제공하는 개인키로 암호화하여 전송된다.

인증서 또한 만약 가짜사이트 또는 해커가 인위적으로 만들었다면 사용자의 정보가 노출이 될수 있는데 이를 막기 위해 인증기관의 공개키를 브라우저에게 알려주고 브라우저에서는 해당 사이트에서 제공하는 공개키가 아닌 브라우저의 공개키를 사용하기 때문에 대상이 인증기관인지 아닌지 판별할 수 있다.

이렇게하여 SSL의 통신을 사용한다.

간단하게 요약하자면

  1. 사이트에서 인증기관(CA: Certificate Authority)에 인증요청
  2. 인증기관에서 검증후에 사이트의 공개키와 정보를 인증기관의 개인키로 암호화, 인증기관의 공개키는 브라우저에 제공
  3. 사용자가 사이트로 접속 요청시 사이트는 인증서 전송
  4. 사용자는 브라우저에 내장된 공개키로 인증서를 복호화 -> 사이트의 공개키로 대칭키를 암호화하여 전송
  5. 사이트는 전송받은 암호화된 대칭키를 사이트의 개인키로 복호화 -> 사용자, 사이트 같은 대칭키 획득
  6. 전송시 해당 대칭키로 암호화하여 전송

설치된 패키지 확인명령어

rpm -qa | grep 패키지명


아래는 예시

CentOS7에서 아파치 설치

  1. 아래 이미지와같이 su - root 명령어로 root계정으로 전환

  2. yum upgrade

  3. yum -y install httpd 아파치 설치

  4. httpd -v 아파치 버전확인

  5. yum install mod_ssl
    ssl적용 위한 모듈(apache 웹서버에 ssl 적용하기 위해 openssl과 같이 필요한 모듈)

  6. systemctl start httpd 아파치 실행

  7. systemctl status httpd 아파치 상태확인

그외 명령어
systemctl stop httpd 아파치 중지

systemctl restart httpd 아파치 재실행

  1. 아래 이미지와같이 버추얼박스 네트워크 환경설정

  1. sudo yum install net-tools ifconfig 설치

  2. yum install firewalld 방화벽 설정패키지 설치

  3. firewall-cmd --permanent --add-port=80/tcp 방화벽에 영구적으로(permanent) 포트 80번(port=80/tcp)을 추가(add)하겠다라는 의미

  4. firewall-cmd --reload 방화벽 재시작

  5. systemctl start httpd 아파치 재시작

  6. ifconfig 서버 ip확인

enp0s3: 에 있는 inet 192.168.35.127 를 브라우저 주소창에 입력


12. 아래와같이 나오면 아파치 정상작동 완료!

profile
Software Developer

0개의 댓글