1. intl 설치

# cd /usr/local/src/php-5.6.25/ext/intl
# /usr/local/php/bin/php/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-intl
# make && make install
# vi /usr/local/apache/conf/php.ini
[extension]
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
extension=intl.so

설치 시 오류사항

configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.
# yum install libicu-devel

2. soap 설치

# cd /usr/local/src/php-5.6.25/ext/soap (실제 php 소스파일의 경로는 이와 다를 수 있음)
# ./configure --enable-soap --with-php-config=/usr/local/php/bin/php-config
# make && make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
# vi /etc/httpd/conf/php.ini (아파치 설치 경로에 따라 다를 수 있음)
[extension]
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
extension=soap.so

3. imagick 설치

1) 필수 패키지 설치

yum -y install ImageMagick ImageMagick-devel

2) 최신 파일 다운로드 및 설치

최신 버전 다운로드 사이트 : http://pecl.php.net/package-stats.php 

# cd /usr/local/src
# wget http://pecl.php.net/get/imagick-3.4.3.tgz
# tar xvfz imagick-3.4.3.tgz
# cd imagick-3.4.3
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make && make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

# vi /etc/httpd/conf/php.ini (아파치 설치 경로에 따라 다를 수 있음)
[extension]
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
extension=imagick.so

설치 시 오류사항

php-config 실행시 아래와 같이 에러 발생 시
configure: error: Cannot locate header file MagickWand.h
이는 MagickWand.h 파일이 들어있는 디렉토리의 이름이 ImageMagick 가 아닐 경우 나온다.  
ln -s /usr/local/include/ImageMagick-6 /usr/local/include/ImageMagick (심볼릭 링크 처리)
ln -s /usr/include/ImageMagick-6 /usr/include/ImageMagick (심볼릭 링크 처리) // RockyLinux8 이상

3) 아파치 재시작 후 모듈 적재 확인

아파치 재시작 후 /usr/local/php/bin/php -m 실행 결과 목록에 Imagick가 있는 경우 정상 로드 된 것임.
세부적인 확인은 /usr/local/php/bin/php -i | grep -i imagick 입력 하면 자세한 모듈 정보를 불러온다.

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

apache mod_proxy.so 컴파일 방법  (0) 2023.09.08
apache mod_unique_id module 추가  (0) 2023.04.20
[PHP] GeoIP 확장(Extension) 모듈 설치  (0) 2017.08.11
Zend Guard Loader 설치  (0) 2017.05.17
APC 확장모듈 설치  (0) 2017.04.26

apache 설정에서 proxy를 사용하기 위해서 mod_proxy 와 관련된 몇가지 so파일들을 컴파일 하는 방법에 대해 정리해 드리겠습니다.

별로 어렵지 않으니 따라하시다 보면 /modules/ 안에 mod_proxy.so파일이 생성된걸 확인하실수 있으실거예요.

apache mod_proxy.so 컴파일 방법

1) /apache/httpd-2.2.34/modules/proxy 해당 경로 이동

2) 아래 4개 컴파일 수행 (apache-2.2.34 설치된곳 경로지정)

/apache/apache-2.2.34/bin/apxs -i -a -c mod_proxy.c proxy_util.c

/apache/apache-2.2.34bin/apxs -i -a -c mod_proxy_http.c proxy_util.c

/apache/apache-2.2.34bin/apxs -i -a -c mod_proxy_connect.c proxy_util.c

/apache/apache-2.2.34/bin/apxs -i -a -c mod_proxy_ajp.c proxy_util.c ajp_header.c ajp_utils.c ajp_link.c ajp_msg.c

3) /apache/apache-2.2.34/modules 경로에 proxy 관련 파일 생성 확인 (4개)

mod_proxy_ajp.so
mod_proxy_connect.so
mod_proxy_http.so
mod_proxy.so

4) httpd.conf 에 삽입

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so

위처럼 하시면 일단 apache 에서 proxy를 사용하기 위핸 최소 조건인 mod_proxy.so파일의 설정이 완료된것입니다.

그럼 열공하세요..^^~

출처 : https://m.blog.naver.com/kletgdgo/90141426279

 1.  mod_unique_id module 추가
    기본적으로 mod_unique_id 모듈을 apache install 시 설치해야되나 빠져있다면
    apache source를 다운받아서 해당 모듈만 복사한다.
   
    # cd /usr/local/src
    # wget http://mirror.apache-kr.org/httpd/httpd-2.2.27.tar.gz
    # tar xvfz httpd-2.2.27.tar.gz
    # cd httpd-2.2.27/modules/metadata
    # /usr/local/apache/bin/apxs -cia mod_unique_id.c
    # /etc/rc.d/init.d/httpd restart (/usr/local/apache/bin/apachectl restart)

2. 컴파일전 설치되어야할 라이브러리들이 다 설치되어 있는지 확인한다.
   https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#Installation_for_Apache
   해당 사이트를 참고

3. 컴파일
   # ./autogen.sh
   #./configure \
    --with-apxs=/usr/local/apache/bin/apxs \
    --with-libxml=/usr \
    --with-apr=/usr/local/apache/bin/apr-1-config \
    --with-apu=/usr/local/apache/bin/apu-1-config
   # make
   # make install

4. https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project 에서 최근 롤셋을 다운
   INSTALL text 파일안 설명대로 설치
   krcert.or.kr 에서 제공하는 룰셋은 오래전 룰셋이라 OWASP에서 제공하는 룰셋으로 셋팅한다.

5. httpd.conf 에 아래 내용 추가

   LoadModule unique_id_module   modules/mod_unique_id.so
   LoadFile  /usr/lib64/libxml2.so
   LoadFile  /usr/lib64/liblua-5.1.so
   LoadModule security2_module    modules/mod_security2.so

    <IfModule security2_module>
       Include conf/crs/modsecurity_crs_10_setup.conf
       Include conf/crs/activated_rules/*.conf
    </IfModule>

6. crs/activated_rules 디렉토리의 modsecurity_crs_10_setup.conf 심볼릭 링크 삭제
   httpd.conf 에 include되는 modsecurity_crs_10_setup.conf 파일을 아래 activated_rules/*.conf 으로 모든 파일을
   불러오는데 modsecurity_crs_10_setup.conf이 2번 불려오게 되서 apache error_log에
   ModSecurity: Found another rule with the same id 에러가 발생하게 된다.
   Include conf/crs/activated_rules/*.conf 만 하던지 심볼릭 링크를 삭제하던지 2번 불려지지 않게 한다.

7. httpd restart

8. www.your-domain.com/?foo=/etc/passwd 해서 apache error_log에 ModSecurity: Access denied.....이런 메세지가 나오면
   제대로 작동하는것이다.

9. 개발서버 IP로 접속이 안되면  modsecurity_crs_21_protocol_anomalies.conf 파일의 98번 라인을 주석처리하여 롤을
   없앤다.
   error_log를 보면 어떤 롤파일의 몇번째 롤 때문에 오류가 나는지 나오므로 그걸보고 하나씩 롤을 수정하면 된다.

출처 : https://kkamagistory.tistory.com/532


PHP 에 GeoIP 를 사용할 경우 확장 모듈을 설치 하는 방법 입니다.

http://pecl.php.net/package/geoip

[root@yongbok ~]# cd /usr/local/src

[root@yongbok ~]# wget http://pecl.php.net/get/geoip-1.0.7.tgz

[root@yongbok ~]# wget http://pecl.php.net/get/geoip-1.1.1.tgz    (php7 이상일 경우) // 1.1.1 버전은 베타이긴 하나 작동에 이상은 없었다.

[root@yongbok ~]# tar xzvf geoip-1.0.7.tgz

[root@yongbok ~]# cd geoip-1.0.7

[root@yongbok ~]# /usr/local/php5/bin/phpize

[root@yongbok ~]# ./configure --with-php-config=/usr/local/php5/bin/php-config --with-geoip=/usr/local

[root@yongbok ~]# make ; make install

Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/

php.ini 파일에 GeoIP 구문 추가

[root@yongbok ~]# vi /usr/local/apache2/conf/php.ini
[GeoIP]
extension_dir=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
extension = geoip.so
geoip.custom_directory=/usr/local/share/GeoIP (GeoIP.dat 파일의 경로 정의, 시스템마다 다를수 있음)

아파치 재시작
[root@yongbok ~]# /usr/local/apache2/bin/apachectl restart

phpinfo 로 확인
[root@yongbok ~]# echo '<?php phpinfo(); ?>'>/var/www/phpinfo.php


[출처] http://cy.cyworld.com/home/37141209/post/4BB719E61B15773CBD468401

[추가] php 에서 GeoIP 사용 샘플 (접속자 IP체크하여 국가코드 출력) // 2023. 1. 12 추가됨

<?php
geoip_setup_custom_directory('/home/your_account/');
$a = $_SERVER['REMOTE_ADDR'];
$country = geoip_country_code_by_name($a);
echo "Your IP : ".$a." [$country]";
?>

[설명] geoip_setup_custom_directory() 함수는 이미 php.ini 에 정의되어 있는데 소스코드에 별도로 정의하는 이유는

php.ini 에 정의된 geoip_setup_custom_directory 의 퍼미션이 other가 읽기권한이 없으면 국가코드가 NULL 로 

출력되는데 퍼미션 변경이 불가한 상황일 때 위 방법 (일반계정 내에 데이터 파일을 업로드 하고 경로 정의) 을

이용하면 문제 없이 국가코드가 출력된다.

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

apache mod_proxy.so 컴파일 방법  (0) 2023.09.08
apache mod_unique_id module 추가  (0) 2023.04.20
Zend Guard Loader 설치  (0) 2017.05.17
APC 확장모듈 설치  (0) 2017.04.26
freetds 확장모듈 설치  (0) 2016.09.27


 Zend Guard Loader 설치

================================================================
PHP 가속 모듈인 Zend Optimizer는 PHP-5.2.x 버전까지만 지원되며,
 PHP-5.3.x 버전부터는 Zend Guard Loader를 설치해야 합니다.

Zend Guard Loader의 설치 방법을 알아 보겠습니다.

1. 소스 다운로드 및 압축 해제
 아래의 링크에서 소스 다운 (Zend 사이트 로그인 필요)
 http://www.zend.com/en/products/guard/downloads

 # tar zxvf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz


2. php 버전 확인 후 소스 폴더에서 버전에 맞는 모듈 파일을 복사
 # /usr/local/php/bin/php -v
 # cp ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/ZendOptimizer.so /usr/local/php/lib/


3. php.ini 파일에 다음 줄을 추가
 # vi /usr/local/php/lib/php.ini
 [Zend]
 zend_extension=/usr/local/php/lib/ZendGuardLoader.so


4. apache restart 후 php –v 및 phpinfo에서 설치 확인

 # /usr/local/apache/bin/apachectl restart
 # /usr/local/php/bin/php –v
 . 
 with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

apache mod_unique_id module 추가  (0) 2023.04.20
[PHP] GeoIP 확장(Extension) 모듈 설치  (0) 2017.08.11
APC 확장모듈 설치  (0) 2017.04.26
freetds 확장모듈 설치  (0) 2016.09.27
mod_mime_magic 설치  (0) 2016.08.01


APC 추가 하기 (php 5.2.6 이랑 apache 2.2.9 입니다.)

1. /home/php/bin/pecl download apc
2. tar -xvzf APC-3.0.19.tgz
3. cd APC-3.0.19
4. /home/php/bin/phpize
4. ./configure --enable-apc-mmap --with-apxs=/home/apache/bin/apxs --with-php-config=/home/php/bin/php-config
5. make
6. make install
    이렇게 하시면 기본적으로 php 의 extension 모듈 위치로 복사 됩니다.
7. 또는 이렇게 하셔도 됩니다. cp ././libs/apc.so /usr/local/lib
    이 부분도 역시 php extension 위치로 복사해서 넣으시면 됩니다.
8. php.ini 수정하기
    extension_dir=설정한위치로적용하세요.
       예) /home/php/lib/php/extensions/no-debug-zts-20060613/apc.so 가 있습니다.
          extension_dir=/home/php/lib/php/extensions
          extension="no-debug-zts-20060613/apc.so" 이렇게 넣으시면 됩니다.
          dir 은..적절히 조절 하시면 됩니다.
    enble_dl=on


    extension="apc.so"
    apc.enabled=1
    apc.shm_segments=1
    apc.shm_size=256
    apc.ttl=7200
    apc.user_ttl=7200
    apc.num_files_hint=1024
    apc.mmap_file_mask=/tmp/apc.XXXXXX
    apc.enable_cli=1
    apc.include_once_override=1

[출처] https://www.leaderstudy.co.kr/bbs/board.php?bo_table=tip&wr_id=122&page=2&page=2

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

[PHP] GeoIP 확장(Extension) 모듈 설치  (0) 2017.08.11
Zend Guard Loader 설치  (0) 2017.05.17
freetds 확장모듈 설치  (0) 2016.09.27
mod_mime_magic 설치  (0) 2016.08.01
oAuth 확장모듈 설치  (0) 2016.03.29


PHP에서 MS-SQL 서버를 연동하기 위한 방법입니다

- PHP의 mssql extension을 컴파일 하기 위해서는 FreeTDS 라이브러리가 필요합니다.
  본문에서는 APM은 이미 설치되어 있는 것으로 가정하고 Freetds는 소스 설치, mssql 모듈은 extension으로 설치 하겠습니다.


(1) FreeTDS 설치

   # wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz

   # tar xvzf freetds-stable.tgz

   # cd freetds-0.91

   # ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --disable-odbc --disable-debug --enable-msdblib

   # make && make install

 

(2) freetds.conf 설정 및 ms-sql 접속 Test

   # vi /usr/local/freetds/etc/freetds.conf

 

- 아래의 항목 추가

   [TestMSSQL]
   host = IP주소
   port = 1433
   tds version = 8.0
   client Charset = UTF-8
  * tds version : 접속 하고자 하는 SQL Server 버젼에 맞게 수정.


(3) MS-SQL 접속 테스트

   # /usr/local/freetds/bin/tsql -H ip주소 -p 1433 -U db계정 -P 비밀번호


(4) mssql 모듈 설치

   # cd /usr/local/src/php-5.2.9/ext/mssql

   # /usr/local/php/bin/phpize

   # ./configure --with-mssql=/usr/local/freetds --with-php-config=/usr/local/php/bin/php-config

   # make

   # cp .libs/mssql.so /PHP Extension 디렉토리

   # vi /usr/local/php/lib/php.ini
     extension=mssql.so <---- 추가

    # apache 재구동


(5) 모듈 설치 확인 - phpinfo의 mssql 항목 확인 및 php -i 옵션으로 확인

   # /usr/local/php/bin/php -i | grep mssql
   mssql
   mssql.allow_persistent => On => On
   mssql.batchsize => 0 => 0
   mssql.charset => no value => no value
   mssql.compatability_mode => Off => Off
   mssql.connect_timeout => 5 => 5
   mssql.datetimeconvert => On => On
   mssql.max_links => Unlimited => Unlimited
   mssql.max_persistent => Unlimited => Unlimited
   mssql.max_procs => Unlimited => Unlimited
   mssql.min_error_severity => 10 => 10
   mssql.min_message_severity => 10 => 10
   mssql.secure_connection => Off => Off
   mssql.textlimit => Server default => Server default
   mssql.textsize => Server default => Server default

   mssql.timeout => 60 => 60

[mssql 접속을 위한 테스트 페이지 샘플]

<?php
 
   putenv("FREETDSCONF=C:\freetds.conf");  // 이 두줄은 빼도 되면 빼고 안되면 넣고.. 알아서..
    putenv("TDSVER=80");


     $link = mssql_connect('dbserver', 'DB아이디', 'DB비밀번호');
     if(!$link) {
        echo'Could not connect';
     }else{
      echo'Successful connection';

     }
     mssql_close($link);
 ?>


출처 : http://faq.hostway.co.kr/Linux_WEB/1261


'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

Zend Guard Loader 설치  (0) 2017.05.17
APC 확장모듈 설치  (0) 2017.04.26
mod_mime_magic 설치  (0) 2016.08.01
oAuth 확장모듈 설치  (0) 2016.03.29
CentOS6 에서 mcrypt 확장모듈 설치시의 방법  (0) 2016.02.26



* Incident

 

웹서버에서는 파일을 인식할 때 mime에 등록된 확장자를 참고하여 문서 형식을 결정하고 불러오는데 mime에 등록된 확장자가 아니고 파일의 내용을 통해 자동으로 문서 형식을 결정하는 기능이 필요할 때가 있다. 예를 들면, 아파치 기반의 어떤 사이트의 경우 이미지 파일이 확장자를 사용하지 않도록 개발하는 경우도 있다. 이때 필요한 것이 mod_mime_magic 모듈이다.

 

 

* Resolution

 

- mod_mime_magic 설치


1. 기존 웹서버와 동일한 버전의 아파치 설치파일을 다운로드 후 압축 해제한다.

[root@mooon]# wget https://archive.apache.org/dist/httpd/httpd-2.2.13.tar.gz

[root@mooon]# tar xvfz httpd-2.2.13.tar.gz

[root@mooon]# cd httpd-2.2.13


2. mod_mime_magic.so 파일을 생성한다.

※ 자동으로 /usr/local/apache/modules/ 에 mod_mime_magic.so 파일이 생성되고 httpd.conf 파일에 관련 정보가 추가된다.

[root@mooon]# /usr/local/apache/bin/apxs -i -a -c /root/pkg/httpd-2.2.13/modules/metadata/mod_mime_magic.c


3. 아파치를 재시작 한다.

[root@mooon]# /etc/rc.d/init.d/apachectl configtest

[root@mooon]# /etc/rc.d/init.d/apachectl restart


※ mod_mime_magic 모듈을 적용한 후에도 파일이 정상적으로 열리지 않는 경우가 있다.

이는 FTP에 데이터 전송유형이 자동일 경우 파일업로드 시 확장자가 없는 경우 텍스트파일로 인식하여 아스키(ASCII)모드로 전송된다.

이렇게 전송되는 경우 원본파일과 동일한 데이터가 업로드되지 않고 변조된 데이터가 업로드 됨으로서 파일이 깨지게 된다.

파일질라에서는 [전송 > 전송 유형 > 바이너리]로 변환 후 확장자가 없는 파일을 업로드하면 해결된다.

[출처] http://www.joshi.co.kr/?mid=board_Szhe52&document_srl=1148&order_type=desc&listStyle=viewer&page=3

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

APC 확장모듈 설치  (0) 2017.04.26
freetds 확장모듈 설치  (0) 2016.09.27
oAuth 확장모듈 설치  (0) 2016.03.29
CentOS6 에서 mcrypt 확장모듈 설치시의 방법  (0) 2016.02.26
PHP zip 확장모듈 설치  (0) 2016.02.26


모듈 직접 다운로드 시  아래 링크에서 다운로드 받을 것.

http://pecl.php.net/package/oauth

[참고] 버전 2.0.0 이상은 php7.0.0 버전 이상을 위한 것이므로 자신의 php 버전이 5.x 대이면 버전 1.2.3 을 다운로드 받을 것.

cd /usr/local/php/bin/
pecl download oauth 를 실행하면 최신버전의 oauth (2.0.1버전)만 다운로드 받아지므로 가급적 위 경로에서 맞는 버전을 직접 받을 것.

tar xvzf oauth-1.2.3.tgz 

(1.2.3 버전을 압축해제하여)

cd oauth-1.2.3

(oauth-1.2.3 디렉토리로 이동)
/usr/local/php/bin/phpize (
phpize 를 실행하여 확장 모듈 추가를 위한 환경을 구성한다)

./configure --with-php-config=/usr/local/php/bin/php-config

(기존 php설치 디렉토리의 php-config를 사용)

make && make install
(컴파일을 실행한다)

설치가 완료 되면 php.ini 파일에 모듈 위치를 절대 경로로 삽입해주면 됩니다.

extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/oauth.so"
(경로는 설치환경에 따라 다를 수 있음)

[참고] make 과정 시 make: *** [oauth.lo] 오류 1 가 발생하면

yum install pcre 실행
yum install pcre-devel 실행

oauth-1.2.3.tgz

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

freetds 확장모듈 설치  (0) 2016.09.27
mod_mime_magic 설치  (0) 2016.08.01
CentOS6 에서 mcrypt 확장모듈 설치시의 방법  (0) 2016.02.26
PHP zip 확장모듈 설치  (0) 2016.02.26
PHP zlib 확장모듈 설치  (0) 2016.02.05


CentOS 6 넘어오면서부터 yum install 에서 libmcrypt libmcrypt-devel 이 지원되지 않는다.

따라서 아래의 방법으로 진행해야하며

1. vi /etc/yum.repos.d/epel.repo

해당 파일에 아래의 내용을 저장한다.


[EPEL]
name=epel
type=rpm-md
baseurl=http://ftp.neowiz.com/fedora-epel/6/x86_64
gpgcheck=1
gpgkey=http://ftp.neowiz.com/fedora-epel/RPM-GPG-KEY-EPEL-6
enabled=1


2. yum clean all

3. yum install libmcrypt libmcrypt-devel

(Cent 5 의 경우 위 과정은 생략)

4. 동일 버전의 php 소스에서


예) php-5.2.17 의 경우


cd php-5.2.17/ext/mcrypt


/usr/local/php/bin/phpize
aclocal

./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

그러면 아래와 같이 mcrypt.so 파일이 해당 경로에 만들어졌다고 나오는데

/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613

php.ini 파일 하위에

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/mcrypt.so

처럼 추가하고 웹서버 재시작하면 된다.

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

mod_mime_magic 설치  (0) 2016.08.01
oAuth 확장모듈 설치  (0) 2016.03.29
PHP zip 확장모듈 설치  (0) 2016.02.26
PHP zlib 확장모듈 설치  (0) 2016.02.05
PHP 수호신(Suhosin) 설치  (0) 2016.01.29