본문 바로가기

Web Server(APM)

Linux Web Server 구축하기 (APM)

web server란 HTML, images, CSS sylte sheets, Java Script files등의 compoenent file들을 저장하는 컴퓨터이다. brower가 HTTP(Hyper Text Transfer Protocol)라는 규약을 통해 web server에 있는 file들을 request를 하면, web server는 해당 file을 보내 response한다.

 

linux server는 window server에 비해 신뢰도가 뛰어나고, 서버 운영체제로서 적합하고(특히 네트워킹 이용 컴퓨팅 서버), 구축비용이 저렴하기 때문에 windows web server가 아닌 linux web server를 구축할 것이다. 

window에서 linux환경 구축하는데에는 여러가지 방법이 있지만 가장 안전하고 효율적인 VM으로 linux 환경을 setting할 것이다. windows에서 linux web server를 setup하기 위해 필요한 것은 virtual machine software, linux OS, APM setup, CMS등이 있다.

 

Virtual Machine(VM)은 컴퓨터 환경에서 가상화란, 물리적으로 제공되어야 할 컴퓨터 리소스에 대한 정보를 추상화하여, 컴퓨터를 사용하는 사용자 또는 리소스에 접근하는 프로그램이 특정 리소스(하드웨어, 프로토콜, 응용프로그램, 네트워킹을 통해 접근할 수 있는 서비스 등과 같은)에 종속되지 않도록 만들어 주는 기술이다. 하드웨어 가상머신을 컴퓨터 하드웨어를 추상화하여 실질적인 하드웨어가 존재하는 것과 같은 환경을 만들어 주어, 하드웨어를 제어하는 핵심 소프트웨어인 운영체제가 이를 사용할 수 있게 된다. 즉, 하드웨어 가상화 기술을 통해 하드웨어에 동작 중이 운영체제 위에 또 하나의 새로운 운영체제를 실행 할 수 있게 된다. 이러한 상황에서 두 운영체제를 식별하기 위해 하드웨어 가상화를 제공하는 운영체제는 Host 운영체제라고 하고, 하드웨어 가상화 상에서 동작되는 운영체제를 Guest 운영체제라고 칭한다. Virtual Machine중에서도 가장 성능과 안정성이 우수한 VMWare(Virtual Machine Software)라는 software를 사용 할 것이다. 

 

Linux는 Operating System 구성 요소 중에 하나인 Kernel 종류이다. kernel이란 소프트웨어와 하드웨어간의 커뮤니케이션을 관리하는 프로그램이다. 구체적으로 말하면, kernel이란 Operating System에서 가장 중요한 구성요소로서 입출력을 관리하고 소프트웨어로부터의 요청(System Call) 컴퓨터에 있는 하드웨어(CPU, 메모리, 저장장치, 모니터 등등...) 처리 있도록 변환하는 역할을 한다.  리눅스는 다중 작업, 다중 사용자 시스템을 지원하는 NOS(네트워크 운영체제)라는 면에서 다른 운영체제와 차별점을 갖는다. 리눅스는 다른 운영체제에 비해 시스템이 멈추는 경우가 적고 동시에 둘 이상의 프로그램을 실행하는 성능이 원등하고 보안에 강하다. Linux OS 중에서도 데비안계열의 ubuntu를 사용할 것이다.

 

APM setup이란 웹 서버프로그램인 아피치(Apache), 웹 스크립트 언어인 PHP, 아파치와 궁합이 맞는 데이터 베이스 프로그램인 MySQL의 약자를 따서 만들어진 것이다웹서버를 구성하는 주요 도구인 Apache + php + mysql를 합쳐 부르는 말로 이 세가지가 연동되어 운영되도록 만든 서버 환경을 뜻한다Apache는 Apache HTTP 서버는 아파치 재단에서 후원하는 오픈소스 프로젝트 커뮤니티에서 만든 HTTP 웹서버이다PHP는 Hypertex Provenssor의 약자로 웹 서버에서 동작하는 스크립트 언어이다. 서버상에서 쓰는 언어로 비슷한 언어로는 ASP, JSP등이 있다MySql는 DBMS의 종류 중 하나로 데이터 베이스를 구축하는데 쓰는 프로그램 중 하나이다.

 

CMS(Contet Management System으로  개발에 대한 지식이 없더라도 web page를 말들고 수정 및 운영이 가능한 tool이라고 할 수 있다. CMS로는 wordpress, joomla등이 있다.

 

1. Virtual Machine 설치하기(VMWare)

https://www.vmware.com/kr.html  VMWare 홈페이지에 접속하기

 

데스크톱 및 서버, 애플리케이션, 퍼블릭 및 프라이빗 클라우드를 위한 VMware 가상화

Reddit의 공동 설립자에게 묻는 20가지 질문 Alexis Ohanian으로부터 세계에서 가장 상징적인 웹 사이트의 제작 배경, 그의 다음 중대 과제인 가상 화폐 등 다양한 주제에 대한 그의 시각을 알아봅니다. 비디오 보기

www.vmware.com

vmware homepage 접속
다운로드 -> 무료 제품 다운로드 -> workstation player 클릭
다운로드 하기

 

2. Linux OS distribution 설치하기(Ubuntu)

https://www.ubuntu.com/  Ubuntu 홈페이지 접속하기

ubuntu homepage
Download -> Ubuntu Desktop 클릭
Ubuntu OS 설치파일 다운로드(LTS version이 더 안정적이다.)

여기까지가 Linux OS를 돌리는데 필요한 설치과정이다.

이제 VMware에 Linux OS를 돌려보자.

VMware 첫 화면 -> Create New Virtual Machine 클릭

 

VM에 설치될 Ubuntu linux 설치파일을 선택한다.
Fullname(ubuntu linux system name), Username(ubuntu login id), Password(ubuntu login password) 입력 -> next
VM 이름은 VMWare 시작화면 리스트에 표시. VM data 저장 경로 설정.
VM에서 사용할 최대 disk 용량 설정
Machine 기본 정보 확인 -> Customize Hardware 클릭
Memory 4GB로 설정
2 Core Processors로 변경
HW의 설정까지 완료 되고 finish를 누르면 해당 spec의 VM에 Ubuntu OS가 설치. 
ubuntu에서 user login후의 화면

 

3. package 설치하기

이제 terminal에서 web server 구축에 필요한 package들을 설치할 것이다. package를 설치하기 전에 root라는 기본 개념에 대해 알아보자. linux OS를 multi user의 특징을 가지고 있기 때문에 각 사용자들은 개인 계정을 통해 컴퓨터의 자원을 활용할 수 있다. 모든 사용자들이 system을 좌지우지하는 것을 막기 위해  일반사용자 계정의 경우 필요한 권한만을 가지고 시스템에서 작업을 하고, linux system을 총괄하는 최고권력을 가진 단 하나의 root 계정만이 존재한다. package를 설치하기 위해서는 일반 사용자 계정에서 root 계정으로의 전환이 필요하다. 

sudo는 로그아웃 없이 현재 계정에서 다른 계정의 권한만 빌리는 명령어이고,  su은 로그아웃을 하지 않고 다른 사용자의 계정으로 전환하는 명령어이고, su - 는 다른 사용자의 계정을 전환하고 해당 사용자의 환경으로 쉘을 실행하는 명령어이다. su와 sudo의 명령어는 모두 root의 권한으로 명령을 내리는 데 사용될 수 있다.

su를 option없이 실행하면 root 계정으로 사용자를 전환할 수 있다. 이때는 root 계정의 암호를 입력해야 한다. root 계정으로 작업을 수행한 후에는 exit의 명령어를 사용하여 원래의 계정으로 돌아와야 한다. sudo는 root 권한으로 한 번 명령어를 실행한다. sudo를 이용해 root의 비밀번호를 모르는 상태에서도 root의 상태로 계속 머무르며 명령어를 실행할 수도 있다. <$ sudo su - root>의 명령어를 사용하면 현재 로그인된 계정의 password의 입력으로도 root로 로그인한 shell로 전환된다. <$ sudo su – root> 의 경우 한번의 login만으로도 계속해서 root 권한으로 명령을 실행할 수 있다. <$ sudo [명령어]> 의 경우 매 명령어마다 sudo를 붙혀주어야 root 권한으로 명령어가 실행된다. 전자의 방법이 더 편리하다고 필자는 생각했으므로 전자의 방법을 사용하여 package를 다운로드 하겠다.

 

apt(advanced package tool)은 데비안 계열 기반의 자동 업데이트, 삭제 설치 도구로써 자동으로 의존성 프로그램도 같이 설치해 준다. <$ apt-get install  [패키지 이름]>는 해당 package를 설치해주고,  <$ apt-get remove  [패키지 이름]>은 해당 명령어를 삭제해준다.

 

3-1. git 설치

마우스 우측버튼을 클릭해서 terminal을 연다.
< $ sudo su - root > root 권한으로 실행. 
< $ apt-get install git > git 설치
< $ git --version> git version 확인

3-2. APM 설치

3-2-1) php 설치

<$ apt-get upgrade> 현재 운영체제에 설치되어 있는 프로그램 최신버전 패치

 

<$ apt-get install php> php설치

linux의 update 방식은 package 저장소를 이용해 update되기 때문에 apt-get install <package name> 이라는 간단한 명령어 한 줄로 package 다운로드가 가능했다. 유명한 프로그램이 아닌 일반적인 프로그램의 경우에는 ubuntu standard package storage에 없어서 update가 불가능하다. 이러한 프로그램들을 update하기 위해 이때 PPA(personal package archive)라는 personal package storage를 사용하여 ubuntu 공식 storage에는 없는 third party software를 update 할 수 있다. 이 저장소를 추가시키면, 명령어나 우분투 소프트웨어로 추가된 프로그램의 설치가 가능하다. 

php-apache 연동 module 설치시, 에러
<$ apt-add-repository ppa:ordrej/php> ppa repository 추가
< $ apt-get update >  package list 갱신
<$ pat-get install libapache2-mod-php7.0> apache-php 연동 module 설치

3-2-2) mysql 설치

<$ apt-get install mysql-server> mysql-server 설치
<$ apt-get install mysql-client> mysql-client 설치
<$ apt-get install php-mysql> php-apache 연동 module 설치
<$ apache2 -v > <$ php -v> <$ mysql -v> 설치된 package version check
<$ service apache2 restart > 적용위해 apache 재시작

4. apache web server에 main page수정하기

apache의 web page를 수정하기 위해서는 apache web page와 관련된 file들이 어디 존재하는지 알아야 하므로 먼저 linux의 전반적인 file 구조에 대해 알아보자.

/ : 최상의 디렉토리인 루트 디렉토리를 의미하며, 리눅스의 모든 디렉토리들의 시작점이다. , 모든 디렉토리들을 절대경로로 표기할 때에 이 디렉토리로부터 시작해야 한다.

/bin : mv, cp, rm등과 같은 기본적인 명령어가 저장된 디렉토리.

/boot : linux boot loader가 존재하는 directory.

/dev : system device file을 저장하고 있는 directory.

/etc : 시스템의 거의 모든 설정파일이 존재한다.

/home: 사용자의 home directory로 새로운 사용자를 생성하면 사용자ID와 동일한 이름의 directory가 자동으로 생성.

/lib : kernel module filelibrary file.

/proc : 메모리에 존재하는 작업들이 파일 형태로 존재하는 가상파일 시스템이다.

/var : 시스템 운용중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 디렉토리.

 

이 중 apached의 설정 파일은 /etc/apache2의 directory에 위치하고 있다. 

/etc/apache2/apache2.conf : 기본 설정파일

/etc/apache2/conf.d : 문자셋과 에러메시지, 보안과 관련된 설정 등을 따로 분리해둔 고급설정 파일

/etc/apache2/envvars : 환경 설정 파일

/etc/apache2/ports.conf : 포트설정. (기본값 : http 80, https 443 ) 

/etc/apache2/mods-available : apache module을 불러오는 곳이다. mods_enabled에는 사용할 module을 symbolic link로 추가하여 실제 동작하게 만든다.

/etc/apache2/ports.conf : 사이트 설정 파일. sites-enable에는 실제 운영에 사용한 file들을 symbolic link로 추가함.ㄷ

 

firefox를 실행하여 주소창에 <localhost>를 입력한다. apache default main page 모습. apache server가 정상적으로 작동하고 있음을 확인.
var/www/html/index.html이 main page로 쓰이고 있음을 알 수 있다.
<$ cd /var/www/html > /var/www/html의 directory로 이동한다. <$ rm index.html> default index.html file을 삭제한다. <$apt install vim> vim(파일 편집기) package를 설치한다.
<$ vim index.html> index.html 파일을 새로 생성한다.
다음과 같은 html file을 만든다. 위의 파일은 main page에 뜨게 될 것이다.
index.html file 변경 후 바뀐 main homepage 모습.

 

 

 

 

※참고 사이트
https://recipes4dev.tistory.com/108 (윈도우즈 운영체제에 VMWare 설치하기)
https://recipes4dev.tistory.com/111 (VMware에 우분투 리눅스 설치하기)
http://software-engineer.gatsbylee.com/%EB%A6%AC%EB%88%85%EC%8A%A4-linux-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-%EA%B8%B0%EC%B4%88%EA%B3%B5%EB%B6%80/ (리눅스란 무엇인가?)
https://www.debian.org/releases/stable/s390x/ch01s02.html.ko (GNU/리눅스란?)
https://m.blog.naver.com/PostView.nhn?blogId=maerad7&logNo=220448482919&proxyReferer=https%3A%2F%2Fwww.google.com%2F (아파치기본경로)
https://conory.com/blog/12797(리눅스 사용자 계정 관리하기)
https://beatsloth.tistory.com/111(우분투 웹서버 구축하기)
https://askubuntu.com/questions/715944/unable-to-locate-package-php7-0
https://neverapple88.tistory.com/5 (우분투 PPA 저장소란?)
https://3dmpengines.tistory.com/1899 (sudo와 su의 차이)
https://webdir.tistory.com/196 (우분투 apache 이해)
https://itsaessak.tistory.com/167 (아파티 서버 구축/HTTP통신 실습)
https://webdir.tistory.com/101 (리눅스 디렉토리 구조)