FreeBSD9.x / php5.3.x
--enable-fpm 설치시 아래와 같은 에러가 난다! ㅎ
/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c: In function 'fpm_socket_get_listening_queue':
/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c:400: error: 'struct tcp_info' has no member named 'tcpi_sacked'
/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c:405: error: 'struct tcp_info' has no member named 'tcpi_unacked'
/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c:409: error: 'struct tcp_info' has no member named 'tcpi_sacked'
*** [sapi/fpm/fpm/fpm_sockets.lo] Error code 1
아래와 같이 소스를 수정..
/usr/local/php-5.3.9]$ find . -name "fpm_sockets.c"
./sapi/fpm/fpm/fpm_sockets.c
vi ./sapi/fpm/fpm/fpm_sockets.c
tcpi_sacked -> __tcpi_sacked
tcpi_unacked -> __ tcpi_unacked
if (info.tcpi_sacked == 0) {
return -1;
}
if (cur_lq) {
*cur_lq = info.tcpi_unacked;
}
if (max_lq) {
*max_lq = info.tcpi_sacked;
}
아래와 같이 수정
if (info.__tcpi_sacked == 0) {
return -1;
}
if (cur_lq) {
*cur_lq = info.__tcpi_unacked;
}
if (max_lq) {
*max_lq = info.__tcpi_sacked;
}
재컴파일... 잘된다..ㅎㅎ
FreeBSD 9.1 이 릴리즈 되서 패키지 설치중
pkg_add -r 이 아래와 같이 안됨;
Error: Unable to get ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.1-release/Latest/rsync.tbz: File unavailable (e.g., file not found, no access)
pkg_add: unable to fetch 'ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.1-release/Latest/rsync.tbz' by URL
http://www.freebsd.org/news/2012-compromise.html
일전의 보안이슈로 막아 놓은 모양;;
아래와 같이 해결은 가능하다..
c shell 일경우
setenv PACKAGESITE ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-current/Latest/
bash shell 일경우
export PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-current/Latest/
와 같이 환경변수 처리후 가능해졌다.ㅎ
파일다운로드 파일서버겸용 웹서버 가 트래픽 1G로 FULL 서비스하게 되었네요.
웹서버는 nginx
1G FULL서비스상황에서 load는 0.x 대.. ㅎㅎ
1000M 랜카드 대역폭의 한계치 까지와서
서버에 붙어 있는 랜카드2개를 라운드로빈하기로 결정..
FreeBSD의 커널부터 패치 하기 시작!
device lagg
추가후 커널컴파일
vi /boot/loader.conf 에
추가! 후 리부팅
vi /etc/rc.conf 에 랜설정
ifconfig_bce1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto roundrobin laggport bce0 laggport bce1"
ipv4_addrs_lagg0="27.x.x.171/25"
두개의 랜카드가 라운드로빈되면서 분산시작! ㅎㅎ
LAN1 LAN2
분산이 잘되고 있네요.ㅎㅎ
그나저나 nginx가 짱!
nginx에 재미 있는 Addons기능중에 echo 라는 기능이 있다.
nginx단에서 간단하게 특정 코드를 출력할 수 있는 기능이다.
https://github.com/agentzh/echo-nginx-module/tags
echo모듈을 다운받고,
nginx컴파일시 echo모듈의 경로를 아래와 같이 추가한다.
./configure --prefix=/usr/local/nginx --add-module=./echo-nginx-module
컴파일후 nginx.conf 에 아래과 같이 추가한다.
location /hello {
#default_type text/plain; # 옵션
echo "hello, world!";
}
도메인이 abc.com 이라면,
접속시 hello, world! 를 표시해줄것이다.
나같은 경운 crossdomain.xml 을 echo모듈로 사용했다. 로컬하드에 파일이 없어도 웹서버단에서 자동처리될 것이다.
location /crossdomain.xml {
echo "<!DOCTYPE cross-domain-policy SYSTEM \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">";
echo "<cross-domain-policy>";
echo "<allow-access-from domain=\"*\" />";
echo "<allow-http-request-headers-from domain=\"*\" headers=\"*\" />";
echo "</cross-domain-policy>";
}
http://abc.com/crossdomain.xml 하면 자동으로 나올것이다.
참고로 이 파일은 플래쉬파일에서 crossdomain관련 참조하는 파일이다.