페이지

2014년 2월 28일 금요일

ftp를 이용한 네트워크 드라이브 연결

일반적으로 FTP는 파일송수신에 많이 쓰는녀석이라는건 다들 알고 있을것이다...

동일 Subnet 에 있는 사무실환경 같은경우에야 네트워크 드라이브로 폴더 공유해서 여러사람이 읽기/쓰기 작업을 하면 편하나 서로 다른 네트웍에 존재한다면 ISP 업체에서 보안상의 이유로 네트워크 드라이브 포트를 막고 있기에 사용하지 못한다.

자료를 송수신하려고 할때마다 FTP 클라이언트 프로그램을 통해서 작업을 해야하는데...네트워크 드라이브 연결을 통해서 마치 내 하드에 일부인것처럼 사용하고자 하는 방법에 대해서 알려드립니다.
서버쪽의 설정은 FTP 서버만 운영되고 있으면 됩니다. 나머지는 유저쪽에서 작업하시면 됩니다.

도구 --> 네트워크 드라이브 연결 항목을 클릭합니다.



"온라인 저장소에 로그인하거나 네트워크 서버에 연결합니다" 클릭


마우스만 클릭클릭하면서 아래처럼 쭉쭉 설치해 나간다..










설정은 이걸로 끝이다...이제 윈도우 탐색기를 통해서 연결된 드라이브를 확인해본다.



마치 내 PC의 일부분인것처럼 이제는 이용만 하면 된다... ^^;;
업무용 문서/중요자료 이중백업 용도로 사용하면 좋을듯......


출처 : http://chonnom.com/bbs/board.php?bo_table=B20&wr_id=45

apache+tomcat 세션 클러스터링

먼저 로드밸런싱 을 해준다

그담

1. Clustering에 참여하는 각각의 tomcat 서버의 server.xml
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 부분 주석처리 해제


[root@tpwas conf]# pwd
/svc/spi/was/tomcat/spiWas2/conf
[root@tpwas conf]# vi server.xml
=====================================================================================
<!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
=====================================================================================


1.1 보다 상세한 설정 및 물리 장비가다 다를 경우 다음을 각 server.xml에 추가
그리고 Receiver의 아이피와 포트를 수정
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
     <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>
 
     <Channel className="org.apache.catalina.tribes.group.GroupChannel">
          <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.105" port="45564" frequency="500" dropTime="3000"/>
          <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="현재 서버아이피" port="4001 서버마다틀리게" autoBind="100" selectorTimeout="5000" maxThreads="6"/>
          <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
               <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
          </Sender>
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
     </Channel>
 
     <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
     <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
 
     <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/>
 
     <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
     <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>


2. WEB-INF/web.xml에 <distirbutable/>추가


[root@tpwas WEB-INF]# pwd
/home/spiwas/dist/WebContent/WEB-INF
[root@tpwas WEB-INF]# vi web.xml
==================================================================================================
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">
    <display-name>Clustering Test</display-name>
    <distributable/>
</web-app>
==================================================================================================


3. 구동 확인

start시 catalina.out.out에 다음과 같은 로그가 나오면 됨

정보: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{127, 0, 0, 1}:4000,{127, 0, 0, 1},4000, alive
=5012, securePort=-1, UDP Port=-1, id={31 -5 48 -9 -27 64 79 67 -81 49 -44 96 -87 -84 -115 -121 }, payload={}, command={}, domain={}
, ]


3.1 구동시 에러메세지
 구동시 다음과 같은 에러 메세지가 나올 수 있다
이럴땐 /etc/hosts파일을 수정해 준다

½É°¢: Failed bind replication listener on address:auto
java.net.UnknownHostException: tpwas: tpwas
        at java.net.InetAddress.getLocalHost(InetAddress.java:1402)
        at org.apache.catalina.tribes.transport.ReceiverBase.getBind(ReceiverBase.java:201)
        at org.apache.catalina.tribes.transport.nio.NioReceiver.start(NioReceiver.java:110)
        at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:145)
        at org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:99)
        at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)
        at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)
        at org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:157)
        at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)
        at org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:419)
        at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:685)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1106)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:691)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)
2014. 2. 26 ¿ÀÀü 10:59:27 org.apache.catalina.tribes.transport.ReceiverBase getBind


다음을 제일 밑에 추가

[root@tpwas logs]# vi /etc/hosts
127.0.0.1   localhost 시스템 이름 localhost


4. 테스트 - webcontent폴더에 index.jsp를 다음과 같이 만든다



[root@tpwas WebContent]# pwd
/home/spiwas/dist/WebContent
[root@tpwas WebContent]# vi index.jsp 
=====================================================================================
<%
  session.setAttribute("a","a");
%>
<html>
<head>
<title>Test JSP</title>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#CCCCCC">
    <td width="13%">Tomcat1 Machine</td>
    <td width="87%">&nbsp;</td>
  </tr>
  <tr>
    <td>Session ID :</td>
    <td><%=session.getId()%></td>
  </tr>
</table>
    <div>Im WAS server hello snowman</div>
</body>
</html>
=====================================================================================


4.1 인스턴스를 2개 뛰우고 하나씩 죽여가면서 다음 화면과 같이 sessionId는 같고 worker가 달라지는 것을 확인하면 완료된 것이다
(크롬에서이나 익스플로러에서 확인해볼 것)



1번 인스턴스만 살아 있을때 또는 동시에 2개 다 살아있을때


2번 인스턴스만 살아있을때




apache+tomcat 로드 밸런싱

우선 해야 할 것은

① was 인스턴스 추가
② apache+tomcat연동
③ apache의 workers.properties, mod-jk수정 및 tomcat의 ajp포트 변경


위 1,2번은 이미 다른페이지에 설명되었으니 패스하고 3번을 다루겠다

사실 apache+tomcat과 비슷하거나 연장선에 있지만 별도로 설명하겠다



1. 우선 mod-jk수정 - 다음 녹색부분을 보면 디폴트가 ajp13으로 되어있을텐데
router로 바꾼다





[root@SPIWEB conf]# pwd
/svc/spi/web/apache/conf
[root@SPIWEB conf]# ll
ÇÕ°è 108
drwxr-xr-x. 2 root root  4096 2014-02-27 15:26 extra
-rw-r--r--. 1 root root 18207 2014-02-27 16:55 httpd.conf
-rw-r--r--. 1 root root 13077 2014-02-27 15:26 magic
-rw-r--r--. 1 root root 53011 2014-02-27 15:26 mime.types
-rw-r--r--. 1 root root   404 2014-02-28 09:39 mod-jk.conf
drwxr-xr-x. 3 root root  4096 2014-02-27 15:26 original
-rw-r--r--. 1 root root   439 2014-02-27 17:51 workers.properties
 [root@SPIWEB conf]# vi mod-jk.conf 

 ==============================================================================
LoadModule jk_module modules/mod_jk.so
<ifModule jk_module>
        JkWorkersFile conf/workers.properties
        JkShmFile logs/mod_jk.shm
        JkLogFile logs/mod_jk.log
        JkLogLevel info
        JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</ifModule>
JkMount /*.jsp router
JkMount /*.spi router
JkMount /*.ajax router
<Directory />
   Options FollowSymLinks
   AllowOverride None
</Directory>
 ==============================================================================



2. workers.properties 수정 - 다음을 붙여넣기 해준다




[root@SPIWEB conf]# vi workers.properties
 ==============================================================================
worker.list=router
# 1번째 인스턴스와 연결
worker.worker1.port=8009 <- tomcat instance의  ajp포트와 일치시킬 것(server.xml)
worker.worker1.host=localhost <--localhost, 또는 ip주소
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.worker1.route=worker1
# 2번째 인스턴스와 연결
worker.worker2.port=8109 <- tomcat instance의  ajp포트와 일치시킬 것(server.xml)
worker.worker2.host=localhost  <--localhost, 또는 ip주소
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
worker.worker2.route=worker2
worker.router.type=lb
worker.router.balance_workers=worker1,worker2
 ==============================================================================


3. tomcat instance의 server.xml수정

[root@tpwas conf]# pwd
/svc/spi/was/tomcat/spiWas2/conf
[root@tpwas conf]# vi server.xml
====================================================================================
<!--ajp포트 수정-->
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
<!--router추가-->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
====================================================================================






2014년 2월 27일 목요일

[linux] gcc install

apache를 설치할려니 apr에러가 나고, apr을 설치 할려니 또 gcc가 없네

이거 gcc설치하기 무지 빡신데 rpm이 순서가 틀릴수도 있으니 알아서 참고바람

when i tried to install apache it needs the apr
and when i tried to install the apr, it needs gcc
its hard to install the gcc

but below list of rpm will be good to install gcc in order




order

[root@SPIWEB spiweb]# rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm 
[root@SPIWEB spiweb]# rpm -ivh cpp-4.4.7-3.el6.x86_64.rpm 
[root@SPIWEB spiweb]# rpm -ivh glibc-2.12-1.107.el6.x86_64.rpm 
[root@SPIWEB spiweb]# rpm -ivh kernel-headers-2.6.32-358.el6.x86_64.rpm 
[root@SPIWEB spiweb]# rpm -ivh glibc-headers-2.12-1.107.el6.x86_64.rpm 
[root@SPIWEB spiweb]# rpm -ivh glibc-devel-2.12-1.107.el6.x86_64.rpm 
[root@SPIWEB spiweb]# rpm -ivh binutils-2.20.51.0.2-5.36.el6.x86_64.rpm 
[root@SPIWEB spiweb]# rpm -ivh --nodeps cloog-ppl-0.15.7-1.2.el6.x86_64.rpm 
[root@SPIWEB spiweb]# rpm -ivh gcc-4.4.7-3.el6.x86_64.rpm
[root@SPIWEB spiweb]# rpm -ivh libstdc++-devel-4.4.7-3.el6.x86_64.rpm  
[root@SPIWEB spiweb]# rpm -ivh gcc-c++-4.4.7-3.el6.x86_64.rpm   



ps. my system info
#uname -a
Linux 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux

[linux]사용자 관련 명령어


[사용자, 그룹 관리와 관련된 파일들]
  • /etc/passwd : 사용자 계정 정보 파일.
  • /etc/shadow : 암호화된 사용자 비밀번호 저장파일.
  • /etc/group : 사용자 그룹 정보 저장파일.
  • /etc/skel : 사용자 등록시 홈디렉토리에 복사되는 원본파일이 저장된 디렉토리
  •                  (사용자 추가시 홈 디렉토리에 복사됨).
  • /etc/default/useradd : 새 사용자 등록시 기본 설정정보 파일(홈 디렉토리 기본 위치, 기본 쉘 종류, 기본 그룹 등).
  • /etc/login/defs : 기타 사용자 생성 옵션들이 정의된 파일.

※ /etc/passwd 의 파일 저장 형식
- 사용자계정:암호:UID:GID:사용자이름:홈디렉토리위치:사용쉘

# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
※ /etc/shadow 의 파일 저장 형식
- 사용자계정:암호:암호 파일 최종 수정일:암호 변경 최소일:암호 변경 최대일:암호 만료 경고기간:암호 파기기간:계정만료기간:예약필드

# cat /etc/shadow
root:$1$qsotdQm.$uic0TlSBIBqC6VX9WUCl9.:14651:0:99999:7:::
bin:*:14581:0:99999:7:::

[사용자 계정 관리 명령어]

■ 사용자 정보 조회

▷ 명령어 : id

▷ 사용형식 : id [옵션] 사용자계정

-g : 기본 그룹의 GID 출력
-G : 모든 그룹의 GID 출력
-u : 사용자의 uid 출력
-n : 위 옵션과 함께 사용, 숫자대신 이름 출력()

▷ 사용예
# id -Gn user1


■ 현재 로긴하고 있는 사용자 목록 조회 : users

# users
root

■ 사용자 계정 추가

▷ 명령어 : useradd

▷ 사용형식 : useradd [옵션] 로그인 계정
 -c comment : 사용자 이름 또는 정보
 -d home_directory : 사용자 계정 홈 디렉토리
 -e expire_date : 사용자 계정 유효 기간
 -f inactive_time : 비활성 기간
 -g initial_group : 기본 그룹
 -G groups : 기본그룹외에 추가로 소속될 그룹
 -s shell : 기본 로그인 셀
 -u uid : 사용자 계정 uid
 -k skel SKEL_DIR : skel 디렉토리를 기본을 사용하지 않고 특정 디렉토리로 지정
 -m create-home : 새 사용자를 위한 홈디렉토리 생성

▷ 사용예 (사용자 계정 : user1)
# useradd -m -k /etc/common user1    <--- /etc/skel 이 아닌 /etc/common 디렉토리의 환경 설정 파일을 이용하여 계정 생성.
# useradd -g admin -G group1 -s /bin/bash user1  <<--- 기본 그룹 : admin, 추가로 소속될 그룹 : group1 , 기본 쉘: /bin/bash.

※ useradd 명령어를 통해서 사용자를 추가하게 되면 아래와 같은 작업들이 진행됩니다.
a) "/etc/passwd" 파일에 사용자 정보 설정
b) "/etc/group" 파일에 그룹정보 설정
c) "/home/사용자명/" 위치에 홈 디렉토리가 생성
d) "/var/spool/mail/" 디렉토리에 사용자명의 메일 파일 생성

■ 사용자 계정 변경
▷ 명령어 : usermod
▷ 사용형식 : usermod [옵션] 로그인 계정
 -c comment : 사용자 이름 또는 정보
 -d home_directory : 사용자 계정 홈 디렉토리
 -e expire_date : 사용자 계정 유효 기간
 -f inactive_time : 비활성 기간
 -g initial_group : 기본 그룹
 -G grous : 추가 그룹 변경
 -s shell : 기본 로그인 셀
 -u uid : 사용자 계정 uid
 -m move-home : 홈디렉토리 변경시, 새 홈딩렉토리로 파일 이동(-d 옵션하고만 사용할 수 있음)
-l : 사용자명 변경
-L : 사용자의 패스워드에 Lock을 걸어 로그인 제한

▷ 사용예
# usermod –d /home/user1 user1         <--- user1 계정의 홈디렉토리를 /home/user1 으로 설정
# usermod –e 2010-04-05 user1             <--- user1 계정의 만기일을 2010-04-05 일로 설정
# usermod –f 3 user1                            <--- user1 계정의 비봘성 기간을 3일로 설정
# usermod –g group1 user1                   <--- user1 계정의 기본 그룹을 group1 으로 설정
# usermod -u 508 user1                        <--- user1 계정의 UID를 508로 설정
# usermod -s /bin/csh user1                <--- user1 계정의 기본 쉘을 c쉘로 설정
※ 모든 일반 사용자들에 대해 일시적인 서버접속 금지(telent 만 해당, ssh 는 제외)하기 위해서는 /etc/nologin 파일을 생성해 두면 됩니다..

■ 사용자 계정 삭제

▷ 명령어 : userdel

▷ 사용형식 : userdel [옵션] 계정
 -r  : 해당 계정자의 홈디렉토리까지 모두 삭제

▷ 사용예
# userdel -r user1

■ 사용자의 비밀번호 설정

▷ 명령어 : passwd

▷ 사용형식 : passwd 사용자계정

▷ 사용예
# passwd  user1
Changing password for user user1.
New UNIX password:

 [그룹 관리 명령어들]

■ 사용자가 속해있는 모든 그룹정보 조회
- 그룹들의 정보는 /etc/group 파일에 존재.
#cat –n /etc/group

▷ 명령어 : groups

▷ 사용형식 : groups 사용자계정

▷ 사용예
# groups  user1
user1 : admin group1

■ 사용자 그룹 추가

▷ 명령어 : groupadd

▷ 사용형식 : groupadd [옵션]  그룹명           
 -g : 그룹의 GID(Group ID) 설정
 -o  : GID 499이하 값으로 지정
 -f  : 강제로 그룹 생성
 
▷ 사용예
# groupadd -g 1000  group1                   <--- GID가 1000으로 지정하여 group1의 그룹을 추가

■ 사용자 그룹 변경

▷ 명령어 : groupmod

▷ 사용형식 : groupmod [옵션]  그룹명           
 -g : 그룹의 GID 변경
 -o  : GID 499이하 값으로 변경
 -n  : 그룹명 변경
 
▷ 사용예
# groupmod -g 800  group1                     <--- 그룹명 group1 의 GID를 800 변경
# groupmod –n newgroup1 group1           <--- 그룹명 group1 의 그룹명을 newgroup1 으로 변경


■ 사용자 그룹 삭제

▷ 명령어 : groupdel

▷ 사용형식 : groupdel 그룹명           

▷ 사용예
# groupdel group1                      <--- 그룹명 group1 삭제


출처 : http://www.hobbyhobby.net/2012/02/linux.html

image

image