레이블이 설정인 게시물을 표시합니다. 모든 게시물 표시
레이블이 설정인 게시물을 표시합니다. 모든 게시물 표시

2010년 8월 25일 수요일

[CentOS 5.4] 설치 후 설정할것들


CentOS 설치 후 설정

  • 한글 설정
  • /etc/sysconfig/i18n 파일에서 다음을 설정 한다.
LANG="ko_KR.UTF-8"
  • 사용하는 터미널에서 "UTF-8"을 사용하도록 설정 한다.
  • PuTTY의 경우 : Window -> Translation 메뉴에서 "Character set translation on received data"를 "UTF-8"로 설정 한다.
  • 아래 명령을 사용하여 인터넷 접속 여부를 확인 한다.
ping -c3 google.com
  • 서버 시간 설정
echo "00 * * * * root /usr/bin/rdate -s time.bora.net" >> /etc/crontab
  • 기본 업데이트
yum -y update kernel
yum -y update kernel-PAE //--- 32 Bits 시스템에서 메모리가 4GB 이상일 경우
  • 가장 빠른 미러 사이트를 연결하는 yum 플러그인 설치
yum -y install yum-fastestmirror

CentOS Upgrade

  • Upgrade to CentOS 5.4 from 5.3
yum clean all
yum update glibc*
yum update yum* rpm* python*
yum clean all
yum update
shutdown -r now

#--- CentOS 버전 확인
lsb_release -a

CentOS Network 설정

VNC Server 설치

VNC (Virtual Network Computing)는 원격으로 Linux의 GUI 화면으로 접속할 수 있도록 한다.

  • VNC Server 설치
#--- CentOS에 root로 로그인 한다.
yum -y install vnc-server
  • vi /etc/sysconfig/vncservers
VNCSERVERS="1:root"    #--- 1번부터 5901 port를 사용 한다.
VNCSERVERARGS[1]="-geometry 1152x864" #--- 추가 옵션 : -nolisten -nohttpd -localhost
  • VNC Server 사용자 password 생성
cd
mkdir .vnc
cd .vnc
vncpasswd
#--- 여기서 암호를 입력 한다.
service vncserver restart
  • 방화벽에서 해당 사용자의 port를 오픈하여야 한다.
#--- /etc/sysconfig/vncservers에 등록된 1번부터 5901 port를 사용 한다.
  • VNC Client에서 접속 시
VNC Viewer로 접속시 "IP:5901"로 접속 한다.
TightVNC Viewer로 접속시 "IP:1"로 접속 한다.
  • 처음 접속이 완료되면 xstartup 파일이 생성된다. 이를 수정하여 예쁜화면을 사용하자.
cd
cd .vnc
vi xstartup
### twm & #--- 이 라인을 주석 처리(삭제) 한다.
gnome-session & #--- 이 라인을 추가 한다.
service vncserver restart
  • 설치 정보
  • 설치 폴더 :
  • 실행 파일 : /usr/bin/
  • 환경 설정 : /etc/sysconfig/vncservers
  • 기동 종료 : /etc/init.d/vncserver start, stop, restart
  • 서비스 확인 :
  • 참고 문헌

주요 SW 설치

CentOS용 프로그램

  • 시스템 라이브러리 설치
yum -y install zlib curl   
yum -y install gcc g++ cpp gcc-c++ compat-gcc-34-g77
yum -y install libxml2 libxml2-devel
yum -y install gd gd-devel
yum -y install freetype freetype-devel
yum -y install libpng libpng-devel
yum -y install libjpeg libjpeg-devel
yum -y install fontconfig fontconfig-devel
yum -y install mhash mhash-devel
yum -y install libmcrypt libmcrypt-devel
yum -y install openssl openssl-devel
yum -y install gmp gmp-devel
yum -y install flex
yum -y install libtermcap-devel ncurses-devel libc-client-devel bzip2-devel
  • 필요한 경우 컴파일러를 설치 한다.
yum -y install gcc gcc-c++ termcap libtermcap libtermcap-devel gdbm-devel

vsftpd 설치

  • vsftpd 설치
yum -y install vsftpd
  • 아래 설치 정보에 정리된 블랙 리스트에서 ftp를 사용할 사용자를 빼준다.
  • 방화벽에서 20, 21 port를 개방 한다.
  • 설치 정보
  • 실행 파일 : /usr/sbin/
  • 환경 파일 : /etc/vsftpd/vsftpd.conf
  • 블랙 리스트 : /etc/vsftpd/ftpusers, /etc/vsftpd/user_list
  • 기동 종료 : /etc/init.d/vsftpd start, stop, restart, status
  • 서비스 확인 : ps -ef | grep vsftpd | grep -v grep

Java 설치


MySQL 설치

PostgreSQL 설치

Apache Http Server 설치

PHP 설치

Tomcat 설치

  • Linux의 심볼 링크를 사용하여 Tomcat의 Root 폴더를 변경 하는 방법
ln -s /var/www/html /usr/share/tomcat5/webapps/ROOT

Apache ANT 설치

yum -y install ant

부팅시 자동 실행 설정

  • ntsysv 명령어를 실행하고 자동 실행할 데몬을 선택 한다.

사용자 가이드

버전 확인

lsb_release -a
cat /etc/issue

SSH 접속 방법

yum 사용법

  • 관련 폴더
/etc/yum.conf
/etc/yum.repos.d/
/etc/yum/
  • 설치 가능한 package 목록 보기
yum list [all]
yum grouplist #--- package 그룹 보기
  • package 설치 및 삭제
yum install httpd          #--- 설치
yum install httpd.i386 #--- 아키텍처를 지정하여 설치
yum update httpd #--- 업데이트
yum remove httpd #--- 삭제

yum groupinstall "그룹명" #--- package 그룹 설치
yum groupupdate "그룹명" #--- package 그룹 업데이트
yum groupremove "그룹명" #--- package 그룹 삭제
  • 설치된 package 목록 보기
yum list installed [httpd]
  • 업데이트할 package 목록 보기 및 업데이트
yum list updates           #--- 목록 보기
yum update -y #--- 업데이트

RPM 사용법

Redhat Package Manager로 레드헷에서 만든 패키지 관리자 이다.

  • RPM 파일명 구조
패키지이름-버전-릴리즈번호.소스여부.시스템.확장자
  • RPM 명령어
  • rpmfind에서 PRM 패키지(~.rpm)를 찾을 수 있다.
rpm -Uvh gcc-2.96-98.i386.rpm  #--- 패키지 설치
rpm -Uvh ftp://ftp.rpmserver.com/gcc-2.96-98.i386.rpm #--- 네트워크로 패키지 설치
rpm -e gcc-2.96-98.i386 #--- 패키지 제거
rpm -qa | grep httpd #--- 패키지 조회
rpm -qi ~.rpm #--- 패키지 상세 정보 조회
rpm -ql gcc-2.96-98.i386 #--- 패키지 설치 경로 조회
  • RPM 옵션
-i       :기본 설치. 이전 버전이 존재하면 설치하지 않음
-U  : 이전 버전이 설치되어 있으면 업그레이드. (-i 보다 권장)
-F  : 이전 버전이 설치되어 있는 경우에만 설치
-v  : 설치 메시지를 보여 줌
-h  : 진행과정을 '#'으로 표시
-e  : 패키지를 제거
-q  : 패키지가 설치되어 있는 지 확인
-qa  : 현재 설치된 모든 패키지 목록을 출력
-qi  : 현재 설치된 패키지의 간략한 정보를 출력
-ql  : 현재 설치된 패키지의 내용(위치)을 출력
-Vf  : 현재 설치된 파일의 검증. 문제가 없으면 '.'으로 표시
-Va  : 한 패키지만 검증
--force  : 충돌 등을 무시하고 무조건 설치
--nodeps : 의존성 문제를 무시하고 설치

관리자 가이드

방화벽 설정

CentOS는 디폴트로 iptables를 방화벽으로 사용 한다.

  • 특정 IP의 서버 접근 차단 방법
iptables -A INPUT -s 61.247.209.81 -j DROP
iptables -A INPUT -s 61.247.209.0/24 -j DROP

KVM

  • 참고 문헌

VirtualBox 설치

RPM 제작

  • RPM 제작을 위한 패키지 설치
yum -y install rpm-build rpm-devel
yum -y install ~.rpm
  • 설정 파일 : /etc/rpmrc, /usr/lib/rpm/rpmc


  • RPM 소스 패키지(~.src.rpm) 다운로드
  • rpmfind에서 원하는 RPM 소스 패키지를 다운로드 한다.
wget ftp://rpmfind.net/linux/fedora/development/source/SRPMS/~.src.rpm


  • RPM 소스 패키지로 RPM 패키지(~.rpm) 만들기
rpmbuild --rebuild --target=i686 ~.src.rpm
rpmbuild --rebuild ~.src.rpm #--- target은 생략 가능


  • RPM 패키지 설치
rpm -Uvh ~.rpm


  • RPM 소스 패키지 내용 보기
mkdir /usr/src/redhat
rpm -ivh ~.src.rpm
  • /usr/src/redhat/SOURCES : 소스와 패치 파일 저장
  • /usr/src/redhat/SPECS  : 스팩 파일 저장


  • RPM 소스 패키지 다시 만들기
cd /usr/src/redhat/SPECS
rpm -ba ~.spec
  • /usr/src/redhat/SRPMS : RPM 소스 패키지가 생성됨
  • /usr/src/redhat/RPMS  : RPM 패키지가 생성됨


  • /usr/src/redhat/ 폴더의 구조
  • BUILD  : rpm에 의해서 빌드가 이루어지는 디렉토리
  • RPMS  : 아키텍처별 RPM 패키지 저장
  • 아키텍처별로 athlon, geode, i386, i486, i586, i686, noarch 하위 폴더가 있음
  • SOURCES : RPM 소스 저장
  • SPECS  : RPM Spec 저장
  • SRPMS  : SRPM 저장

2009년 11월 5일 목요일

PHP 세션 - 인스톨 / 설정

출처 : 수면부족 ( http://breakpoint.tistory.com/131 )


PHP 세션 - 인스톨 / 설정

외부라이브러리 필요없음.

PHP의 세션기능은 디폴트로 유효화 되어있다.  세션 기능을 무효화해서 PHP 를 구축하고 싶으면 configure 에 옵션 --disable-session 를 지정해야한다.  세션 기억영역으로 공유메모리(mm) 를 사용하려면 PHP 의 configure 에 --with-mm[=DIR] 를 지정한다.

Windows 버젼의 PHP 에는 이 확장모듈이 내장되어있다.  함수를 사용하기위해서는 확장모듈을 추가 로드할 필요는 없다.


PHP 세션 - 실행시 설정 (런타임 설정)
php.ini 의 설정에 따라 동작이 바뀐다.

세션 설정 옵션
이름 디폴트 변경가능여부 변경이력
session.save_path "" PHP_INI_ALL  
session.name "PHPSESSID" PHP_INI_ALL  
session.save_handler "files" PHP_INI_ALL  
session.auto_start "0" PHP_INI_ALL  
session.gc_probability "1" PHP_INI_ALL  
session.gc_divisor "100" PHP_INI_ALL PHP 4.3.2 부터
session.gc_maxlifetime "1440" PHP_INI_ALL  
session.serialize_handler "php" PHP_INI_ALL  
session.cookie_lifetime "0" PHP_INI_ALL  
session.cookie_path "/" PHP_INI_ALL  
session.cookie_domain "" PHP_INI_ALL  
session.cookie_secure "" PHP_INI_ALL PHP 4.0.4 부터
session.cookie_httponly "" PHP_INI_ALL PHP 5.2.0 부터
session.use_cookies "1" PHP_INI_ALL  
session.use_only_cookies "1" PHP_INI_ALL PHP 4.3.0 부터
session.referer_check "" PHP_INI_ALL  
session.entropy_file "" PHP_INI_ALL  
session.entropy_length "0" PHP_INI_ALL  
session.cache_limiter "nocache" PHP_INI_ALL  
session.cache_expire "180" PHP_INI_ALL  
session.use_trans_sid "0" PHP_INI_ALL PHP_INI_ALL 은  PHP <= 4.2.3 , PHP_INI_PERDIR 은 PHP < 5 부터.
PHP 4.0.3 부터
session.bug_compat_42 "1" PHP_INI_ALL PHP 4.3.0 부터. PHP 6.0.0 에서 삭제
session.bug_compat_warn "1" PHP_INI_ALL PHP 4.3.0 부터.
PHP 6.0.0 에서 삭제
session.hash_function "0" PHP_INI_ALL PHP 5.0.0 부터
session.hash_bits_per_character "4" PHP_INI_ALL PHP 5.0.0 부터
url_rewriter.tags "a=href,area=href,
frame=src,form=,fieldset="
PHP_INI_ALL PHP 4.0.4 부터

PHP_INI_*  정수의 설명 및 정의에 대해서는 php.ini 디렉티브 를 참조.

세션 관리 시스템은 php.ini파일에 기술 가능한 많은 설정옵션을 지원한다.

session.save_handler string

session.save_handler  는  세션에 관련되는 데이터의 보존 및 값을 구할때 사용하는 핸들러를 정의한다.  디폴트는 files  . 각 확장모듈에서 독자 save_handler 를 사용할 수 있다.  인스톨 환경단위에서 등록되어 있는 핸들러를 구하려면 phpinfo() 를 사용. session_set_save_handler() 참조


session.save_path string

session.save_path 는 보존 핸들러에 넘겨주는 파라미터를 정의. 디폴트의 파일 핸들러를 선택한 경우 파일이 작성되는 곳의 패스가 넘겨진다.  session_save_path() 참조

옵션의 파라미터로서 N(수치)를 지정할 수 있다. 세션파일을 분산해서 보존할때 디렉토리 계층레벨을 결정한다. 예를들어  '5;/tmp' /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If  라는 위치에 세션파일을 생성한다.  N 을 사용하려면 관련 디렉토리가 사전에 작성되어 있어야 한다.
이를 위해 ext/session 에  mod_files.sh 라는 스크립트 파일이 존재한다.  또한 0 이상의 N 이 지정되어 있는 경우에는 자동 가비지콜렉션이 작동하지않는 사실에 주의할것. 자세한 내용은 php.ini 을 볼것.
또한 N 을 지정하는 경우 session.save_path 를  "quotes" 로 둘러싸야한다.  왜냐하면 구분자(;) 는  php.ini  에서는 코멘트로 이용되고 있기때문이다. 

경고

이 설정을 /tmp (디폴트) 처럼 어디에서도 읽어들일수 있는 디렉토리하고 있는 경우 , 서버상의 다른 유저가 이 디렉토리의 파일파일 리스트를 읽어들일 수 있기에 세션을 하이잭할 수 있다. 

주의: PHP 4.3.6 이전에서는 Windows 유저가 PHP 의 session 함수를 사용하기위해서는 이 변수를 변경해야한다. c:/temp 같이 유효한 패스를 지정할 것.

session.name string

session.name 은 세션명을 지정하여 쿠키명으로서 사용된다. 알파벳 문자만 지정해야한다. 디폴트는 PHPSESSID  이다.  session_name() 참조 


session.auto_start
boolean

session.auto_start
는 리퀘스트를 개시할때 세션모듈이 세션을 자동적으로 개시할지 여부를 지정한다.  디폴트는 0 (무효).


session.serialize_handler
string

session.serialize_handler
는  시리얼라이즈 또는 시리얼라이즈된 데이터를 복원하기위해 사용되는 핸들러의 이름을 지정한다.  현재 ( php 또는 php_binary 라는 이름의 ) PHP 내부 포맷 및 (wddx 라는 이름의 ) WDDX 가 서포트되고 있다. WDDX 는 PHP 가 WDDX 서포트 를 유효화 하여 컴파일 되어 있는 경우에만 사용가능하다.  디폴트는 php 


session.gc_probability
integer

session.gc_probability
session.gc_divisor 의 조합으로  gc (가비지콜렉션)루틴의 기동을 제어한다.  디폴트는 1 .   session.gc_divisor 참조



session.gc_divisor
integer

session.gc_divisor
session.gc_probability 의 조합으로 모든 세션의 초기화과정에서 gc(가비지콜렉션 )프로세스도 기동할 확률을 제어한다. 확률은 gc_probability/gc_divisor 으로 계산된다.  예를 들어 1/100 은 각 리퀘스트마다 1% 의 확률로 GC 프로세스가 기동한다. session.gc_divisor 의 디폴트 값은 100 이다. 


session.gc_maxlifetime
integer

session.gc_maxlifetime
은  데이터가 '쓰레기' 로 여겨져 소거될때까지의 초수를 지정한다.  가비지 콜렉션 (쓰레기의 수집) 은 세션개시할때 일어남.

주의 : 다른 값을 session.gc_maxlifetime 에 지정하고 있는 또 다른 스크립트가 세션데이터의 보존장소를 공유하고 있는 경우 , 가장 작은 설정치에 도달한 시점에서 데이터가 소거된다.  이런 경우에는 서로 session.save_path 를 사용한다.

주의 :  디폴트의 파일을 베이스로 세션핸들러를 사용하고 있는 경우 사용하는 파일시스템은 억세스 시간(atime) 을 기록할 수 있어야한다. Windows FAT 는 이게 불가능하기에  FAT 파일 시스템 또는 atime 의 기록이 불가능한 다른 파일 시스템에서 문제가 발생한경우 세션의 가비지콜렉션처리를 위해 다른 방법을 준비해야한다.
PHP4.2.3 이후 atime 대신에 mtime(갱신시간)이 사용된다. atime 를 사용할 수 없는 파일시스템의 문제가 사라짐.

session.referer_check string

session.referer_check
  에는 HTTP Referer 체크를 위한 문자열을 지정한다. Referer 가 클라이언트에 의해 송신되고 지정한 문자열이 없는 경우 세션 ID 는 무효화됨. 디폴트는 빈 문자열.


session.entropy_file
string

session.entropy_file
는 세션ID를 작성할때의 추가 엔트로피 소스 로 사용되는 외부 리소스에의 패스를 지정한다.  예를 들어 많은 UNIX 에서 이용가능한 /dev/random 또는 /dev/urandom 가 있다. 


session.entropy_length
integer

session.entropy_length
는 바로 위에서 지정한 파일로부터 읽어들이는 바이트 수를 지정한다.  디폴트는 0 (무효)


session.use_cookies
boolean

session.use_cookies
에 의해 클라이언트축에 세션ID 를 보존 할때 쿠키를 사용할지 여부를 지정한다.  디폴트는 1 (유효)


session.use_only_cookies
boolean

session.use_only_cookies
는 이 모듈이 클라이언트 쪽에 세션ID 를 보존할때 Cookie 을 사용하도록 지정한다. 이 설정을 유효화 하여 세션 ID 를 URL 에 붙여서 하는 공격을 막을 수 있다. 이 설정은 PHP 4.3.0 에서 추가되었다. PHP 6.0 이후부터 디폴트가 1 (유효) 이 됨.


session.cookie_lifetime
integer

session.cookie_lifetime
은  브라우저에게 송신하는 쿠키의 유효기간을 초단위로 지정한다. 0을 지정하면  브라우저를 닫을때까지라는 의미.  디폴트는 0 .  session_get_cookie_params()session_set_cookie_params() 참조 

주의 : 유효기간의 타임스탬프는 서버의 시각을 기본으로 해서 정해진다.


session.cookie_path
string

session.cookie_path
에 의해 session_cookie 로 설정되는 패스를 지정한다.  디폴트는 / session_get_cookie_params() 및 session_set_cookie_params() 도 참조.


session.cookie_domain
string

session.cookie_domain
에 의해  session_cookie 에서 지정하는 도메인을 지정한다. 디폴트는 지정되지않음. 이 경우는 쿠키의 사양에 따라 쿠키를 작성한 서버의 호스트명이 지정된다.  session_get_cookie_params()session_set_cookie_params() 도 참조 


session.cookie_secure
boolean

session.cookie_secure
는 시큐어한 접속을 통해서만 쿠키를 송신할지여부를 지정. 디폴트는 off
이 설정은 PHP 4.0.4 에서 추가됨.
 session_get_cookie_params()및 session_set_cookie_params() 참조


session.cookie_httponly
boolean

쿠키를 HTTP 로만 억세스가능하도록 설정. 즉 JavaScript 같은 스크립트 언어에서는 억세스가 불가능해짐 . 이 설정을 사용하면 XSS 공격에 의한 ID 도난의 위험성이 줄어든다.  ( 하지만 모든 브라우저가 이 설정을 지원하고 있지는 않다. )


session.cache_limiter
string

session.cache_limiter
에 의한  세션 페이지의 캐쉬제어 방법(none / nocache / private / private_no_expire / public) 을 지정. 디폴트는 nocache
session_cache_limiter() 참조


session.cache_expire
integer

session.cache_expire
에 의해 캐쉬된 세션페이지의 유효기간을 분단위로 지정 이 옵션은  nocache 리미터에 에서는 영향을 받지 않는다 . 디폴트는 180
session_cache_expire()도 참조


session.use_trans_sid
boolean

session.use_trans_sid
는 투과적 세션 ID 를 부가할지 여부를 지정. 디폴트는 0(무효)

주의 : PHP 4.1.2 이전 버젼에서 이 옵션은  --enable-trans-sid  로 컴파일하여 유효화하였다.  PHP 4.2.0 이후부터 trans-sid 기능은 항상 컴파일 된다. URL 를 기본으로 한 세션 관리는 쿠키를 기본으로한 세션관리보다 세큐리터 리스크가 커진다.  예를 들어 유저가 email 로 친구에게 액티브한 세션ID 를 포함한 URL 를 보낼 수도 있고, 유저는 자신의 북마크에 세션 ID 를 포함한 URL를 보존하여 항상 같은 ID 로 사용하여 사이트에 억세스할 수도 있다. 

session.bug_compat_42 boolean

PHP 버젼이 4.2.3 및 그 이전에는 예를들어 register_globals 가 무효한 경우에도 글로벌스코프에서 세션변수의 초기화를 허용하는 문서화되어 있지 않은 특징/버그가 있다.  이 기능을 사용하고 있는 경우 session.bug_compat_warn 도 유효로 하고있는 경우 PHP 4.3.0 및 그 이후버젼에서는 경고가 생긴다.  이 특징/ 버그는 이 디렉티브를 무효로 하여 막을 수 있다. 


session.bug_compat_warn
boolean

PHP 버젼이 4.2.3 및 그 이전에는 예를들어 register_globals 가 무효한 경우에도 글로벌스코프에서 세션변수의 초기화를 허용하는 문서화되어 있지 않은 특징/버그가 있다.   이 기능을  session.bug_compat_42  와  session.bug_compat_warn  를 유효화하여 사용하고 있는 경우  PHP 4.3.0  및 그 이후버젼에서 경고가 발생한다. 


session.hash_function
mixed

session.hash_function
에 의해 세션 ID 를 생성하기위해 사용되는 해쉬 알고리즘을 지정할 수 있다. '0' 은 MD5 (128 비트) 로 , '1' 은 SHA-1 (160 비트) 를 의미.

PHP 6.0.0 이후부터는 hash 확장모듈 의 임의의 알고리즘이  (이 확장모듈이 사용가능한 경우) 지정할 수 있도록됨. 예를 들어 sha512  나  whirlpool 등등... 지원되는 알고리즘들은 hash_algos() 함수로 구할 수 있다. 

주의 : 이 디렉티브는 PHP 5  에서 도입됨



session.hash_bits_per_character
integer

session.hash_bits_per_character
로 바이너리 해쉬데이터를 가독 데이터로 변환할 때 각각의 문자에 몇비트를 스토어 할지를 정의할 수 있다.  지정가능한 값은 '4' (0-9, a-f) ,'5' (0-9, a-v) 그리고 '6' (0-9, a-z, A-Z, "-", ",") 이다.

주의 : 이 디렉티브는  PHP 5 에서 도입됨.



url_rewriter.tags
string

url_rewriter.tags
는 투과적 세션 ID 의 부가기능이 유효화 되어있을 경우 세션 ID를 포함하기 위해 바뀌게 되는 HTML 태그를 지정할 수 있다.  디폴트는  a=href , area=href , frame=src , input=src , form=fakeentry , fieldset=  이다. 

주의 : HTML/XHTML strict 에 맞추고 싶은 경우에는 form 엔트리를 삭제하고 form 필드의 전후에 <fieldset> 태그를 사용할 것.

track_vars register_globals 설정은 세션변수의 보존및 회복 방법에 영향을 준다. 

주의 : PHP 4.0.3 이후 track_vars 는 항상 on 


원문링크 :
http://www.php.net/manual/en/session.setup.php
http://www.php.net/manual/en/session.installation.php
http://www.php.net/manual/en/session.configuration.php