삽질하는플머

우분투에 IRC서버 설치후 닉네임 길이와 동접자 조절.

이런저런잡다구리/LinuxHeaven

심플즈 팁란에 올렸던 글... 갑자기 쓸 일이 생겨 옮겨둠. 

http://simples.kr/28949



얼마전 게임채팅에 써먹어볼까 싶어 우분투에 IRC 서버를 까느라 삽질한 내용이 있어서 함 올려봅니다. 

일단 ircd는 ircu 를 사용하기로 했습니다. 설치는 간단히 이렇게..


$ sudo apt-get install ircd-ircu



문제는 여기서부터인데, 닉네임의 최대값이 12자로 되어있군요. 저는 30자가 필요. 

설정 문서에 나온대로 /etc/ircd/ircd.conf 내에 features 안에 다음라인 삽입해 봤습니다. 


features {

 .....

 "NICKLEN" = "30";

};



하지만 이 설정은 ircd-ircu 의 소스중 ircd_def.h 에 정의된 값을 넘을 수 없습니다. 

여기에는 15로 정의되어있기 때문에 아무리 30자를 때려줘도 넘어가지 않지요. 


패키지로 설치한 ircd-ircu 는 지워버리고 소스를 받아 수정해봅시다. 


일단 컴파일 환경을 만들어주고


$ sudo apt-get install build-essential flex autoconf  bison



소스를 내려받아 압축을 풀어줍니다. 


$ wget http://prdownloads.sourceforge.net/undernet-ircu/ircu2.10.12.12.tar.gz

$ tar xzf ircu2.10.12.12.tar.gz

$ cd ircu2.10.12.12



여기서 ./include 안의 ircd_defs.h 에서 NICK_LEN 값을 30으로 수정해줍니다. (41번째 줄)


#define NICKLEN         30



이제 다음과같이 해 주면 닉네임을 30자로 쓸 수 있는 데몬을 얻을 수 있습니다. 


$ ./configure

$ make all



../bin 에 컴파일된 ircd 실행파일이 들어갑니다. 이제 이놈의 버전을 출력해봅시다. 


$ ./ircd -v 

ircd u2.10.12.12

Event engines: epoll_*() poll()

Compiled for a maximum of 1020 connections.



최대접속자가 1020으로 되어있습니다. 아쉬움이 있지요. 

이 내용은 ./configure 실행시 생성되는 config.h 에 기록되며, 

이 때 사용되는 configure.in 을 살펴보면 다음과 같은 값을 받아오도록 되어있습니다. 


ulimit -Hn



한마디로 시스템에서 열 수 있는 파일갯수를 의미하지요. 

sudo ulimit -n 4096 해주면 이 값이 바뀝니다만 재부팅하면 도로묵이죠. 

예전에는 이 값을 늘려주려면 커널을 새로 컴파일해야 했나본데... 전 리눅스 뉴비라 그런건 모르고...

/etc/security/limits.conf 에 다음항목 추가한 뒤 재부팅해봅시다.  


*               hard    nofile            4096

*               soft    nofile            4096



이제 ircd-ircu 를 재컴파일하면 최대접속자수가 늘어난 것을 볼 수 있습니다. 


마지막으로 닉네임에서 한글사용문제... 원래 irc 규정이 닉네임에서는 한글을 못써먹게 되어있습니다. 

한글 패치된 데몬들은 규격외의 물건들인 셈이죠. 

table_gen.c 를 들여다봅시다. 

116번 줄에보면 NTL_RICNK 의 속성을 설정하는 부분이 보입니다. 


moveMacro(NTL_DIGIT | NTL_ALPHA, NTL_IRCNK);

markString(NTL_IRCNK, "-_`");



숫자, 알파벳, 그리고 " - _ ` " 를 추가해주고 있지요. 따라서 여기에 " + / " 를 추가하면 UTF-7 사용이 가능해집니다.


markString(NTL_IRCNK, "-_`+/");



사실 이것도 "+/" 때문에 규약을 어기는 건 마찬가지네요. ㅠㅠ;;

UTF-8이면 더 좋겠지만 어차피 게임내에서 자체 클라를 제공하기 때문에 일단 이정도로 만족하고 있습니다. 


PHP 컴파일러 HipHop for PHP from facebook

이런저런잡다구리/LinuxHeaven
PHP코드를 C++코드로 변환, g++로 빌드할 수 있게 하는 물건. 
결과물로 libevent 를 사용한 독립 웹서버 실행파일이 떨어진다. 
페이스북에서 쓰이고 있으며 성능 개선이 상당하다고 한다. 
모든 PHP 코드가 다 동작하는 것은 아니겠지만 관심이 무럭무럭!!

일단 홈페이지. 
https://github.com/facebook/hiphop-php/wiki/

한글로 된 소개글
http://enzine.tistory.com/entry/HipHop-for-PHP-%EB%8D%94-%EB%B9%A0%EB%A5%B8-PHP%EB%A5%BC-%EC%9C%84%ED%95%B4

KLDP의 새소식
http://kldp.org/node/112325

먼저 써보신 분의 의견. 
http://code.p-ark.co.kr/167 





레드마인을 위해 설치해 둔 우분투 10.04에 깔아보자. 9.10에 설치하는 참고링크는 여기.
https://github.com/facebook/hiphop-php/wiki/Building-and-Installing-on-Ubuntu-9.10
10.10용은 여기. (명색이 LTS인 10.04만 빠져있네...) 
https://github.com/facebook/hiphop-php/wiki/Building-and-Installing-on-Ubuntu-10.10


먼저 관련프로그램 설치. 

sudo apt-get install git-core cmake g++ libboost-dev libmysqlclient-dev libxml2-dev libmcrypt-dev libicu-dev openssl binutils-dev libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev libonig-dev libpcre3-dev autoconf libtool libcurl4-openssl-dev libboost-system-dev libboost-program-options-dev libboost-filesystem-dev wget memcached libreadline-dev libncurses-dev libbz2-dev libc-client2007e-dev



9.10과 마찬가지로 10.04의 libmemcached 는 버전이 0.31이므로 쓸 수 없다. 0.39 이상이 필요하므로 따로 빌드. 

HipHop 소스 얻기. 

mkdir hiphop
cd hiphop
git clone git://github.com/facebook/hiphop-php.git
cd hiphop-php
export CMAKE_PREFIX_PATH=`/bin/pwd`/../
export HPHP_HOME=`/bin/pwd`
export HPHP_LIB=`/bin/pwd`/bin
git submodule init
git submodule update
cd ..



LIBEVENT 빌드.

wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar -xzvf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
cp ../hiphop-php/src/third_party/libevent-1.4.13.fb-changes.diff .
patch -p1 < libevent-1.4.13.fb-changes.diff
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..



ICU4 빌드

wget http://download.icu-project.org/files/icu4c/4.2.1/icu4c-4_2_1-src.tgz
tar -xvzf icu4c-4_2_1-src.tgz
cd icu/source
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ../../




LIBCURL 빌드. 시스템 시간 잘 맞추지 않으면 ./configure 가 실패한다네. 
중간에 패치가 필요하므로 지정된 버전을 쓸 것. 

wget http://curl.haxx.se/download/curl-7.20.0.tar.gz
tar -xvzf curl-7.20.0.tar.gz
cd curl-7.20.0
cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff .
patch -p1 < libcurl.fb-changes.diff
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..



LIBMEMCACHED 빌드. 현재 최신버전인 0.49로

wget http://launchpad.net/libmemcached/1.0/0.49/+download/libmemcached-0.49.tar.gz
tar -zxvf libmemcached-0.49.tar.gz
cd libmemcached-0.49
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..



HipHop 빌드. 걸어놓고 밥먹고 오자. 

cd hiphop-php
cmake . <- 점 주의!
make



hphp 바이너리가 src/hphp 에 생성된다. 

  



테스트. 사용법은 일단 여기.
https://github.com/facebook/hiphop-php/wiki/Running-HipHop


먼저 hphp를 체크아웃 한 디렉토리로 이동. (내 경우 ~/hiphop/hiphop-php)

export HPHP_HOME=`pwd`
export HPHP_LIB=`pwd`/bin



우분투에서는 추가로 이렇게 해주라는군.

export CMAKE_PREFIX_PATH=`/bin/pwd`/../



예전 GD 가지고 놀 때 코드를 한번 컴파일 해보자. 
적당한 디렉토리에 예제 php 파일 생성. 


ip-test.php
  

<?php
$img_number = imagecreate(140,25);
$backcolor = imagecolorallocate($img_number,255,255,255);
$textcolor = imagecolorallocate($img_number,50,104,28);

imagefill($img_number,0,0,$backcolor);
$number = "IP - $_SERVER[REMOTE_ADDR]";

Imagestring($img_number,3,0,5,$number,$textcolor);

header("Content-type: image/jpeg");
imagejpeg($img_number);
?>



컴파일

$HPHP_HOME/src/hphp/hphp ip-test.php -k 1 --log=3 --force=1 




임시 디렉토리 (내 경우에는 /tmp/hphp_TFludl) 에 실행파일이 생성된다. 
8080포트에서 구동시키는 예. 80포트로 띄우려면 관리자권한(sudo)이 필요하다. 

/tmp/hphp_TFludl/program -m server -p 8080


 
해당 서버에 접속해보자. http://my-ubuntu:8080/ip-test.php
결과는 짜잔~~





GD 테스트를 조금 더 해본다. 
프리타입이 동작하는지도 확인해보자. 윈도의 gulim.ttc 를 /tmp 에 복사해넣자. 

gd-test.php

<?php
// 이미지 생성
$image_test = ImageCreate(200,150);

// 색의 설정
$grey = ImageColorAllocate($image_test,200,200,200);
$blue = ImageColorAllocate($image_test,0,0,255);

imagefill($image_test,10,0,$grey);

// 내장폰트 사용 예
Imagestring($image_test,3, 25,50,"hahaha",$blue);

// 프리타입으로 TTF 폰트 사용 예
Imagefttext($image_test,10, 0, 25, 100, $blue, "/tmp/gulim.ttc", "우하히");

header("Content-type: image/png");
imagepng($image_test);
ImageDestroy($image_test);
?>



HipHop은 컴파일 이전에 이 PHP가 제대로 동작할지를 미리 확인해볼 수 있는 hphpi 를 제공한다. 

$HPHP_HOME/src/hphpi/hphpi  -m server -p 8080



현재 디렉토리를 기준으로 서버가 동작한다. 매번 빌드하는 것도 시간이 걸리는 일이므로, 이걸 쓰면 지금 작성중인 코드가 HipHop에서 잘 동작하는지 확인해 볼 수 있다. 

접속해보면 잘 처리되는데... 



이 PHP 파일에 include, 또는 include_once 를 써서 다른 PHP 유니트를 포함시키면 이미지 출력이 제대로 되지 않는다. 
이미지 출력을 위해 사용되는 header(), imagepng() 등의 함수가 아예 동작하지 않는 듯 하다. 
현 시점에서 GD 관련해서는 단일 유니트만 사용 가능할 듯. 진심으로 아쉬운 부분... 




예전 게임서버는 DB 입출력을 담당하는 에이전트 서버를 통해 각종 정보를 저장해 왔었다. 
이 경우 운영도 귀찮고 뭐 하나 바꾸려 할때 만져야 할 부분이 참 많다. 

때문에 로그 저장 서버는 상대적으로 편한 PHP + xmlrpc 를 써서 만들었었고
나중에 게임서버를 새로 만든다면 DB 입출력은 이 방식으로 하리라 마음먹었었는데...

HipHop을 이용하면 그 부분도 네이티브 바이너리로 굴릴 수 있다는 이야기. 
퍼블리셔에 텍스트로 된 PHP 파일을 그대로 전달해야 하는 찝찝함도 더불어 해결. 

다만 생성된 실행파일의 크기가 약 20메가 정도로 큰 편인데, UPX로 압축하면 7메가 정도로 줄어든다. 

# sudo apt-get install upx-ucl
# upx program


서버에서 실행파일의 크기야 별 의미가 없겠지만... 

언제 시간날 때 VCL4PHP 를 빌드해봐야겠다. 
 



 
2011.8.6. XMLRPC 를 HipHop for PHP로 구동시켜보자. 
 
디렉토리 구성은 다음과 같이.


루트
test.php : 에코함수인 EchoFunc() 가 구현된 서버.
  • lib : php-xmlrpc 의 lib

먼저 제대로 동작하는지 테스트 해보자. 
 

$HPHP_HOME/src/hphpi/hphpi -m server -p 8080


 
접속해보면 자알~~ 동작한다.
이제 빌드해보자.

먼저 웹루트에서 다음과같이 파일목록을 만든다.

find . -name "*.php" > files.list



files.list 의 내용은 다음과 같다. 

./test.php
./lib/compat/var_export.php
./lib/compat/is_scalar.php
./lib/compat/is_callable.php
./lib/compat/is_a.php
./lib/compat/array_key_exists.php
./lib/compat/version_compare.php



test.php 의 내용은 다음과 같다. 

<?php

include("lib/xmlrpc.inc");
include("lib/xmlrpcs.inc");

$xmlrpc_internalencoding="UTF-8";

/****************************************************************
 테스트. 에코함수.
****************************************************************/

$EchoFunc_sig = array(array($xmlrpcString, $xmlrpcString));
$EchoFunc_doc = "에코함수!!";

function EchoFunc($m) {
        // 전달된 XML에서 인자값을 뽑아낸다.
        $s=$m->getParam(0);
        $msg = $s->scalarval();
        return new xmlrpcresp(new xmlrpcval("니가 웹서버에 보낸 메시지: " . $msg, "string"));
}

/****************************************************************
 서버 구동
****************************************************************/
$s = new xmlrpc_server(array(

        "EchoFunc" => array(
                "function" => "EchoFunc",
                "signature" => $EchoFunc_sig,
                "docstring" => $EchoFunc_doc
                ),

        ));
?>

 

힙합으로 빌드. 

$HPHP_HOME/src/hphp/hphp --input-list=files.list -k 1 --log=3 \
--include-path="." --force=1 --cluster-count=50 \
-v "AllDynamic=true" -v "AllVolatile=true"



/tmp/hphp_ahNFdu 폴더가 생성됨.

80포트를 쓰지 않는다면 sudo 권한은 필요없음. 다음과 같이 구동. 
 

/tmp/hphp_ahNFdu/program -m server -p 8080


아주아주아주 잘 동작하네~~

신기한건 test.php 코드내에서 포함시킨 "xmlrpc.inc", "xmlrpcs.inc" 유니트가 files.list 내에 없어도 제대로 동작한다는 것... 
include() 로 포함시킬 때 함께 들어가게 되는건지... 흠...  
 

우분투 서버에서 로컬 네트웍의 호스트명 검색하기

이런저런잡다구리/LinuxHeaven
예전에서는 로컬 네트워크상의 컴퓨터에 이름으로 핑을 때리면 분명히 되었었는데... 새로 설치한 머신에서는 안된다. 
일단 임의로 /etc/hosts 에 박아넣었는데... "ubuntu local network hostname" 로 검색하니 첫번째 글 내에 이런 글이 링크되어있다. 
http://ubuntuforums.org/showthread.php?t=391601&highlight=resolution

대충 윈도는 wins 를 쓰고 우분투는 dns가 기본이라 그렇다는데... 암튼 되게 하려면 etc/nsswitch.conf  파일에 /etc/hosts 설정 외에 wins 값도 읽도록 적어주라는 듯... 

hosts: files wins
 


그 외...
http://ubuntuforums.org/archive/index.php/t-445174.html
 



실제 적용. 

관리자 권한으로 /etc/nsswitch.conf 파일 편집. 

다음 부분을 찾아
 

hosts:          files dns



이렇게 수정

hosts:          files wins dns


이제 예전처럼 로컬네트웍의 다른 컴퓨터를 호스트명으로 검색할 수 있다. 좋구나~~
 


2015. 8. 10. 추가. 

http://www.beginninglinux.com/home/network/ubuntu-and-resolving-hostnames-on-lan



우분투 서버에 Redmine 설치

이런저런잡다구리/LinuxHeaven
우분투에 redmine 설치하기. 
10.04 LTS, LAMP,  OpenSSH 까지 설치한 상태

우분투 설치 마무리

# sudo apt-get update
# sudo apt-get upgrade
# sudo apt-get dist-upgrade



재부팅 후 빌드도구 및 unzip, zlib, openssl 헤더 설치

# sudo apt-get install build-essential unzip zlib1g-dev libssl-dev



덤으로 phpMyAdmin도 설치

# sudo apt-get install phpmyadmin



루비 빌드. 레드마인은 루비 1.8.x 버전을 써야 한다. 

# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.zip 
# unzip ruby-1.8.7-p334.zip

# cd ruby-1.8.7-p334
# ./configure
# make
# sudo make install



설치 확인

# ruby --version
ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-linux]



루비 zlib 설치. (꼭 필요한지는 확인 못함.) 

# sudo apt-get install libzlib-ruby



rubygem 1.3.6 설치. 레드마인은 gem 1.5 이상에서 오류발생함. 업데이트 자제요!

# wget http://rubyforge.org/frs/download.php/69366/rubygems-1.3.6.zip
-->> 막힘. 이걸로. 
#  wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.6.tgz
# unzip rubygems-1.3.6.zip
# cd rubygems-1.3.6/
# sudo ruby ./setup.rb
# gem --version
1.3.6



레일즈를 비롯한 루비 젬 설치. 도큐멘트 없이 깔자. (이 작업은 몇 분 걸림..)

# sudo gem install rails -v 2.3.5 --no-ri --no-rdoc
# sudo gem install rack -v 1.0.1 --no-ri --no-rdoc
# sudo gem install ruby-mysql --no-ri --no-rdoc <== 이거 오류남. 2.9.3-beta 를 설치할 것. 추가 #2 참고.

 

레드마인 작업 디렉토리 만들고 0.9.5 받아 압축 해제. 

# sudo mkdir /ruby-apps
# cd /ruby-apps
# sudo wget http://rubyforge.org/frs/download.php/71421/redmine-0.9.5.tar.gz
# sudo tar -xzvf redmine-0.9.5.tar.gz

# sudo ln -s redmine-0.9.5 redmine



mysql에 redmine 이라는 데이터베이스 생성. 

CREATE DATABASE `redmine` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;



레드마인 설정하기. 

# cd redmine/config/
# cp database.yml.example database.yml



 database.yml 파일 수정

......
production:
  adapter: mysql
  database: redmine
  host: localhost
  username: root <- 여기에 사용자
  password: 1234 <- 여기에 암호
  encoding: utf8
......



mysql.sock 연결해두기. 

# sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock



또는 database.yml 의 adapter 밑에 다음 줄 추가. 

production:
  adapter: mysql
  socket: /var/run/mysqld/mysqld.sock


(참고 : http://hervalicio.us/blog/2007/07/07/no-such-file-or-directory-tmpmysqlsock/)

 
레드마인 설정. 

# cd .. (레드마인 디렉토리로 이동)
# RAILS_ENV=production rake generate_session_store
# RAILS_ENV=production rake db:migrate
# RAILS_ENV=production rake redmine:load_default_data  <== 언어는 ko를 입력한다 
# RAILS_ENV=production rake config/initializers/session_store.rb


 
레드마인 구동

# ruby script/server webrick -e production
( 이 때 -d를 붙여 ruby script/server webrick -d -e production 라고 하면 디태치된다. )
( 데몬구동 스크립트 만들기 귀찮아서 그냥 screen 을 써서 사용할 예정임 )



이제 3000번 포트로 접속해보면 레드마인이 나타남. 초기 로그인은 admin/admin

http://my-ubuntu:3000



형상관리 연동을 위해 subversion, git 설치

# sudo apt-get install subversion git-core




레드마인 설정에서 저장소 인코딩값에 UTF-8,EUC-KR 을 넣어주면 한글주석도 제대로 표시된다. 



플러그인 설정. 먼저 울트라바이올렛 하이라이터. 
http://www.redmine.org/plugins/redmine_ultraviolet

레드마인에 내장된 CodeRay도 있기는 하지만... 파스칼 코드가 별로다. 


먼저 울트라바이올렛을 깔고

sudo apt-get install libonig-dev
sudo gem install ultraviolet



설치는 다음과 같이

script/plugin install git://github.com/epitron/redmine_ultraviolet.git



위 과정을 통해 redmine_ultraviolet 디렉토리가 vendor/plugins/ 로 복사된다. 

레드마인 재구동하면 계정정보에 Ultraviolet Theme 가 나타남. 

근데 도대체 어케 활성화 시키는거야~!!

--->> 저장소의 소스보기가 영향받는다. 





 

추가 #1
NAS에 이미 운용중인 레드마인 DB를 사용하려면?? 일단 NAS의 mysql 을 다른 계정으로 접속할 수 있도록 해준다. 
database.yml 을 적당히 편집, host, username, password 를 NAS의 해당 정보로 변경한다. 

로컬 네트웍의 NAS 이름을 못찾네... 아이피를 고정하기 어려운 상황이라... /etc/hosts 에 적당히 추가. 
 재구동하면 기존 운용중인 정보를 그대로 사용 가능. 

로컬네트워크상의 컴퓨터를 이름으로 검색하는 방법
http://oranke.tistory.com/172 





추가 #2
NAS에서는 잘 동작하는데... 상위 프로젝트에서 작업내역 볼 때 오류가 나오네. 

http://www.redmine.org/issues/5693 참고. mysql 드라이버를 재설정하자. 

# sudo gem uninstall ruby-mysql

# sudo apt-get install libdbd-mysql-ruby1.8

# wget https://github.com/downloads/tmtm/ruby-mysql/ruby-mysql-2.9.3-beta.tar.gz --no-check-certificate
-->> 잘 안되면 이렇게
# curl -O https://github.com/downloads/tmtm/ruby-mysql/ruby-mysql-2.9.3-beta.tar.gz
# tar -xzf ruby-mysql-2.9.3-beta.tar.gz
# cd ruby-mysql-2.9.3-beta/
# sudo ruby setup.rb

 




 
2011.5.25

1.1.3 으로 업그레이드. 
참조 : http://www.redmine.org/projects/redmine/wiki/RedmineUpgrade

먼저 기존 DB의 백업. 

# /usr/bin/mysqldump -u <username> -p<password> <redmine_database> | gzip > /path/to/backup/db/redmine_`date +%y_%m_%d`.gz



1.0 이상의 레드마인은 i18n 0.4.2 가 필요하다. 설치하자. 

# sudo gem install i18n -v 0.4.2



/ruby-apps 로 이동, 최신 버전을 받아 압축 해제. 

# cd /ruby-apps

# sudo wget http://rubyforge.org/frs/download.php/74722/redmine-1.1.3.tar.gz
# sudo tar -xzf redmine-1.1.3.tar.gz
# cd redmine-1.1.3



기존 사용중인 files/ 디렉토리 내용과 database.yml 복사. 

# cp ../redmine/files/* ./files/
# cp ../redmine/config/database.yml ./config/ 



플러그인도 복사. 위에서 설치한 울트라 바이올렛만...

# cp ../redmine/vendor/plugins/redmine_ultraviolet ./vendor/plugins/ -r



레드마인 설정
 

# RAILS_ENV=production rake config/initializers/session_store.rb



위의 명령이 안먹히면 이렇게... 

# RAILS_ENV=production rake generate_session_store



데이터베이스 업그레이드

# RAILS_ENV=production rake db:migrate



플러그인도 깔아줬으니 이것도..

# RAILS_ENV=production rake db:migrate:upgrade_plugin_migrations
# RAILS_ENV=production rake db:migrate_plugins



클린업 후 재구동. 

# rake tmp:cache:clear
# rake tmp:sessions:clear



일단 포트를 변경해 3001 에서 테스트. 

# ruby script/server -e production -p 3001


잘 되는군. 
 
기존 심볼릭 링크 제거하고 새로 만들자. 

# cd ..
# sudo rm redmine
# sudo sudo ln -s redmine-1.1.3 redmine




추가 #3

MySQL 의 Interactive_timeout 문제로 인해 8시간 이상 방치한 레드마인이 더이상 동작하지 않는 문제가 있다. 
하지만 이 값을 늘려주는 것은 그다지 좋지 않은 방법인듯 하다. DB연결이 끊기기 전에 레드마인이 재구동되는 것이 나을 듯. 

레드마인이 올라앉은 WEBrick 서버가 데몬모드로 동작할 때 pgrep 을 써서 이 녀석의 PID를 얻어 정지시키는 방법 

http://www.alecjacobson.com/weblog/?p=28
 

위 내용응 응용, 적절한 스크립트를 작성하고 crontab 으로 돌려주는 편이 좋겠다. 

/ruby-apps/redmine/restart.sh  

#!/bin/sh
# 레드마인 재구동

# 기존 동작중인 레드마인 죽이고
REDMINE=`pgrep ruby`
kill -KILL $REDMINE

# 데몬모드로 재구동
ruby /ruby-apps/redmine/script/server webrick -d -e production

#재구동 로그 남김
echo "Redmine restart at :"  `date` >> /ruby-apps/redmine/restart.log



/ect/crontab 을 관리자 권한으로 수정. 다음 내용을 적어넣는다. 

...

# 토, 일요일 6시간 단위
0 */6   * * 6,7   user     /ruby-apps/redmine/restart.sh > /dev/null 2>&1
# 평일 새벽 5시, 저녁 11 재구동
0  5,23   * * 1-5   user     /ruby-apps/redmine/restart.sh > /dev/null 2>&1
 

좀 무식해 보이기는 하지만... 일단 넘어가자. 





 

추가 #4 

하위 프로젝트를 만들었을 때 일감에 대한 gantt 차트를 출력하면 최상위에서만 제대로 보이는 문제가 보임. 
"redmine gantt subproject" 로 검색. 패치가 있다. 
http://www.redmine.org/issues/6476

다운로드 후 패치 진행

# wget  http://www.redmine.org/attachments/download/5281/gantt_filters.patch
# mv gantt_filters.patch /ruby-apps/redmine
# cd /ruby-apps/redmine 
# patch -p0 < gantt_filters.patch 



패치하면 잘 동작한다. 


 
 

추가 #5
14.04 에서 루비 1.8.7 설치
http://n3rve.com/how-to-install-ruby-1-8-rubygems-on-ubuntu-14-04