Pages

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

2/04/2014

Rsync(synchronizes files and directories)

서버간의 데이터 동기화나 백업을 해야할 경우는 종종 생긴다.
rsync(Remote Sync)를 이용하면 간단한 설정으로 쉽게 동기화 시킬 수 있다.

rsync는 xinetd를 이용하기 때문에 rsync와 xinetd가 설치되어있어야한다.

yum install rsync
yum install xinetd
rsync는 ssh를 사용할수 있고 873포트를 이용 할 수있다.
873포트가 열려 있지 않다면 열어주자.
$telnet localhost 873
Trying ::1...
Connected to localhost.
Escape character is '^]'.
@RSYNCD: 30.0

#didn't open port 873
$vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT

/etc/init.d/iptables restart
rysync를 사용할 수 있게 활성화 시킨다.
$vi /etc/xinetd.d/rsync

#disable = yes -> disable = no
service rsync
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}
rsync모듈을 등록하자.
$vi /etc/rsyncd.conf

#모듈 명
[testr]
#백업 경로
path = /mnt/testdir
#코멘트
comment = testr
#user
uid = root
gid = root
#위 path를 루트로 사용
use chroot = yes
#일기 전용
read only = yes
#허용 ip
hosts allow = 10.24.132.164
#허용커넥션갯수
max connections = 3
#타임아웃
timeout = 600


#restart xinetd
$service xinetd restart
이제 백업서버에서 rsync를 이용해 file을 가져오자.
rsync (option) user@127.0.0.1::module /path
$rsync -avz root@12.34.56.78::testr  /data/backup

#use ssh
$rsync -avz -e ssh root@12.34.56.78:/mnt/testdir  /data/backup
끝~

rsync option들은~ 이러하다.
-a : archice mode ( 심볼릭 링크, 속성, 퍼미션, 소유권 등 보곤)
-v : verbose mode (자세한 정보 출력)
-z : compress (전송시 압축)
-r : 하위 디렉토리 포함
-u : --update update only (don't overwrite newer files)
-e ssh : ssh를 이용한 rsync 동기화
--stats : 결과보고
--delete : 원본 서버에 없는 파일은 백업 서버에서 삭제
--progress : rsync 진행 상항 보기
--exclude : 제외할 파일 지정
--bwlimit : 대역폭(복사속도) 제어
--max-size : 특정 크기 이상 파일 제외
--min-size : 특정 크기 이하 파일 제외

2/03/2014

Enable ssh login without password(공개키 인증)

linux를 사용하다보면면 공개키인증으로 패스워드없이 로그인해야될때가 있다.(혹은 그냥하고싶을때도 있다..콜록)
그러나 우리는 망각의 동물 항상 까먹는다....
정리해 놓자...^^

centos에서 start@12.12.12.12에서 destination@34.34.34.34로 인증없이 접속한다고 가정하겠다.
공개키 인증은 사설키를 가지고 배포한 공개키로 조합하여 인증을 한다.
공개키와 사설키를 만들자.

$ssh start@12.12.12.12
start@12.12.12.12's password:
Last login: Mon Feb  3 09:47:08 2014 from 111.223.54.49
#if ~/.ssh doesn't exist
#you should make '.ssh' directory.(mkdir ~/.ssh)
$cd ~/.ssh/
$ssh-keygen -t rsa

#if you want a defualt value, push enter!!
Generating public/private rsa key pair.
Enter file in which to save the key (/home/start/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/start/.ssh/id_rsa.
Your public key has been saved in /home/start/.ssh/id_rsa.pub.
The key fingerprint is:
60:20:69:d4:64:8a:29:3a:1b:3d:d8:1d:0e:7b:59:7e silapps@e297d92a-7cf3-40be-8085-f344091a98eb
The key's randomart image is:
+--[ RSA 2048]----+
| .o++            |
| oo+..           |
|+.o . +          |
|o+ = * .         |
|= = = . E        |
| + o   .         |
|.                |
|                 |
|                 |
+-----------------+
공개키와 사설키가 생성되었다. 이제 공개키를 destination에 배포하자.

destination서버에도 .shh 디렉토리가 없다면 생성해주자.
$ssh destination@34.34.34.34 mkdir -p .ssh
$cat ~/.ssh/id_rsa.pub | ssh destination@34.34.34.34 'cat >> .ssh/authorized_keys'
destination에 공개키인증으로 접속 할 수 있도록 설정해주자.
$ssh destination@34.34.34.34
$sudo vi /etc/ssh/sshd_config
# 주석을 풀어준다.
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys

$sudo service sshd restart
#권한 설정
$chmod 700 ~/.ssh
$chmod 600 ~/.ssh/authorized_keys
끄읕~ 테스트해보자.
$ssh start@12.12.12.12
$ssh destination@34.34.34.34
Last login: Mon Feb  3 16:46:54 2014 from 12.12.12.12
$
성공~

1/27/2014

Disable Root SSH Login on Linux

root계정 로그인을 막아야 해킹의 위험에서 조금 벗어날 수 있다.
자주하는 작업인데도 맨날 생각이 나지 않는다.콜록~
외부에서 루트계정으로 바로 로그인하는 것을 막아보자.

root계정을 막기전에 root대신 로그인할 수있는 유저를 추가하는 것을 잊지말자.

$useradd userid
$passwd userid

$vi /etc/ssh/sshd_config

sshd_config에서 PermitRootLogin 옵션을 no로 바꾼다.

#PermitRootLogin yes
PermitRootLogin no

sshd를 재시작한다.

service sshd restart

9/27/2013

install redis on centos

cache...저도 참 좋아하는데요...콜록 ㅋㅋㅋ 사실 redis는 cache가 아니다...DB다. 난 근데 cache로 사용한다. redis는 in memory db로 memcache와 자주 비교된다.cache와 비슷한 속도를 가졌으면서 더 많은 기능을 제공한다. 캐시와는 다르게 disk에 저장 할 수도 있고 문자열, Set, Sorted Set, Hash, List등의 다양한 Data Type을 지원한다. 이미 많은 프로젝트에서 크게 기여 하고 있는 검증된!!! 환상적 오픈소스이다..콜록

그래서 오늘은 위대한 redis를 위해 redis설치를 적어 놓겠다!!!ㅎㅎ OS는 내가 좋아하는 centos^^

일단 다운받고 설치 하자. http://redis.io/
redis사이트에서 받을 수 있고 친절한 documentation도 볼 수 있다.

cd /usr/local/src
wget http://download.redis.io/releases/redis-2.6.16.tar.gz
tar xzf redis-2.6.16.tar.gz
mv redis-2.6.16/ redis
cd redis
make
바로 사용하면 된다.....설치도 쉽다...콜록
src/redis-server
클라이언트로 접속하여 테스트해 볼 수 있다.
src/redis-cli
ping
센스있다...핑퐁ㅋㅋㅋㅋㅋ 편하게 사용하기 위해 서비스에 등록하자.
mkdir /etc/redis
cp redis.conf /etc/redis
vi /etc/redis/redis.conf
필요한 설정들을 수정한다. daemonize yes loglevel notice logfile /var/log/redis.log dir /var/lib/redis
친절한 분이 스크립트를 만들어 놓으셧다. 냉큼 받아서 경로만 수정하자
wget https://raw.github.com/gist/257849/9f1e627e0b7dbe68882fa2b7bdb1b2b263522004/redis-server
vi redis-server
redis="/usr/local/src/redis/src/redis-server"

mv redis-server /etc/init.d
chmod 755 /etc/init.d/redis-server
chkconfig --add redis-server
chkconfig --level 345 redis-server on

vi /etc/sysctl.conf
vm.overcommit_memory = 1

sysctl vm.overcommit_memory=1
service redis-server start
끝~ 이제 입맛에 맛게 사용하면된다. jedis를 쓰든뭘하든 ㅎㅎ

9/05/2013

install mariaDb(centos)

난 공짜를 좋아한다...그래서 mariaDb를 좋아한다....(그래서 자꼬 머리가 빠지나?..콜록) mariaDb는 mysql이랑 완전 똑같다. 너므 비슷하다~ 더 빠르다는데...그건 잘 모르겟다..난 둔하다 ㅠㅠ ㅋㅋㅋ

설치하는 방법은 매우 간단하다~ 근데 외우지는 못한다.;;;ㅎㅎ 그래서 정리해 놓는다.

yum으로 인스톨 할테다. repo파일을 추가하자.

 vi /etc/yum.repos.d/MariaDB.repo
붙여넣긔!
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5.32/centos6-amd64/
# 버전이나 os는 알맞게 변경
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
yum update 하고 인스톨 실행!!
yum update
yum install MariaDB-server MariaDB-client
service mysql start
끝...너무 성의없나? 간간히 수정해야지 ㅎㅎ 콜록!

install nginx(Centos)

nginx 설정이 apache보다 쉽고(개인적으로...콜록) 성능도 더 좋은(잘 느끼진 못하지만^^;) nginx설치 방법을 정리해보겠다. mac을 좋아하지만 개발할때 많이 사용하는 centos를 기준으로 정리해보겠다.

설치방법은 간단하다. 우선 다운 받고 압축을 푼다.

wget http://nginx.org/download/nginx-1.5.4.tar.gz
tar -xzvf nginx-1.5.4.tar.gz
압축 풀고 make / make install 하면 끝난다. make 하기전에 gcc, make 등 필요한 것들을 먼저 install 한다.
yum install gcc gcc-c++ make autoconf wget libxml2-devel perl perl-devel perl-ExtUtils-*  pcre-devel openssl-devel zlib library cpan
난 yum을 좋아한다...콜록 prefix와 module을 설정하고 make/make install
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_perl_module --with-mail_ssl_module --with-http_mp4_module --with-mail
make
make install
다음은 실행 파일을 만들어 준다. 그래야 편하다...
vi /etc/init.d/nginx
붙여넣긔!!!
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
 
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
$nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
퍼미션 변경하고 실행하고 정지
chmod +x /etc/init.d/nginx
service nginx start
service nginx stop
이상!!! 콜록....