1. apache 설치
이전 설치는 진행 (해당 내용의 압축및 묶음 부분 참고)
혹은 해당 설치 메뉴얼 참고
1) 압축 풀기
듣고 있는 강의에서는 apache_1.3.34.tar.gz 파일로 진행
>tar xvfz apache_1.3.34.tar.gz
.....(압축 풀림)
2) 설치 준비 (원하는 폴더에 설치하도록 준비)
>ls
....
Makefile.tmpl
......
>vi Makefile.tmpl
~~~~
69line prefix = @prefix@
~~~~
***prefix가 설치 path 임 여기서는 변수명으로 셋팅되어
있는데 사용자가 옵션을 줘서 설치 경로를
지정 할 수 있다.
***apache 옵션값 설정은 configure 라는 실행파일을
실행함으로서 설정 가능하고 명령어 끝에 \ 표시시
다음줄에 옵션 부여 가능 이때 위에서 확인한 prefix 라는
옵션값을 부여하면 해당 옵션이 적용된다.
>./ configure \
--prefix=/apm/apache
~~~~(설치준비 상태)
>vi Makefile.tmpl
~~~~~
69line prefix = /apm/apache
~~~~~
****변경되어 있는걸 확인하면 ok
3) 컴파일 진행 (설치)
>make
~~~~~ 컴파일을 진행한다.
4) 컴파일된 파일을 옵션 설정된 폴더에 설치 진행한다.
>make install
~~~~~설치중
/apa/apache/conf/httpd.conf (메인 설정파일)
/apa/apache/bin/apachectl start (실행 파일)
~~~~~위 메시지를 확인할 수 있다.
5) 이전 설치 내용 확인 및 프로세스 실행
>rpm -qa|grep httpd
****아직 설치된 내용이 뜨지 않음
혹시 다른게 떠있으면 삭제 필요
>rpm -e httpd* --nodeps
(의존성 무시하고 삭제 * 대신
들어가는 문자를 일치해서 삭제 할 것)
apa/apache/bin>./apachectl start
>ps -ef|grep httpd
~~~근데 꽤 많음... 접속 사용자마다 프로세스가 할당되기
때문에 몇개 미리 띄워둔것
옵션 파일 설정을 통해서 프로세스 갯수를 조정 가능함
웹 브라우저에서 자신 ip접속시 사이트가 하나 뜨면 끝
2. 실행관련 정보
>./apachectl start
>./apachectl stop
****프로세스가 안떨어질 경우
>ps -ef|grep httpd
>killall httpd (여러 같은이름 프로세스를 같이 날리기
****패스를 잡아주고 어느 위치에서든
명령어만으로 실행 가능
1) 실행파일 패스 등록하기
>vi .bach_profile
~~~~
PATH=$PATH:$HOME/bin:
/apm/apache/bin:경로추가1:경로추가2
~~~~~
:wq
****windows 는 ; 로 구분하는데 여기는 : 로 구분하는것만
다르고 같음, 리눅스는 로그인, 아웃 한번 해서
해당 파일을 한번 읽게끔 해야 적용 가능함
2) 실행파일 자동 시작 등록하기
:ntsysv에서 체크한 데몬만 자동시작함
[/etc/rc.d/rc.local]
**** 사용자가 정의하는 배치파일이 등록되어 있음
여기에 /apa/apache/apachectl start 를 등록하려고 함
>cd /etc/rc.d
>ls
~~~
rc.local
~~~~
>vi rc.local
~~~~
touch /var/lock/subsys/local
/apm/apache/bin/apachectl start
:wq
>reboot
~~~~~
>ps -ef|grep httpd
~~~~ 뜨면 됨
이런 절차를 ntsysv에서 자동 설정가능
실행 후 프로세스를 체크하면 됨
ps.
폴더 권한 이해
-rwxrwxrwx (파일 r(읽기), w(쓰기, 수정, 삭제), x(실행))
drwxrwxrwx(디렉토리 r(ls 가능여부),
w(디렉토리 안에 파일 생성, 삭제, 수정),
x(접근 가능 여부))
**** 디렉토리에서 r 과 x 의 차이점
>cd home/babo ****일반 사용자 계정홈 디렉토리
>mkdir test
>ls
drwxr-xr-x 2 root root ~~
****root 만 접근되고 다른데서는 ls, 접근만 가능
test 폴더안에 폴더나 파일 생성은 불가
>chmod 700 test
>ls
drwx------ 2 root root ~~~
**** 아예 들어가지 못하는 상태
>mkdir test2
>chmod 701 test2
>cd test
>cat >aaa.txt
>cd /home/babo/test2
>cat >aaa.txt
ls
~~~~
-rw-r--r-- 1 root root ~~~
**** 파일은 읽은수는 있음
**** 일반 계정으로 접근하여 test 폴더 접근
>ls -al|grep test
>cd test
-----접근 불가
>cat test/aaa.txt
-----파일에도 접근 불가함
**** test2 접근
>ls -al |grep test2
~~~~
drwx-----x ~~~~
~~~~
>cd test2 (폴더 접근은 가능해짐)
>ls
---- 접근불가(r원한 없으므로 접근은 되나 ls명령은 안됨)
>cat test2/aaa.txt
hello
-----ls은 안되는데 안의 aaa.txt는 접근 가능함!!!
3. 주요 구성 파일 [conf/httpd.conf] 살펴보기
>vi /apm/apache/conf/httpd.conf
:se nu
****거의 1000라인 정도 됨
****/apm/apache/conf/httpd.conf.default <-- 백업파일
1) 전역 환경 구간 : 41line section1
.....
52line
ServerType standalone
****자주 쓰는 서버라서 항상 대기하고 있는 타입
63line
ServerRoot "/apm/apache"
****기본 폴더
80line
PidFile /apm/apache/logs.httpd.pid
****프로세서가 생성되는 기본 파일명
99line
ResourceConfig /apm/apache/conf/srm.conf
AccessConfig /apm/apache/conf/access.conf
****현재는 설정파일이 한개이지만 이전에는
3개의 설정파일이 있었음 현재는 주석처리되어 있음
105line
Timeout 300
****유저 세션 유지 유효시간
139line **** 자주 손대는 부분
MinSpareServers 5
MaxSpareServers 10
****daemon을 5~10개 유지하겠음 (서버 부하에 따라서)
StartServers 5
****최초 시간 프로세스 갯수
155line
MaxClients 150
****동시접속자
171line
MaxrequestsPerChild_0
****아파치웹서버가 요청에 대해 세션 처리하는
프로세스 갯수를 설정 현재 무한대
178line
Listen 3000
****처리포트 지정 현재 주석처리되어 있음
2) 메인서버구성구간 213Line Section2
236line
Port 80
****서버 가동 포트
250line
User nobody
Group nobody
****daemon 프로세서 등록시 사용하는 계정
258line
ServerAdmin ~~
****Admin 이메일 계정
283line
DocumentRoot "~~"
****웹 요청에 대해서 어느 폴더로 안내할 것인가
293line
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory >
****
FollowSymLinks
심볼링 링크를 허가+기본 폴더 이외 폴더까지 포함
>cd /
>cat > aaa.txt
~~~It's station root by aaa.html
>cd /apm/apache/htdocs
>ln -s /aaa.html a.html
웹사이트 접속 : ip/a.html <-- 접속 가능
옵션 삭제후 재시작시 a.html 접속 불가
****AllowOverride None
사용자 계정을 물어보지 않고 요청에 진행
웹서버 특성상 사용자 체크 하지 않음
317line
<Directory />
~~~~
Options Indexes FollowSymLinks MultiViews
~~~~
</Directory >
**** Indexes
디렉토리 보여주기 기능을 포함할지 안할지 여부
317line
<Directory />
~~~~
Options Indexes FollowSymLinks MultiViews
~~~~
</Directory >
****
Indexes
디렉토리 보여주기 기능을 포함할지 안할지 여부
요청 파일이 디렉토리에 없는 경우
(디렉토리는 있는 경우)디렉토리를 보여줌
**** MultiViews
언어별 대응 옵션.. 거의 사용하지 않음
324line
<Directory />
~~~~
AllowOverride None
~~~~
</Directory >
****
AllowOverride 사용자가 누구인지 물어보지 않는다.
329line
<Directory />
~~~~
Order allow, deny
Allow from all
Deny from ip
~~~~
</Directory >
**** Allow or Deny
tcp/ip 레벨에서 사용자 ip에 따라 막는지 여부를 체크
339line
<IfModule mod_userdir.c />
UserDir public_html
</IfModule mod_userdir.c >
**** mod_userdir.c
>httpd -l
****apache에 설치된 모듈을 보여준다.
이중 mod_userdir.c 라는 내용이 있는 경우
public_html로 안내하도록 하는 기능
이 옵션을 통해서 호스팅 서비스가 가능하다.
여기서 아래처럼 변경한다.
<IfModule mod_userdir.c />
UserDir
www
</IfModule mod_userdir.c >
+
346line
<Directory
/home/*/www
</Directory>
**** 사용자 디렉토리 mod_userdir.c 설정시
directory 부분 주석을 풀어준다.
그리고 사용자 babo에 대해서
>mkdir /home/babao/www
> cd /home/babo/www
>catch aaa.html
~~~~here aaa by babo
그리고 웹 브라우저로 접속
http://ip/~babo
안들어가지면 익명 사용자 권한 확인 할 것
(babo 폴더, 안의 html문서 )
346line
<Directory
/home/*/www
</Directory>
****
483line
CustomLog /apm/apache/logs/access_log common
**** 사용자 접속시 남기는 로그 정보의 저장
맨 뒹 common은 type
agent
refrear
common
combined
(471라인부터 각 옵션에 대해 뭘 저장할 건지 설정 가능하다.)
3) 가상 호스트
4. 사용자별 홈 디렉토리 접근하기
기본 설정
위 설명중 339line, 346line 확인할 것
추가
www.hostion.co.kr ->/apm/apache/htdocs/index.html
www.john.co.kr -> /home/john/index.html
www.mark.co.kr -> /home/mark/index.html
첫번째 DNS 구성
>vi /etc/named.conf
~~~~
zone "hosting.co.kr" IN{
type master;
file "hosting.zone";
};
zone "john.co.kr" IN{
type master;
file "john.zone";
}; zone "mark.co.kr" IN{
type master;
file "mark.zone";
};
:wq
>cd /var/named
>cp localhost.zone hosting.zone (정방향 샘플 복사)
>vi hosting.zone
~~~~
$TTL 86400
$ORIGIN
hosting.co.kr
@ 1D IN SOA @
ns.hosting.co.kr. (
423 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimun
1D IN NS ns.hosting.co.kr
1D IN A 본인 ip
ns IN A 본인 ip
www IN A 본인 ip
:wq
>cp hosting.zone mark.zone
>cp hosting.zone john.zone
두 파일은 위의 진한 부분만 mark, john 으로 교체
네임 서비스 재시작 (안죽으면 킬로 날린 후 재시작)
확인 >nslookup 으로 확인
두번째 사용자가 없는 경우 만들어 둔다.
>useradd john
>passwd john
pssword 입력
>useradd mark
>passwd mark
password 입력
>cd /home
>ls => john, mark 폴더 있는지 확인
>cd /home/mark
>cat > index.html
www.mark.co.kr site
ctrl+z
>cd /home/john
>cat > index.html
www.john.co.kr site
ctrl+z
세번째 웹서버 구성(옵션 설정)
>vi /apm/apache/conf/httpd.conf
Section3 부분으로 이동 - 1아이피 여러사이트 만들시 사용
930line
NameVirtualHost 본인ip 혹은 *:80
**** 어느아이피의 어느포트를 가상호스트로 사용할 것인가
ip가 하나면 ip를 여러개 다 적용할 거면 * 를 기입
938line
#<VirtualHost *:80
# ServerAdin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerNAme dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
**** 샘플 파일인데 이를 똑같이 복사해서 작성
관리가 이메일
안내 폴더
사용자가 접속해야되는 문자열(사이트명)
로그, 접속 정보 쌓는 파일명
위의 3가지 중요하고 밑의 두가지는 부가적임
<VirtualHost *:80
ServerAdin admin@john.co.kr
DocumentRoot /home/john
ServerName www.john.co.kr
ServerAlias john.co.kr
ErrorLog /home/john/error_log
CustomLog /home/john/access_log common
</VirtualHost>
>/apm/apache/bin/httpd -t (httpd 문법 에러 체크)
ServerAlias 는 별칭을 붙이는거 www안붙여도 접속되게끔
설정 가능하게 한것.
네번째 권한 확인(폴더 및 확인용 index파일)
디렉토리 최소한 701 이상 부여
다섯번재 테스트(데몬재시작 및 접속하기)
dns 서버를 잡아주고 브라우저 띄워서 접속 진행
mark도 똑같이 진행
5. 인증 사이트 서비스 제공하기
http://ip/member/~
>/apm/apache/conf/cp httpd.comf.default httpd.conf
>vi /apm/apache/conf/httpd.conf
370line
AccessFileName .htaccess
<Directory /apm/apache/htdocs/member>
AllowOverride Authconfig
AuthName "Input your id and password":
AuthType Basic
AuthUserFile /apm/apache/htdocs/member/.htpasswd
<Limit POST GET>
require valid-user //인증된 사용자만 허락 여부 옵션
</Limit>
Order allow, deny
Allow from all
</Directory>
**** .htaccess 에 있는 사용자고
.htpasswd 에 암호가 일치한 사용자만
접근하게끔 작성 <Limit옵션>
>/apm/apache/bin/httpd -t
>mkdir /apm/apache/member
>cat > /apm/apache/member/index.html
~here your zone your our member
>apachectl restart
>/apm/apache/bin/htpasswd -c /apm/apache/htdocs/member/.htpasswd babo
password 물어봄
>cat /apm/htdocs/member/htpasswd
babo 유저에대한 암호가된 비번이 작성되어 있음
웹 브라우저에서 접속
http://ip/member
계정을 물어봄 여기에 id, pass를 입력시 들어가짐
6. 각 사이트별 포트를 다르게 설정하기
(가상 호스트를 이용한다.)
본인ip:80
본인ip:2000
폴더 및 문서 작성
htdocs\2000\index.html
htdocs\3000\index.html
>cp httpd.conf.default httpd.conf
>vi httpd.conf
178line
Listen 80
Listen 2000
Listen 3000
****포트를 추가함
섹션3 - 네임기반이아니기 때문에
이전 예제처럼 NameVirtualHost는 설정할 필요 없음
<VirtualHost 본인ip:3000>
DocumentRoot /apm/apache/htdocs/2000
# ServerName www.john.co.kr
#않넣어도 ip로 접근가능
# serverName 지정시 도메인명으로 접근 가능
</Virtualhost>
<VirtualHost 본인ip:2000>
~~~이전 단락의 내용을 본인거에 맞게 작성
</Virtualhost>
웹으로 접근 http://본인ip:2000