LAMP Server 설치하기  ( 출처 : http://lamphowto.com/ )

Linux 기반위에 웹서버를 구축하기 위해서 Apache, MySQL, PHP를 설치하는 과정을 나타낸 것이다.
참고로 리눅스는 페도라 버젼을 사용하여 설치하였다.

Initial Steps

su - root
yum install gcc gcc-c++

모든 설치는 root 계정에서 이뤄지며, 페도라 설치시 기본적으로 gcc를 설치했기때문에
gcc에 설치에 대한 부분은 생략하고 진행하였다.

Remove RPM Versions of the Applications

: 기존에 설치된 내용이 있는지 점검하고 삭제한다.

rpm -qa

현재 설치된 어플리케이션의 RPM 정보를 모두 모여준다.

rpm -qa | grep -i apache
rpm -qa | grep -i httpd
rpm -qa | grep -i php
rpm -qa | grep -i mysql

해당 어플리케이션의 RPM 만을 찾아서 보여준다. 기존에 설치된 버젼이 있다면 아래 명령을 이용하여

이전 버젼을 삭제한다.

rpm -e filename

rpm -e로 mysql이 삭제되지 않는 경우 .. mysql 삭제하기

1. 프로세스 확인해서  => kill 
#ps -ef|grep mysql

#kill -9 프로세스번호 프로세스번호..

2. 디렉토리 삭제하기
#cd /usr/local
#rm -rf mysql



Get the Source Code for all Applications

필요한 소스를 받아서 원하는 디렉토리에 저장한다. 가능하면 하나의 폴더에 모두 받아서 설치하는 것이
관리하기 편리하다.

cd /usr/local/src

어플리케이션들에 대한 소스는 아래 사이트를 참고해서 최신 버젼을 설치한다.

MySQL  ( www.mysql.com )
PHP ( www.php.net )
Apache ( http://httpd.apache.org/ )

저의 경우는 리눅스 포털(www.superuser.co.kr) 에서 모두 받아서 설치하였다.

Apache : httpd-2.2.4.tar.gz
PHP : php-5.2.3.tar.gz
MySQL : mysql-5.0.44.tar.gz

실제로 위의 파일을 이용하여 설치하였지만, 아래의 내용들은 기존의 버전들을 이용하여 작성한
자료를 활용하였습니다. 참고하세요 ..

Unpack the Source Code

tar zxf php-4.4.6.tar.gz
tar zxf apache_1.3.37.tar.gz
tar zxf mysql-4.1.22.tar.gz

각각의 압축파일은 독립된 폴더에 파일을 풀어 놓는다.

Build and Install MySQL

가장 먼저 설치하는 것이 MySQL이라는 데이타베이스(DB)이다.
DB의 경우 보안상의 이유로 root 계정을 이용하는 것보다는 새로운 계정을 만들어 사용하는 편이 보다 보안상 안전하다고 생각한다. 시스템의 root 계정이 해킹당하더라도 DB에 대한 정보를 보호하기 위해서이다.
그래서, 여기서는 mysql 이라는 그룹과 사용자를 새로 만들어 관리한다.

groupadd mysql
useradd -g mysql -c "MySQL Server" mysql

소스를 컴파일 하기 전에 각자 가지고 있는 환경 설정을 위해서 configure 를 실행한다. 여기서 필요한 옵션들을 활용하여 mysql을 설치한다.
cd /usr/local/src/mysql-4.1.22

chown -R root.root *

make clean

./configure \
--prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--disable-maintainer-mode \
--with-mysqld-user=mysql \
--with-unix-socket-path=/tmp/mysql.sock \
--without-comment \
--without-debug \
--without-bench

이상없이 configure 끝나면 소스 컴파일하고 설치를 시작한다.
make && make install


Configure MySQL

mysql은 설치 되었지만 실제 우리가 사용할 수 있는 DB(데이타베이스)가 생성되지 않았다.
데이타베이스를 설치한다.
./scripts/mysql_install_db

MySQL의 디렉토리 권한을 설정한다.
chown -R root:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data

디폴트 설정파일을 MySQL에 적용하기 위해서 복사하고 권한을 설정한다. (small, medium, large, huge)
cp support-files/my-medium.cnf /etc/my.cnf
chown root:sys /etc/my.cnf
chmod 644 /etc/my.cnf

시스템에 동적 라이브러리의 위치를 알려준다.
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
ldconfig

이제, startup script를 작성한다. 시스템이 시작될때 자동으로 MySQL이 동작한다.
cp ./support-files/mysql.server /etc/rc.d/init.d/mysql
chmod +x /etc/rc.d/init.d/mysql
/sbin/chkconfig --level 3 mysql on

시스템 어디서든 동작할수 있도록 모든 파일에 대해서 symlink를 설정한다.
cd /usr/local/mysql/bin
for file in *; do ln -s /usr/local/mysql/bin/$file /usr/bin/$file; done

MySQL Security Issues

네트워크를 사용하지 않는다면 /etc/my.cnf 파일의 # 를 제거한다.

skip-networking        - 네트워크 이용하지 않는 경우
#skip-networking      - 네트워크 이용 (TCP 3306 listen )



Start MySQL

MySQL은 symlink 설정을 이용하여 시작하는 방법과 manually 시작하는 방법이 있다.
 
1. symlink 이용
cd ~
/etc/rc.d/rc3.d/S90mysql start

2. manually 시작
/etc/rc.d/init.d/mysql start
/etc/rc.d/init.d/mysql stop

mysql 설치가 제대로 되었는지 테스트하기 위해서 버젼을 확인한다.
mysqladmin version

mysql root 에 대한 password 를 설정한다. ( 이때, 시스템 root 와 mysql root 패스워드를 다르게 설정하는것을 권장한다. )
mysqladmin -u root password new-password
(당연히, new-password 는 자신만의 패스워드를 입력하겠죠!!!)


Test MySQL

간단한 테스트를 위해서 root로 mysql에 로그인해보자
mysql -u root -p

로그인하기 위해서는 패스워드를 물어보는데, 조금전에 설정한 패스워드를 입력하면 된다.
drop database test;
use mysql;
delete from db;
delete from user where not (host="localhost" and user="root");
flush privileges;

지금까지는 root 계정을 이용하여 실행하였지만, 아래 명령 실행후에는 root 계정을 사용할수 없고,
새로 입력한 sqladmin으로 root를 대신하게된다.


update user set user="sqladmin" where user="root";
flush privileges;

mysql 종료하기
\q


Build and Install Apache (with DSO support)

cd /usr/local/src/apache_1.3.37

make clean

./configure \
--prefix=/usr/local/apache \
--enable-shared=max \
--enable-module=rewrite \
--enable-module=so

make && make install



Build and Install PHP
cd /usr/local/src/php-4.4.6

./configure \
--with-apxs2=/usr/local/apache/bin/apxs \
--disable-debug \
--enable-ftp \
--enable-inline-optimization \
--enable-magic-quotes \
--enable-mbstring \
--enable-mm=shared \
--enable-safe-mode \
--enable-track-vars \
--enable-trans-sid \
--enable-wddx=shared \
--enable-xml \
--with-dom \
--with-gd \
--with-gettext \
--with-mysql=/usr/local/mysql \
--with-regex=system \
--with-xml \
--with-zlib-dir=/usr/lib

make && make install

cp php.ini-dist /usr/local/lib/php.ini

아파치 2.x 이상인 경우는 --with-apxs 옵션이 아닌 --with-apxs2 옵션을 사용하여 설정한다.

다음은 php config file을 /etc 에서 모두 관리하기 위해서 symbolic link 설정
ln -s /usr/local/lib/php.ini /etc/php.ini


Edit the Apache Configuration File (httpd.conf)


apache 관련 config 파일도 /etc 디렉토리로 link 설정한다.
ln -s /usr/local/apache/conf/httpd.conf /etc/httpd.conf

그리고, httpd.conf 파일을 열어 다음과 같이 설정한다.
# php 파일에 대해서 php 어플리케이션이 동작하기 위해서, #를 제거한다.
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

# tar 타입에 대해서 추가
AddType application/x-tar .tgz

# php, htm, html 확장자파일에 대해서 적용..
AddType application/x-httpd-php .php .htm .html


# 해당파일명을 가진 것을 시작 페이지로 설정

<IfModule mod_dir.c>
    DirectoryIndex index.php index.htm index.html
</IfModule>



Start Apache


시스템과 동시에 apache 가 실행되게 설정
ln -s /usr/local/apache/bin/apachectl /etc/rc.d/init.d/apache

runlevel 3 로 아파치 어플리케이션 설정
ln -s /etc/rc.d/init.d/apache /etc/rc.d/rc3.d/S90apache

데몬 프로세스를 구동
/etc/rc.d/init.d/apache start

현재 돌고있는 프로세스 확인
ps -ef





Posted by 시티락