본문 바로가기
  • AI (Artificial Intelligence)
Skills/Unix, Linux

[Linux] 아파치를 이용한 리눅스 웹 서버 구축

by 로샤스 2014. 11. 26.

웹 서버란?

web

  1. 웹 서버 (소프트웨어) : 웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지에서 흔히 찾아 볼 수 있는 자료 콘텐츠에 따라 HTTP에 반응하는 컴퓨터 프로그램
  2. 웹 서버 (하드웨어) : 위에 언급한 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터

– 위키백과

Apache(아파치)란?

아파치 HTTP 서버(Apache HTTP Server)는 아파치 소프트웨어 재단에서 관리하는 HTTP 웹 서버이다.BSD리눅스등 유닉스 계열 뿐 아니라 마이크로소프트 윈도나 노벨 넷웨어 같은 기종에서도 운용할 수 있다.

– 위키백과

아파치는 웹 서버의 일종으로 현재 가장 인기있는 서버로 LAPM(Linux + Apache + PHP + Mysql)조합이 많이 보편화 되어 사용되고 있습니다.

Centos 6.4 APM(Apache + PHP + Mysql) 설치

– 구축 환경

  • VMware 가상머신
  • Centos 6.4
  • Windows 8

20131111_204104

최대한 GUI를 이용하여 서버를 구축하기 위해서 VMware + Centos OS를 설치하였습니다.

20131111_204514

rpm -qa | grep httpd

rpm -qa | grep php

rpm -qa | grep mysql

을 통해서 설치되었는지 확인합니다.

그리고 yum -y install 명령어를 사용해서 웹 서버에 필요한 패키지들을 다 설치해 줍니다.

20131111_204804

20131111_204820

설치가 완료되면 service httpd start 와 service mysqld start 명령어를 사용해 데몬을 실행시켜 줍니다.

20131111_204858

chkconfig 명령어는 부팅이 될 때마다 실행이 되게 해주는 명령어 입니다.

20131111_205431

httpd의 홈 디렉토리는 /var/www/html 입니다.

이 경로는 localhost(127.0.0.1) = /var/www/html 과 같은 개념입니다.

20131111_205408

이제 웹 서버를 통해 보여줄 화면을 만들겠습니다.

20131111_205457

웹 브라우저를 열고 127.0.0.1 또는 localhost를 입력해주시면 다음과 같은 화면이 뜨면 웹 서버가 정상적으로 작동 하는 것 입니다.

외부 접속 허용

20131111_205838

system-config-firewall 명령어를 통해서 80번 포트(웹 서버 포트)를 열어주면 됩니다.

20131111_210017

그리고 나서 ifconfig로 리눅스의 ip를 외부 웹 브라우저에서 입력을 해주시면 됩니다.

20131111_205945

실제 서버를 구축해서 외부 접속을 가능하게 하려면 공인 IP를 대신 적어주시면 됩니다.

Ubuntu 12.04 LTS APM(Apache + PHP + Mysql) 설치

20140110_224046

apache2PM설치에 관하여 작성하였습니다.

(apt-get방식으로 설치를 진행합니다. 이점 유의해주세요)

0. root권한

sudo -i    <<이 명령어는 root권한을 가지게 함으로서 이후 일일히 sudo를 붙이지 않으셔도 됩니다.

1. APM과 기타 라이브러리 설치

(1) Apache2 설치

apt-get install apache2

(2) php5

apt-get install php5

(3) mysql

apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

(중간에 비밀번호를 입력하는칸이 나온다. root의 계정과 별도로 DB의 root계정의 비밀번호)

(4) GD라이브러리 설치(XE설치시 필요)

apt-get install php5-gd

(5) phpmyadmin

apt-get install phpmyadmin

(중간에 DB root의 비밀번호를 묻는다. 또 선택창이 뜨면 그냥 기본으로 진행한다)

2. 설정

(1) phpmyadmin 연동과 ServerName

vi /etc/apache2/apache2.conf

맨 아랫줄에

Include /etc/phpmyadmin/apache.conf

ServerName localhost

입력후 저장

(2) 언어셋(UTF-8) 설정

(2-1) PHP

vi /etc/php5/apache2/php.ini

default_charset = “iso-8859-1″을 default_charset = “utf-8″로 변경

(2-2) mysql

vi /etc/mysql/my.cnf

[mysqld]에 아래내용 추가

default-character-set=utf8

default-collation=utf8_general_ci

init_connect=set collation_connection=utf8_general_ci

init_connect=set names utf8

character-set-server=utf8

collation-server=utf8_general_ci

character-set-client-handshake = TRUE

(3) Apache, Mysql 재시작

service apache2 restart

service mysql restart

이렇게 진행하면 APM의 설치와 기타 필수적인 세팅은 완료된것이다.

위에서 UTF-8로 언어셋을 설정한것은 선택사항으로, 그누보드(EUC-KR)등을 사용한다면 입력하지 않거나 utf-8을 EUC-KR로 바꿔주면 된다.

최종적으로 확인을 위해 localhost(127.0.0.1, 본인IP, 도메인 등등)를 주소창에 입력하여 It works!가 출력되는지 확인하고, /phpmyadmin을 붙여 정상적으로 phpmyadmin이 작동하는지 확인하자.

– http://nkw68.blog.me/173305079

Ubuntu 12.04 LTS 아파치 설정

1. 일반 사용자의 홈 디렉토리를 웹 서버에 노출 시키는 방법

root@hooking:/etc/apache2/mods-enabled# ln -s ../mods-available/userdir.conf

root@hooking:/etc/apache2/mods-enabled# ln -s ../mods-available/userdir.load

root@hooking:/etc/apache2/mods-enabled# service apache2 restart

* Restarting web server apache2                                                apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

… waiting apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

[ OK ]

root@hooking:/etc/apache2/mods-enabled#

cd /etc/apache2/mods-enabled로 이동하셔서 위와 같이 명령어를 치시면 해당 폴더 안에 링크가 생성되고 사용자들의 각각의 홈 디렉토리의 특정 폴더를 웹 서버를 통해 노출 시킬 수 있습니다.

접근 방법은 -> 도메인/~사용자명 -> confile.info/~wyun13043

2. 아파치 서버 정보 감추는 방법

20140110_232630

ServerTokens Prod[uctOnly]

: Apache 만 보여줌

ServerTokens Min[imal]

: Apache 버젼만 보여줌

ServerTokens OS

: 아파치 버젼과 운영체제를 보여줌

ServerTokens Full (또는 지시하지 않았을때)

: 모두 보여줌

3. 디렉토리 리스팅 방지

디렉토리에 index 이름을 가진 파일이 없을 경우 그 폴더안의 모든 파일들을 리스트 해버립니다.

이것을 방지하기 위해서는 apache2 설정 중 Options의 Indexes옵션을 제거하시면 됩니다.

4. 심블릭 링크 사용 방지

20140110_233200

파일 시스템에 접근할 수 있다면 엄청난 위험이 따를 것입니다.

이것을 방지하기 위해서 FollowSymLinks를 제거해주시면 됩니다.


'Skills > Unix, Linux' 카테고리의 다른 글

How to install tcpreplay on Linux  (0) 2015.03.18
.bash_profile과 .bashrc의 차이점  (0) 2015.03.05
[CentOS] Repair Mode  (0) 2014.10.16
Configure Linux Virtual Local Area Network (VLAN)  (0) 2014.07.31
Linux VLAN configuration  (0) 2014.07.31

댓글