세이박스

Apache httpd.conf 에서 서브 도메인 redirect시 RewriteRule 적용

서버,보안

서브 도메인을 특정 도메인으로 redirect 할 경우 페이지를 찾을수 없는 경우가 발생하곤 하는데 이를 경우 방문자를 잃을수 있습니다.

예를들어 http://www.saybox.net 도메인으로 서비스를 하다가 어느날 http://www.saybox.co.kr 도메인으로 서비스를 이용하게 되어서
redirect / http://www.saybox.co.kr
처럼 redirect 할 경우 발생할 수 있는 문제점이 있습니다.

회원이 즐겨찾기 해둔 URL이 만약 http://www.saybox.co.kr/index.php 였다면 redirect에서 처리를 할 수 없게 됩니다.
그래서 뒤에 어떠한 URL 파라미터가 붙더라도 redirect 되도록 할려면 여러가지 방법이 있는데 그중 한가지가 RewriteEngine을 이용한 방법입니다.

일단, RewriteEngine을 On 해주시고, RewriteRule에 /.* 라고 적습니다.
즉, 도메인 / 뒤에 붙는 .* 모든 내용을 지정한 URL로 이동 시켜라 그런 내용입니다

<VirtualHost *:80>
..... 생략 ...
RewriteEngine On
RewriteRule /.* http://www.saybox.co.kr
</VirtualHost>


 

리눅스 서버 apache php 오류 Cannot load /usr/local/apache/libexec/libphp4.so into server: /usr/local/apache/libexec/libphp4.so: cannot restore segment prot after reloc: Permission denied

서버,보안

아파치 서버에 PHP를 이용시 아래와 같은 오류가 발생시 :

[root@ ~]# /usr/local/apache/bin/apachectl restart
/usr/local/apache/bin/apachectl restart: httpd not running, trying to start
Syntax error on line 56 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/libexec/libphp4.so into server: /usr/local/apache/libexec/libphp4.so: cannot restore segment prot after reloc: Permission denied
/usr/local/apache/bin/apachectl restart: httpd could not be started

해결 방법 :

[root@ ~]# chcon -t texrel_shlib_t /usr/local/apache/libexec/libphp4.so

위 명령어 한번 실행 해 주고나서 apache 다시 시작 해 보세요!
간단히 해결 되죠!

리눅스 sulinux 2.0 + APM 설치후 아파치 실행시 아파치 오류 해결

서버,보안
리눅스 sulinux 2.0을 설치후 APM을 겨우 설치를 마치고 apache를 실행을 했더니 아래와 같은 오류가 발생한다.

# /usr/local/apache/bin/apachectl restart
httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

이와 같은 오류는 httpd.conf 파일 내용중 아래 ServerName 이라는 부분이 주석(#) 처리 되어 있는데 해당 부분에 주석을 제거하고 도메인 또는 서버의 IP를 입력해 주시면 됩니다.

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work.  See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
#ServerName exam.defaultdoman....:80

ServerName 127.0.0.1:80

잘 모르겠으면 위처럼 127.0.0.1:80 이라고 하셔도 됨.

리눅스 sulinux 2.0 설치후 Apache make시 오류 발생 처리

서버,보안

IBM 345 서버에 페도라 10을 설치할려고 하니 Raid 카드 인식이 되지 않아 결국 sulinux 2.0 을 설치 하였다.
역시 IBM에서 지원하는 OS라 그런지 쉽게 Raid카드가 인식되어 설치 성공하였다.
문제는 mysql 설치 후 apache를 설치 하는 과정중 make시에 다음과 같은 오류가 나타났다.

sockopt.c: In function 'apr_socket_opt_set':
sockopt.c:216: error: 'SCTP_NODELAY' undeclared (first use in this function)
sockopt.c:216: error: (Each undeclared identifier is reported only once
sockopt.c:216: error: for each function it appears in.)
make[4]: *** [sockopt.lo] 오류 1
make[4]: Leaving directory `/usr/local/src/httpd-2.0.49/srclib/apr/network_io/unix'
make[3]: *** [all-recursive] 오류 1
make[3]: Leaving directory `/usr/local/src/httpd-2.0.49/srclib/apr/network_io/unix'
make[2]: *** [all-recursive] 오류 1
make[2]: Leaving directory `/usr/local/src/httpd-2.0.49/srclib/apr'
make[1]: *** [all-recursive] 오류 1
make[1]: Leaving directory `/usr/local/src/httpd-2.0.49/srclib'
make: *** [all-recursive] 오류 1

위와 같은 오류가 발생시 lksctp-tools-devel 을 yum 으로 손쉽게 설치를 하고 나면 이후엔 오류가 발생하지 않았었다. 하지만, 이상하게도 아래와 같은 오류가 나타났다.
페도라10과 sulinux 2.0에서 yum 설치시 요청하는 업데이트 서버가 틀린가 보다.

# yum install lksctp-tools-devel
Setting up Install Process
Parsing package install arguments
Requested dep: lksctp-tools-devel is provided by installed package
Nothing to do

그래서 rpm을 직접 받아서 설치후 make 성공 하였다.

lksctp-tools-devel 다운로드 받는 곳 :
http://sourceforge.net/projects/lksctp/files/

여기서 자신의 os에 해당하는 파일 다운로드
저의 경우 lksctp-tools-devel-1.0.10-1.i386.rpm 로 다운 받았습니다.
http://sourceforge.net/projects/lksctp/files/lksctp/lksctp-tools-1.0.10/lksctp-tools-devel-1.0.10-1.i386.rpm/download

다운로드 페이지에 광고가 있는데 잘 찾아 보시면 하늘색으로 된 "direct link" 라는 링크가 있을꺼에요 그걸 클릭하시면 됩니다.
또는 서버에서 해당 링크를 wget으로 받으셔도 됩니다.

wget http://downloads.sourceforge.net/project/lksctp/lksctp/lksctp-tools-1.0.10/lksctp-tools-devel-1.0.10-1.i386.rpm?use_mirror=jaist

* rpm 설치
rpm -Uvh lksctp-tools-devel-1.0.10-1.i386.rpm



그리고 기존에 설치 하셨던 apache는 삭제 하시고 원소스를 다시 압축 푸셔서 처음부터 다시 configure > make 진행 하세요!

세이박스에서는 제가 접한 오류들을 해결하는 과정을 매일 기록하고 있습니다.
전문적인 답변은 아닐지라도 분명 어떤분께는 도움일 자료가 될거라 생각합니다.

해당글은 세이박스에서 작성한 글이므로 퍼가실땐 꼭 출처를 남겨 주세요! ^^ ㅋㅋ

리눅스 페도라 10 버전에서 아파치 Httpd-2.0.49 설치 하기

서버,보안

아파치를 이미 설치 해보신 분이 설치하는 것으로 생각하며 디테일한 설명은 생략했으니 참고하셔서 활용 하시기 바랍니다.
아파치는 PHP보다 먼저 설치 되어야 하며 한 서버에 MySQL도 같이 설치 하신다면 아파치 보다 MySQL이 먼저 설치 되어야 합니다.
설치순서 : MySQL > Apache > PHP

1. 아파치 설치전 yum 으로 필요한 라이브러리 설치
yum install lksctp-tools-devel


2. 다운로드 후 압축풀기
wget http://ftp.superuser.co.kr/pub/apache/httpd-2.0.49.tar.gz
tar xvzf httpd-2.0.49.tar.gz
cd httpd-2.0.49

* 위 url로 다운로드 되지 않을 경우 아래 파일을 직접 받으셔도 됩니다.



3. 소스파일 일부 수정
vi server/mpm/prefork/prefork.c
수정전 : #define DEFAULT_SERVER_LIMIT 256
수정후 : #define DEFAULT_SERVER_LIMIT 4096

vi server/mpm/worker/worker.c
수정전 : #define DEFAULT_SERVER_LIMT 16
수정후 : #define DEFAULT_THREAD_LIMT 256


4. 환경설정
./configure --enable-so --prefix=/usr/local/apache
make
make install


5. 아파치를 어디에서나 실행할 수 있게 환경변수를 등록
PATH=$PATH:/usr/local/apache/bin


* 아파치 실행시 libphp5.so error 발생시
cd /usr/local/apache2/modules
restorecon -v libphp5.so
chcon -t texrel_shlib_t libphp5.so


* 아파치 설치시 make 오류
sockopt.c: In function 'apr_socket_opt_set':
sockopt.c:216: error: 'SCTP_NODELAY' undeclared (first use in this function)
sockopt.c:216: error: (Each undeclared identifier is reported only once
sockopt.c:216: error: for each function it appears in.)
make[4]: *** [sockopt.lo] 오류 1
make[4]: Leaving directory `/usr/local/src/httpd-2.0.49/srclib/apr/network_io/unix'
make[3]: *** [all-recursive] 오류 1
make[3]: Leaving directory `/usr/local/src/httpd-2.0.49/srclib/apr/network_io/unix'
make[2]: *** [all-recursive] 오류 1
make[2]: Leaving directory `/usr/local/src/httpd-2.0.49/srclib/apr'
make[1]: *** [all-recursive] 오류 1
make[1]: Leaving directory `/usr/local/src/httpd-2.0.49/srclib'
make: *** [all-recursive] 오류 1

yum install lksctp-tools-devel
(설치전 미리 먼저 설치 해두는게 좋음)


위 내용은 세이박스에서 작성한 내용으로 퍼가실때에는 반드시 출처를 남겨 주세요!

아파치 데몬 감시 스크립트

서버,보안
Apache 데몬 모니터링을 위한 스크립트
 
아파치 서비스를 운영하다 보면 접속자가 너무 많거나 이상 증상으로 데몬이 죽어 버리는 경우 상시 모니터링 하지 않는 이상 관리자가 확인 하기 전까지 서버는 웹 서비스를 멈추어 버린체 방치하게 된다. 그래서 적어도 한시간 이내에 한번은 데몬이 죽은는지 체크해서 다시 살리는 시스템을 생각하게 된다.
 
# 적당한 위치에 스크립트 파일 만들기
cd /usr/local/apache/bin
vi httpd_check.sh
#/bin/sh
DAEMON="httpd"
COUNT=$(ps acx | grep -c $DAEMON)
if [ "$COUNT" -gt "0" ]; then
   /usr/local/apache/bin/apachectl restart
else
   /usr/local/apache/bin/apachectl start
fi
 
# 스크립트 파일 실행 권환 주기
chmod +x httpd_check.sh
 
# 매 시간마다 위 스크립트 실행되도록 crontab 적용
crontab -e
00 * * * * /user/local/apache/bin/httpd_check.sh