CentOS 에 Apache , Php , Mysql 를 세팅 해봤습니다.

2011. 10. 20. 17:30Other languages & Web programming/PHP CodeIgniter

(캬~~~ 귀여운 팬더들.. 팬더.. 살아있는거냐... 인형이냐.... ?? )


사내 프로젝트 용으로 리눅스 서버를 받게 되었습니다.
이런저런 우여곡절 끝에 세팅을 완료하고 나서 기록을 정리하고자 합니다.
최종 목적은 SSH 접속, FTP 접속, Apache , Php , Mysql 의 세팅 이후 Web Page 구현이 목표 입니다.

1) 서버를 접속해보자...

처음 서버 IP 와 root 및 비번을 받았습니다.
접속을 하려고 하니.. 방화벽이 막혀서.. 안되더군요...
해당 업체에 방화벽등록신청서를 제출해야 합니다.
ssh,ftp,web 을 사용하기 위해 포트 와 저희가 사용하는 IP 대역대를 기재해서 제출!!!
*outbound 세팅을 해야만 yum 을 통해 세팅을 쉽게 이뤄지는뎅... deny 상태라서...
직접 설치하는 방향으로 진행하게 되었습니다.

리눅스 서버에 대한 접근은 이제 무조건 ssh 를 사용한다고 보면 됩니다.
프리버전의 ssh 프로그램이  검색하면 많이 나오니.. 잘 골라 잡아보시길 바랍니다.

** 방화벽 등록 신청시 기본 정보 inbound &  outbound
Inbound 정책은 외부에서 웹서비스시스템 내부로 들어오는 패킷을 허가/제한 하는 정책
Outbound정책은 웹서빗시스템 내부에서 외부로 나가는 패킷에 대해 허가/제한 하는 정책

**ssh(Secure Shell) 란 원격 터미널에 안전하게 엑세스하기 위한 유닉스 기반의 명령 인터페이스 및  프로토콜인데,
 서버 제어를 하기 위해서 사용되는 보안 로그인 쉘이죠. 보내지는 패킷을 암호화 하여, Telnet,ftp,pop 에 비해 안정적이죠.
 - 클라이언트 - 서버 연결의 양단은 전자 서명을 사용하여 인증되며, 패스워드는 암호화 보호됨.
 - SSH는 쌍방의 접속과 인증을 위해 RSA 공개키 암호화 기법을 사용한다.
 (암호화 알고리즘에는 Blowfish,DES 및 IDEA 등이 포함되며, 기본 알고리즘은 IDEA 이다.)

ssh를 설치하고 나서 접근 시도 ..... 부여받은 root ,비번을 입력하니... 접속 성공!!! 두둥...
골때리는 상황이 많이 생겼습니다.
ftp도 접근이 안되어서 이것 저것 알아보던 중에.. (참고로 ftp는 vsftpd 를 사용하더군요..)
SeLinux 는 ftp 데몬이 홈 디렉토리 (/) 외부에 있는 파일을 기록하지 못하게 하는 것 때문에... 접근 제한의 문제가 있었습니다. @.@;;
암튼 해결하고 난후에  root 계정으로 접근 불가하여, 계정을 새로 만들어서 등록을 하였습니다.

useradd canimals
passwd canimals
비밀번호 입력 > xxxxxxx
비밀번호 입력 확인 > xxxxxxx


위와 같이 진행을 하게 되면 새롭게 해당 계정 생성 및 접근 권한이 제한된 폴더가 구성이 됩니다.
cf) 계정 삭제는 deluser canimals  입니다.


혹시 FTP를 다시 시작,종료, 자동시작등을 할 일이 있을지 모르는 일이라서 이것저것 설정을 만지던 도중..
참고가 될까 하여.. 몇가지 명령어를 정리합니다.
vftp는 기본적으로 익명ftp로 동작하며 유저 ftp를 구동하기 위해서는 conf파일을 수정해야 한다
http://urein.blog.me/110038902476  --> 참고하세요 (시간이 나면 다른것도 더 검색해보시구요..)

FTP 서비스 시작/종료/재시작  : service vsftpd [start/stop/restart]
부팅시 자동 시작 : chkconfig vsftpd on
FTP의 자체 방화벽 설정은 iptables 를 편집하시면 되구, 기본 conf 파일설정은 vsftpd.conf 를 하시면 됩니다.

** 리눅스 기본 명령어
ls -al: 리스트 , pwd: 절대 경로 ,cd : 이동,  mv : 이동 , cp : 복사 , rm : 삭제 , mkdir: 폴더 생성 , rmdir 폴더 삭제 
이정도만 우선 숙지해두는 것이 좋다.. 아 그리고 tab 키를 활용하면 경로를 다 입력안하도록 도와 준네요

**  vi 와 vim 편집기
기본으로 입력 모드는 i 키, ESC 키 , :  키 요 3가지를 잘 사용해야 합니다.
그리고 저장하고 나가기(:wq), 저장하지 않고 나가기 (:q . :q!)
명령어가 넘 많아요 T.T  천천히 숙지해보아용...
http://blog.naver.com/powerhw?Redirect=Log&logNo=80122469526  --> 참고하세요


필요한 파일들을 미리 일일  다운로드 받아 놓고, ftp로 옮긴다음 우선 apm 이라는 폴더를 만들었습니다.
ftp로 받아온 파일을 한꺼번에 복사!!!

mkdir apm
cd apm
==> cp * /apm/

cmake-2.8.6.tar.gz
httpd-2.2.21.tar.gz
mcrypt-2.6.8.tar.gz
mysql-5.5.16.tar.gz
php-5.3.8.tar.gz


사실 위와 같은 삽질을 하기 전에 wget 를 사용하게 되면 보다 쉽게 다운로드 할수 있습니다.
하지만 저는 방화벽으로 인해, wget 조차 사용할수가 없었습니다. T.T

ex) wget ftp://ftp.sqyclub.com/pub/mysql/Downloads/MySQL-5.5/mysql-5.5.14.tar.gz

 

2) Mysql 설치

순서가 Mysql 부터 설치 하는 것이 좋다구 합니다.
이유가 아마도 phpAdmin 설정때문인듯 싶기도 하여..
MYSQL 5.5 이전버전은 configure 를 이용해서 설치하였다고 한다. (configure 설치는 이후 자연스럽게 알게 됩니다.)
5.5버전부터는 CMAKE 를 이용해서 MYSQL를 설치 할수있기 때문에 먼저 CMAKE를 설치하도록 한다

2-1) CMAKE 를 설치

tar xvf cmake-2.8.6.tar.gz
cd cmake-2.8.6
./bootstrap

이 다음에 항상 따르는 설치 파일 생성 과 파일 설치를 합니다. (컴파일 하는 거죠...)
make && make install
cmake를 설치하면 /usr/local/bin 에 위치한다  cmake 명령어로 설치 확인!


2-2) mysql 만의 전용 계정 설정

설치 후 mysqld_safe의 실행으로 mysqld 라는 데몬이 실행되고 이 mysqld 라는 데몬은 아래 생성한 mysql 이라는 사용자 소유로 실행된다.
useradd -g 옵션은 생성하는 계정의 소속그룹을 정해주는 것이고,
-M 옵션은 불필요한  홈 디렉토리를 만들지 않는 것이다.

groupadd -g 400 mysql
useradd -u400 -g400 -d /usr/local/mysql -s /bin/false mysql

2-3)  실제로 Mysql 설치

tar xvf mysql-5.5.16.tar.gz
cd mysql-5.5.13


cmake .  -LH -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DMYSQL_DATADIR=/usr/local/mysql/data


또 다음에 항상 따르는 설치 파일 생성 과 파일 설치를 합니다. (컴파일 하는 거죠...)
make && make install
그럼 /usr/local/mysql 에 mysql 는 설치가 되고, /usr/local/mysql/data 에 데이터가 쌓이게 되는 것이란 말씀..


2-4)  DB생성

chown -R mysql:mysql /usr/local/mysql
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data


chown -R mysql:mysql /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql/data
cp support-files/my-huge.cnf /etc/my.cnf
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
chown root.root /etc/init.d/mysqld
chkconfig --add mysqld
chmod 711 /usr/local/mysql
chmod 700 /usr/local/mysql/data
chmod 751 /usr/local/mysql/bin
chmod 750 /usr/local/mysql/bin/*
chmod 755 /usr/local/mysql/bin/mysql
chmod 755 /usr/local/mysql/bin/mysqldump

그리고 나서 시작을 하는데...
service mysqld start

** 시작이 안되거나 오류가 발생할 경우에는... T.T
(사실 난 /etc/my.cnf 파일이 문제였다... 그래서 지워 버리고 나서.. 했더니 잘 되더라..
위에 있는 대로 다시 해보고 안될 경우에만..
rm /etc/my.cnf
하고 나서 다시 시작하면 잘 될것 이야...

cd /usr/local/mysql/bin
./mysqladmin -u root -p password 비밀번호
./mysql -u root -p mysql


**http://hoonim.tistory.com/69  ==> 여기서 많은 정보를 얻었습니다
**http://system.neulwon.com/xe/?mid=linux_mysql&page=1&document_srl=2341

***  kill -9 pid : 프로세스 죽이기 명령어

3) Apache 설치

가볍게 압축파일을 풀어 보시구요... 
tar xvfz httpd-2.2.21.tar.gz
cd httpd-2.2.21

./configure --prefix=/usr/local/apache --enable-module=so --enable-module=rewrite --enable-module=headers --enable-ssl
make
make install


3-1) 자동 실행 설정
아파치 실행 스크립트 apachectl 를 복사
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

*chkconfig 를 통해 자동 실행을 등록해야 하는데...
chkconfig 명령어를 사용하면 등록되지 않는다고 한다. 스크립트 파일에 아래 내용으 ㄹ추가 하란다...

vi /etc/init.d/httpd


#chkconfig: 2345 90 90
#description: init file for Apache server deamon
#processname: /usr/local/apache/bin/apachectl
#config: /usr/local/apache/conf/httpd.conf
#pidfile: /usr/local/apache/logs/httpd.pid

chkconfig --add httpd
chkconfig --list | grep httpd

3-2) 실행 환경 설정
편집
vi /usr/local/apache/conf/httpd.conf 
user nobody
group nobody
servername localhost

실행
/etc/init.d/httpd start

그리고 나서  ps -ef | grep httpd  로 확인 함 해주고...
웹페이지로 해당 아이피 접속 하면.. 두둥...

홈 디렉토리를 변경하기 위해서 추가적으로 두가지를 설정을 바꿀 예정입니다.
a) httpd.conf 의 내에 홈디렉토리 경로 변경 한 뒤에.. 
  - 폴더 내에  권한 설정 변경 : Allow from all
  - 디렉토리 리스트 노출을 막기 위해서는 폴더 옵션에   indexes 를 없애줘야 합니다.
b)  디렉터리 퍼미션(Directory Permission)
   - chmod 711 /home/폴더명  
     위와 같이 해주면 잘 보입니다.....

 

4) Php 설치 입니다.

tar -zxf php-5.3.8.tar.gz
cd  php-5.3.8
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/apache/conf --disable-debug --enable-safe-mode --enable-sockets --enable-mod-charset --enable-calendar --enable-sysvsem=yes --enable-sysvshm=yes --enable-ftp --enable-magic-quotes --enable-gd-native-ttf --enable-inline-optimization --enable-bcmath --with-zlib --with-jpeg-dir=/usr --with-png-dir=/usr/lib --with-freetype-dir=/usr --with-libxml-dir=/usr --enable-exif --with-gd --with-ttf --with-gettext --enable-sigchild --enable-mbstring

make
make test
make install

4-1) apache 연동
cp php.ini-production /usr/local/apache/conf/php.ini
vi /usr/local/apache/conf/httpd.conf
아래에 3개만 추가 하면 되고, php5_module 은 자동으로 삽입되어 진다.

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps


<?php phpinfo(); ?> 요걸 test 페이지에 입력해서 출력이 되면.. 오케이 세팅끝!!!


********* 세팅 후기 ***********

mysql 세팅은 거의 10번은 진행한것 같다....
쉘 스크립트 사용으로 화면 캡쳐 따윈 없어서 편하넹... 근데 제대로 잘 돌아 가는지 @.@
모니터링 체크, 프로세스 체크, blablabla..... 점차 확인하고 알아가야 할것 들이 많은데... windows 서버에 10년 가까이 익숙해진 나에게 유닉스 ... 요건 뭔가?