웹마스터 팁

원문은 리눅스 서버 구축 입니다.

 

제로님께서 작성하신 거를 따라하면서 막힌 부분들을 적었습니다.

 

제가 작성한 문서를 따라하셔도 막힐 확률은 95% 일거라 생각합니다 -_-;;

 

그래도 많은 부분 보완하였으니... 제로님 문서 따라하다가 막히면 참고하시길 바랍니다.

 

*들어가기에 앞서.

  • 제가 설치한 운영체제는 centos 5.4 입니다.
  • 본문에 나오는 파일들은 제 블로그에 올렸습니다.
  • php5.2.11, php5.3.1 설치시 eAccelerator 혹은 Zend Optimizer 가 작동하지 않았습니다.
    php 5.2.9 버전으로 설치하니 eAccelerator, Zend Optimizer 둘다 잘 됩니다.

 

리눅스 서버 구축

리눅스 OS에서 Apache, PHP, MySQL, Zend Optimizer, xCache 를 연동하여 XE가 동작할 수 있는 서버 환경을 구축하는 법을 소개드립니다.

이 서버 구축 방법은 XpressEngine 공식사이트에 적용된 방법이며 CentOS release 4.7 (Final)를 이용하였습니다.

사용된 패키지는 다음과 같고 모두 소스 컴파일을 통해서 설치를 하였습니다.

  1. apache 2.2.11
    다운로드 : http://httpd.apache.org/
  2. php 5.2.9
    다운로드 : http://php.net/
  3. mysql 5.0.77
    다운로드 : http://mysql.com/
    단, mysql은 성능 향상을 위해서 직접 컴파일 하지 않고 Intel C/C++ compiled 를 사용하였습니다.
  4. Zend Optimizer 3.3.3
    다운로드 : http://zend.com
  5. xCache 1.2.2 (공식사이트 적용 결과 eAccelerator로 채택)
    다운로드 : http://xcache.lighttpd.net/
  6. eAccelerator 0.9.5.3
    다운로드 : http://bart.eaccelerator.net/source/0.9.5.3/

 

MySQL 5.0.77 설치

MySQL은 직접 컴파일하지 않고 성능향상을 위해 Intel C/C++ compiled 를 다운받아 설치합니다.

이 경우 서버에서 컴파일하지 않고 파일 복사를 하면 되고 glibc 버전등을 잘 고려하여 다운 받으시면 됩니다.

  1. 다운 받은 mysql-5.0.77-linux-i686-icc-glibc23.tar.gz 를 /usr/local/msyql-5.0.77-linux-i686-icc-glibc23.tar.gz 로 복사합니다.
    파일 이름은 버전, glibc 버전에 따라 다를 수 있습니다.
    /bin/cp msyql-5.0.77-linux-i686-icc-glibc23.tar.gz /usr/local
  2. /usr/local 디렉토리로 이동합니다.
    cd /usr/local
  3. 압축 해제를 합니다.
    tar xvfz msyql-5.0.77-linux-i686-icc-glibc23.tar.gz
  4. mysql 버전 업그레이드시마다 디렉토리 명을 재지정하지 않기 위해 심볼릭 링크를 겁니다.
    ln -s msyql-5.0.77-linux-i686-icc-glibc23 mysql
    위와 같이 하면 차후부터 /usr/local/mysql 을 mysql의 경로로 지정하면 됩니다.
    다만 /usr/local/mysql/data 디렉토리의 경우 잘 관리를 해주어야 합니다.
  5. mysql에서 권장하는 데로 mysql 계정과 그룹을 생성하여 줍니다.
    group add mysql groupadd mysql
    useradd -g mysql mysql
  6. mysql디렉토리에 권한을 부여합니다.
    cd /usr/local/mysql
    chown -R mysql .
    chgrp -R mysql .
  7. DB 인스톨을 합니다. (Intel C/C++ 컴파일 버전은 따로 컴파일 할 필요 없이 DB 생성을 하면 됩니다.
    ./script/mysql_install_db --user=mysql
    ./scripts/mysql_install_db --user=mysql
    chown -R root .
    chown -R mysql data
  8. mysql 대몬을 시작합니다.
    ./bin/mysqld_safe --user=mysql &
    ./bin/mysqld --user=mysql&
  9. 새롭게 MySQL을 설치한 경우 MySQL ROOT 비밀번호를 지정해주어야 합니다.
    ./bin/mysqladmin -u root password '비밀번호'

이제 mysql 설치는 끝났고 /usr/local/mysql/bin/mysql -u root -p 명령을 통해서 root 계정으로 접속 테스트를 하면 됩니다.

 

091122  2:38:19 [Warning] Can't create test file /var/lib/mysql/localhost.lower-test
091122  2:38:19 [Warning] Can't create test file /var/lib/mysql/localhost.lower-test
/usr/local/mysql/bin/mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 2)
091122  2:38:19 [ERROR] Aborting
091122  2:38:19 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
# mkdir /var/lib/mysql && chown -R mysql /var/lib/mysql

 

Apache, PHP 컴파일 설치

PHP는 Apache의 모듈로 탑재되어 동작을 하기에 Apache과 PHP는 같이 설치를 하는 것이 일반적입니다.

여기 사용된 Apache, PHP파일은 다음과 같습니다.

  • Apache : httpd-2.2.11.tar.gz
  • PHP : php-5.2.9.tar

프로그램 버전에 따라 다른 이름을 가질 수 있습니다만 각 압축을 해제한 파일을 아래와 같은 위치에 두도록 합니다.

  • Apache : /root/httpd
  • PHP : /root/php

아래와 같은 순서로 컴파일 하시면 됩니다.

  1. 아파치
    [root@localhost apache]# ./configure --prefix=/usr/local/apache --enable-so --enable-modules=so --with-mpm=worker --enable-rewrite
    [root@localhost apache]# make
    [root@localhost apache]# make install
    다양한 옵션을 줄 수 있지만 최소한의 설치만을 위해서 위와 같이 enable so, enable rewrite 만 옵션으로 두고 컴파일을 합니다.
    설치되는 경로는 /usr/local/apache 로 합니다.
    /usr/local/apache/bin/apachectl start
    위의 명령으로 웹서버를 실행하여 확인하실 수 있습니다.

    noacceptable C compiler found in $PATH 에러가 나오는 경우

  2. PHP
    PHP의 경우 다양한 연동 프로그램이 필요할 수 있습니다.
    예를 들어 XE에서 썸네일을 만들기 위해 GD Library가 필요하기도 하고 png, gif등을 다루기 위한 라이브러리가 필요하기도 합니다.
    소개하고 있는 CentOS에서는 yum을 이용하여 관련 라이브러리들을 먼저 설치할 수 있고 다른 리눅스 OS도 비슷한 라이브러리 설치 도구를 제공할 것입니다.
    1. 필요한 라이브러리 설치 (CentOS)
      yum -y install libxml2 libjpeg libpng freetype
    2. PHP 컴파일

      컴파일전에 깔아줘야할 라이브러리입니다. (자세한 설명은 블로그 포스팅에 있습니다)
      # yum install libxml2-devel openssl-devel bzip2-devel curl-devel libjpeg-devel libpng-devel freetype-devel gmp-devel mysql-devel ncurses-devel unixODBC-devel pspell-devel net-snmp-devel

      # tar xvfj php-5.2.9.tar.bz2
      # mv php-5.2.9 /root/php
      # cd /root/php
      # ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --enable-magic-quotes --disable-dmalloc --enable-bcmath --enable-gd-native-ttf --enable-sysvsem --enable-sysvshm --enable-inline-optimization --enable-mbstring --enable-mbregex --enable-gd-native-ttf --enable-ftp --with-jpeg-dir --with-freetype-dir --with-curl --with-zlib --with-gd  --with-ttf --with-iconv --disable-debug
      # make
      # make install
    3. PHP의 make install 시에 libmysqlclient.so.15 를 찾을 수 없다는 에러가 나오면 다음과 같이 해당 파일을 symbolic link로 처리할 수 있습니다.
      ln -s /usr/local/mysql/lib/libmysqlclient.so.15.0.0 /usr/lib/libmysqlclient.so.15
      다시 make install 하면 됩니다.
    4. php.ini 파일 복사/ 설정
      php 구동시 기본 설정을 읽는 php.ini 파일을 여기서는 /usr/local/php/lib/php.ini로 복사 합니다.
      cp php.ini-dist /usr/local/php/lib/php.ini
      위 파일을 열고 아래 부분을 수정합니다.
      register_globals = Off
      post_max_size = 200M
      file_uploads = On
      upload_tmp_dir = /tmp
      uplaod_max_filesize = 200M
      allow_url_fopen = Off
      allow_url_include = Off
      위의 설정중 이미 동일하게 설정된 것도 있을 수 있습니다.
      post_max_size는 post되는 정보의 사이즈를 설정하는 것이고 upload_max_filesize는 업로드 가능한 최고용량이니 서비스에 맞게 적절히 수정하시면 됩니다.
  3. Zend Optimizer 설치
    PHP의 기본 상태로 사용시 성능이 매우 저조한데 이를 위해 Zend Optimizer를 설치합니다.
    다운로드 받은 Zend Optimizer 압축 해제후 아래와 같이 실행하면 자동으로 설치 됩니다.
    ./install
    위 스크립트를 실행하면 설치 스크립트가 자동으로 위치를 읽어서 진행을 하게 됩니다.
    Zend Optimizer를 설치하면 /etc/php.ini 는 /usr/local/Zend/etc/php.ini 로 대체됩니다.
    관련문서1 관련문서2
  4. Apache에 PHP 설정하기
    아파치 설정파일에 PHP 실행을 연동하기 위한 설정을 합니다.
    /usr/local/apache/conf/httpd.conf 파일을 열어서 아래와 같은 부분을 변경합니다.
    LoadModule php5_module        modules/libphp5.so
    <IfModule dir_module>
        DirectoryIndex index.html index.php
    </IfModule>
    <IfModule mime_module>
        ...
        AddType application/x-httpd-php .php
        ...
    </ifModule>
  5. xCache 연동 (eAccelerator로 대체)
  6. eAccelerator 설치

    bash: phpize: command not found
    # yum install php-devel
    - 관련문서 PHP - eAccelerator 설치

     

    다운로드 받은 파일의 압축을 풀고 다음과 같이 설치하시면 됩니다.

    phpize
    configure --enable-accelerator
    make
    make install
    # tar xvfj eaccelerator-0.9.5.3.tar.bz2
    # cd eaccelerator-0.9.5.3
    # ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
    # make && make install
    그리고 /usr/local/Zend/etc/php.ini 파일을 열어서 Zend Optimizer 문 위에 아래와 같은 내용을 입력하세요.
    zend_extension_ts="/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so"
    eaccelerator.shm_size="16"
    eaccelerator.cache_dir="/var/cache/eaccelerator"
    eaccelerator.enable="1"
    eaccelerator.optimizer="1"
    eaccelerator.check_mtime="1"
    eaccelerator.debug="0"
    eaccelerator.filter=""
    eaccelerator.shm_max="0"
    eaccelerator.shm_ttl="0"
    eaccelerator.shm_prune_period="0"
    eaccelerator.shm_only="0"
    eaccelerator.compress="1"
    eaccelerator.compress_level="9"
    eaccelerator.log_file="/var/log/eaccelerator.log"
    * /var/cache/eaccelerator 디렉토리를 생성하셔야 합니다.
    # mkdir /var/cache/eaccelerator
    # chown nobody
    /var/cache/eaccelerator
    # chmod 700 /var/cache/eaccelerator
    XP2IHTGV00.jpg
    정상적으로 설치 되었다면 위와 같이 eAccelerator, Zend Optimizer 둘다 보여야 합니다.

  7. phpMyAdmin 설치

 

본문에 처음에 나와 있듯이 centos + apm + Zend Opt. + eAccelerator 는 XE 공식 홈페이지에 적용된 방법이라고 합니다.

 

속도는... 맘에 듭니다 -_-;b

 

좀 있으면 보스(?)께서 이보다 더 보완된 메뉴얼을 내놓으실거라 믿습니다 :)

제목 글쓴이 날짜
Windows 서버에서 XE 속도 대폭 개선 방법 [29] StyleRoot 2013.02.25
기본 url 을 공란으로 둔 경우 `잘못된 요청입니다' 메시지 [6] samsara 2013.02.24
출석부 소시랑 스킨 출석회원없을때 우측위젯이 아래로 떨어지는 현상 해결방법 [3] garnecia 2013.02.23
XE를 아주 간편하게 루트로 옮기기. [23] file LI-NA 2013.02.23
XE 그룹아이콘 레벨아이콘 아이콘샵 동시출력하기(모르는분들 있으까봐올립니다.) [1] 모앱 2013.02.22
XE 1.4.X 용 nginx rewrite rule 입니다! (xzet 1.4 기준) CM(OEZ) 2013.02.21
XE 1.5.X 용 nginx rewrite rule 입니다! CM(OEZ) 2013.02.21
[수정1차] XE 1.7.X 용 nginx rewrite rule 입니다! [15] CM(OEZ) 2013.02.21
스케치북5 글 관리자만 익명으로 보기 [3] taemin-ho 2013.02.19
Content (and확장) 위젯에서 추출대상 첨부이미지일 경우 카테고리명 및 이미지+제목 형식 섬네일 표시 못하는 문제 으흥 2013.02.17
팝업창 자동 사이즈 조절 js Alex 2013.02.17
방명록 모듈 1.5.1.1에서 비회원이 남긴글 삭제하기 조슈아킴 2013.02.14
이미디오 (이미지->동영상) 기능을 적용해보자. [8] file asterisk 2013.02.12
흥미로운 AND, OR 조건문 엘카 2013.02.10
ShopXE 상품 첨부 - 상품이미지 등록시 첨부 용량 초과 에러 수정 hhgyu 2013.02.05
[SocialXE] 트위터 로그인시 프로필 사진이 표시되지 않는 문제 해결하기 [3] file TUW 2013.02.03
문서에서 원하는 썸네일 뽑아오기. [16] Xiso 2013.02.01
NAVER Analytics 모듈 1.5.4.X 에서 사용하기 hhgyu 2013.01.30
소스 수정할 때, utf-8로 한글 적는 방법. $lang 때문에 애먹는 분들에게 드리는 초간단 팁... utf-8 <-> euc-kr 변환방법 [2] 최르토스 2013.01.30
이전글, 다음글 코어 건드리지 않고 사용하기 (모듈X, 애드온X) (업데이트) [8] 시니시즘 2013.01.26