한 대의 서버에, 안녕배포판을 사용하여 하나의 홈페이지만을 운영하는 경우를 가정하자.

홈페이지 파일을 업로드할 계정도 하나만 있으면 되고, MySQL 데이타베이스도 하나만 있으면 된다.

 

앞서 강좌에서 설치는 끝났으므로, 이젠 셋팅만 변경하면 된다.

 

 

1. 계정 추가

 

    # useradd annyung11

    # passwd annyung11

 

앞의 강좌에서, 서버의 호스트명을 annyung11.org 로 지정했으므로 annyung11 이라는 계정을 만들어 주었다.

만약 /home 디렉토리 이외의 다른 파티션에 홈페이지 파일들을 올리고 싶다면 useradd 명령어에 -d 옵션을 주어

디렉토리를 별도로 지정하면 된다.

 

 

2. 계정 디렉토리의 퍼미션 변경

 

    # chmod 701 /home/annyung11

 

계정을 생성하면, 기본적으로 계정 디렉토리의 퍼미션이 700으로 되어 있다.

이럴 경우, 홈페이지를 만들더라도 외부에서 홈페이지 관련 파일들을 읽을 수 없어서 에러가 난다.

 

 

3. Apache 환경설정파일의 수정

 

아파치를 rpm으로 설치하였으므로, 환경설정파일의 위치는 /etc/httpd/conf/httpd.conf 이다.

 

① 377라인 : ServerName annyung11.org:80

    ServerName 항목의 주석을 풀고, 홈페이지로 운영할 도메인 이름을 적어준다. 마지막에 있는 '80' 은 포트번호이다.

 

② 384라인 : DocumentRoot "/home/annyung11/html"

    추가한 계정의 디렉토리를 적어준다. 계정 디렉토리 밑의 html 디렉토리는 /etc/skel/ 밑에 미리 만들어 두었으므로,

    계정을 생성하면서 자동으로 생성이 되어 있을 것이다.

 

③ 422,479라인 : Indexes 옵션 삭제.

    서버 운영의 목적에 따라 다르겠지만, 일반적으로 보안을 위해서 Indexes 옵션을 삭제한다.

    이 옵션을 삭제하지 않으면, 웹 상에서 홈페이지 디렉토리를 접속할 때, index.htm 등의 파일이 없을 경우,

    모든 파일의 목록을 보여준다.

 

④ 494라인 : DirectoryIndex index.html index.htm index.php

    웹 상에서 홈페이지 디렉토리에 접속할 때, 특정 파일로 직접 접속하지 않고, 그냥 디렉토리명만 요청할 경우에,

    특별히 파일명을 지정하지 않아도 자동적으로 보여지는 파일들이다.

 

    앞에 적어주는 순서대로 찾게되며, 예를 들어 현재 셋팅이 /home/annyung11/html/ 디렉토리가 웹 디렉토리이므로,

    브라우저에서 http://annyung11.org 로 접속했을 때는, /home/annyung11/html/index.html 파일을 자동적으로 보여주고,

    index.html 파일이 없을 경우에는 index.htm 파일을 찾고, 이 파일도 없으면 index.php 파일을 찾는다.

 

   만약 index.html, index.htm, index.php 파일이 모두 없을 경우에는 ③번의 Indexes 옵션을 삭제하지 않았다면

   디렉토리 내의 모든 파일들의 목록을 보여주고, Indexes 옵션을 삭제하였다면 에러메시지가 브라우저에 보여진다.

 

 

4. index.html 파일의 생성

 

    # cat /home/annyung11/html/index.html 

    annyung11 의 홈페이지

 

    # chown annyung11.annyung11 /home/annyung11/html/index.html

   

 

홈페이지가 제대로 뜨는지 확인하기 위해서 index.html 파일을 해당 계정의 디렉토리 안에 간단한 내용을 넣고 만들어 준다.

만들어준 파일의 소유권을 annyung11 계정의 소유로 변경해서, 추후에 annyung11 계정 사용자가 FTP로 접속했을 때

삭제할 수 있게 만들어준다.

 

 

5. Apache 재실행

 

    # /etc/rc.d/init.d/httpd restart
    Shutting down http:                                    [  확인  ]
    Starting httpd:                                            [  확인  ]
    #

 

아파치 환경설정파일을 수정하였으므로, 당연히 아파치 데몬을 restart 시켜주는 작업이다.

 

 

6. 윈도우XP에서 확인

 

이제 브라우저를 띄워서 웹서버의 IP 주소를 넣어보자. 홈페이지가 제대로 보이면 성공이다.

 

IP 주소로 접근하지 않고, 도메인으로 접근하여 테스트를 하는 방법도 있다.

비록 annyung11.org 라는 도메인을 공식적으로 소유하고 있지는 않지만, hosts 파일을 이용하여 컴퓨터를 잠깐 속여주면 된다.

 

윈도우XP의 경우에는 C:\WINDOWS\system32\drivers\etc\hosts 파일에 다음과 같이 마지막에 한 줄을 추가해 준다.

 

    127.0.0.1           localhost
    192.168.7.3    annyung11.org

 

MS Windows 에서는 사용자가 지정한 DNS 서버를 찾기 전에, hosts 파일이 먼저 우선시된다.

hosts 파일에 IP와 도메인 주소가 매칭되어 적혀있다면, 이 값을 맞는 값으로 알게 되는 것이다.

 

이제, 웹브라우저 주소란에 http://annyung11.org 를 넣고 엔터키를 눌러보자. 아래와 같이 나오면 성공한 것이다..!!

 

 

 

7. proFTPd 데몬의 환경설정 수정

 

안녕리눅스는 FTP 데몬으로 proftpd 를 사용하고 있다.

이제, 홈페이지 운영을 위한 서버를 구성하였고, annyung11 이라는 계정 사용자가, FTP 클라이언트 프로그램을 사용하여

홈페이지 소스를 업로드할 것이다.

기본값으로 proftpd를 사용하는 것보다는 약간의 수정을 통하여 보다 편하게 사용할 수 있다.

 

proftpd 데몬의 환경설정파일인 /etc/proftpd/proftpd.conf 파일에서 적당한 부분에 다음 두 줄을 추가한다.

필자는 ServerAdmin 항목 밑줄인 26라인쯤에 추가한다.

 

    DefaultRoot           ~

    DefaultChdir          html

 

'DefaultRoot   ~' 옵션은, 계정 사용자가 계정디렉토리의 상위 디렉토리로 이동할 수 없게 하는 옵션이다.

이 옵션이 없다면, FTP로 접속해서 /etc/ 밑의 각종 환경설정파일이나 기타 파일들을 볼 수가 있을 것이다.

'DefaultChdir   html' 옵션은, FTP 클라이언트 프로그램으로 접속했을 때, 자동으로 계정 밑의 html 디렉토리로 접속하게끔 해준다.

개발자가 파일을 업로드, 다운로드하는데 작은 배려라 생각하자.

 

proftpd.conf 파일을 수정하였으면, 데몬을 재시작한다.

 

    # /etc/rc.d/init.d/xinetd restart
    xinetd 를 정지함:                                         [  확인  ]
    xinetd (을)를 시작합니다:                              [  확인  ]
    #

 

이 외에도 ServerName 등을 변경한다거나, 기타 다른 옵션을 변경하여 FTP 사용 정책을 설정하는 것도 바람직한 일이다.

 

 

8. MySQL의 root 패스워드 변경 및 새로운 계정의 추가

 

mysql 데몬을 설치하였으면, mysql root의 패스워드를 지정해야 한다.

기본값으로 mysql root 의 패스워드는 없으므로, 보안상 좋지 않다.

 

우선은,  mysql 데몬이 띄워저 있는지 확인하고, 실행되지 않은 상태라면 실행시킨다.

 

    # /etc/rc.d/init.d/mysql start
    Starting MySQL:                                            [  확인  ]
    #

 

다음과 같이 실행하여, mysql의 root 패스워드를 원하는 것으로 변경하면 된다.

 

    # mysql mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 1 to server version: 4.0.22-log

 

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

    mysql> update user set password = ('원하는패스워드') where user = 'root';
    Query OK, 2 rows affected (0.03 sec)
    일치하는 Rows : 2개 변경됨: 2개  경고: 0개

 

    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)

 

    mysql>

 

이젠 계정을 추가해 준다.

계정명은 annyung11, 패스워드는 12354, 데이타베이스명은 annyung11db 로 설정하는 예제를 보자.

 

    mysql> use mysql
    Database changed
    mysql> create database annyung11db;
    Query OK, 1 row affected (0.00 sec)

 

    mysql> create database annyung11db;

    mysql> insert into user values ('localhost','annyung11',password('12354'),
          -> 'n','n','n','n','n','n','n','n','n','n',
          -> 'n','n','n','n','n','n','n','n','n','n',
          -> 'n','','','','','0','0','0');
    Query OK, 1 row affected (0.00 sec)

 

    mysql> insert into db values ('localhost','annyung11db','annyung11',
          -> 'y','y','y','y','y','y','y','y','y','y','y','y');
    Query OK, 1 row affected (0.00 sec)

 

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

 

    mysql> exit

    Bye

    #

 

콘솔에서 접속이 되는지 확인하여 보자.

 

    mysql -u annyung11 -p annyung11db

 

/etc/my.cnf 파일에서 password 항목의 주석을 풀고 앞서 지정한 mysql root 패스워드를 적어둔다.

 

    28라인 : password     = 원하는패스워드

 

만약 SQLGate 등의 원격 MySQL 접속프로그램을 사용한다면, 계정을 추가할 때 localhost 이외에도 IP주소나 % 기호 등을 이용하여 추가해 주어야 하며, /etc/my.cnf 파일에서 다음 항목을 주석처리 해 주어야 한다.

 

    51라인 : #skip-show-database

 

원하는 환경설정을 마쳤으면, mysql 데몬을 재실행시켜준다.

 

    # /etc/rc.d/init.d/mysql restart
    Shutting down MySQL:                                  [  확인  ]
    Starting MySQL:                                            [  확인  ]
    #   

 

 

 

 

 

다음 강좌에서는 아파치 웹서버의 버추얼호스트 셋팅을 알아보자.


http://cafe.naver.com/linuxcare/3396

+ Recent posts