docker로 web server를 구축해보자


(docker가 뭔지는 Docker란 무엇인가(슬라이드쉐어)를 참조)


우선 개발환경은 ubuntu 14.04.1 LTS 버전입니다. 서버가 다른 곳에 있어서 편의상 putty를 사용해서 진행.


우선

docker를 설치해줍니다.


$ sudo apt-get install docker.io


설치가 되면 docker image를 받아와야 합니다. Dockerfile을 만들어서 진행 할 수 있지만 많은 사람들이 docker image를 repository에 올려놓았기 때문에 받아 씁니다.


$sudo docker search apache2 


이렇게 검색을 하면 매우 많은 image들이 나옵니다.

<이거보다 더 많이 나옴>



star가 많은건 좋아요가 많은 느낌인건데 저는 그냥 기본 아파치 서버만 할 것이므로 쭉 보다가 눈에 띈 emiller/apache2 가 배포한 이미지를 이용합니다.


$sudo docker pull emiller/apache2


이 명령어를 치면 쭈루륵 다운 받습니다.


다운이 다 되면


$sudo docker images 


다운받은 docker image의 목록을 보여줍니다.


이제 이 이미지를 가지고 docker container를 만들어 봅시다.


컨테이너 이름은 server로 하겠습니다 (마음대로 변경하세요)

그리고 계정의 홈 디렉토리에 docker-web이란 디렉토리를 만들어서 container에 있는 html 폴더와 연결 시키겠습니다. 이곳에 index.html이란 파일을 만들어 두었습니다 (docker hello world란 내용을 출력합니다)


$sudo docker run --name server -d -p 8080:80 -v /home/webserver/docker-web/:/var/www/html emiller/aphace2


이곳에서 8080:80 부분은 container의 80번 포트를 호스트 PC의 8080포트와 연결 시켜주는 것 입니다.

이렇게 실행을 시키고

http://hostpcip:8080 으로 들어가시면



도움 받은 곳

http://pyrasis.com/Docker/Docker-HOWTO#section-11














저작자 표시 비영리 변경 금지
신고
Posted by youngjinkmi0706

이제 guest 가 인터넷이 되어야하니까 네트워크 bridge를 사용해서 게스트에서 인터넷이 되도록해보자


sudo vi /etc/network/interfaces

에 가면 인터넷 정보가 뜨는데


auto lo에다가 xenbr0 를추가해주고


iface eth0 inet manual 


iface xenbr0 inet static 

bridge_ports eth0

address

netmask

gateway

broacast

dns-nameservers


를 넣어준다 (만약에 자동 할당을 사용하는 분들은 static 대신 DHCP 해주고 bridge_ports eth0 만 해주면 될듯

내 경우에는 고정 아이피를 쓰므로 저렇게 설정을 해줬다. 만약에 랜카드가 여러개인 분들은 bridge_ports에 쓰는거 다 추가해주셔야 할듯 나는 하나 쓰니까 저렇게!


이렇게 한 다음에


cfg에다가

vif =['bridge==xenbr0'] 를 추가해주고


sudo xl create cfg이름.cfg 를 해주면

네트워크가 되는 guest가 생성된다!!!


이제 나는 서버실에 더이상 안가고 내자리에서 ssh로 연결해야징


저작자 표시 비영리 변경 금지
신고
Posted by youngjinkmi0706

우선 ubuntu 14.04.1 LTS를 다운 받아 USB/DVD 부팅으로 만든다

나의 경우엔 USB 부팅으로 만들었음.

우분투 다운로드 

USB로 부팅하는 방법은 다른 블로그를 찾으면 자세히 나오므로 패스


USB로 부팅을 시키면 설치화면이 뜨는데 파티션을 나눠도 좋고 그냥 깔아도 좋다

하지만 LVM을 사용하는건 체크하지말자 

내가 허접해서 그렇겠지만 그거 체크하면 /가 LVM으로 잡혀서 나중에 우리가 LV를 이용하여 guest를 만들어야하는데 파티션 분리가 안된다. 그래서 LVM은 apt-get 으로 나중에 인스톨을 하고 일단은 그냥 깔자


설치가 다되면 터미널을 켜서 

apt-get update

apt-get install lvm2

apt-get install xen-hypervisor-amd64

apt-get install gvncviewer 

를 설치해준다.


설치가 완료되면 재부팅


그다음에 lvm 파티션을 설정해줘야한다.

나의 경우엔 부트 usb를 넣고 try ubuntu로 들어간다음

sudo gparted 를 실행시켜서 나눠줬는데

기존에 파티션을 나눠놓은사람은 이 짓을 안해도 된다.

파티션을 다 나눴으면


sudo fdisk -l 을 통해서 우리가 사용할 파티션을 확인하고

sudo fdisk /dev/sda (나의경우엔 sda3인데 사용자마다 다를 수 있다)

로 들어간다음

d

3

n

3

엔터 엔터

t

L

8e

w

순으로 진행하면 된다 (command 어쩌구 저쩌구나오는데 쓰기 싫어서 생략, 저게 무슨 의미인지 모르겠다면 직접 쳐보면 알것이다)

이렇게 하면 sda3번이 Linux-LVM으로 세팅이 된다. fdisk -l 을 통해서 확인 할 수 있다.


이렇게 세팅이 되었으면 재시작 한번 더 해주고

재부팅이 완료되었다면 다시 터미널을 켠다


터미널을 키고

sudo pvcreate /dev/sda3

하면 physical volume 이 생성되고

그다음

sudo vgcreate vg /dev/sda3

하면 volume group이 생성된다.

그 다음 저 vg에다가 lv을 생성해 주면된다.

sudo lvcreate -n 이름 -L 사이즈 /dev/vg

이렇게하면 /dev/vg에 -n이름으로 된 Logical volume이 생성된다.


이제 이렇게 생성된 볼륨에 우분투를 깔아보자

다시아까 저 위에 우분투 사이트에서 우분투 iso를 다운받고 (아까꺼 써도 되고)

그다음 아까 lv 이름으로 지정한 파일이름.cfg 파일을 만든다.

vi 이름.cfg

그러면 vi창이 뜨는데

   kernel = "/usr/lib/xen-4.0/boot/hvmloader"
   builder='hvm'
   memory = 4096
   vcpus=4
   name = "ovm-1734"
   vif = ['bridge=xenbr0']
   disk = ['phy:/dev/vg0/windows,hda,w','file:/root/windows.iso,hdc:cdrom,r']
   acpi = 1
   device_model = 'qemu-dm'
   boot="d"
   sdl=0
   serial='pty'
   vnc=1
   vnclisten=""
   vncpasswd=""

이거 입력해준다. 근데 우리는 network 브릿지를 세팅 안했으므로 vif 부분을 삭제해준다.

그리고 disk부분은 자신의 것으로 바꿔주는 것은 센스! 

저렇게 만든 담에

sudo xl create cfg파일이름.cfg

를 하면 짜잔 하고 생성된다 그런데 화면에 아무것도 안뜬다.

그러면 확인을 위해서

sudo gvncviewer localhost:0 

을 입력해주면

내 vm이 화면에 짠 하고 뜬다 !


다음번엔 네트워크를 사용하는 방법을 포스트해야겠다 지금은 아직 모르니까 공부 좀더 하고


reference http://wiki.xenproject.org/wiki/Xen_Project_Beginners_Guide#Creating_a_Windows_HVM_.28Hardware_Virtualized.29_Guest










저작자 표시 비영리 변경 금지
신고
Posted by youngjinkmi0706

안드로이드 full source (kitkat 버전)을 받고 빌드를 시작하기에 앞서

https://developers.google.com/android/nexus/drivers#hammerheadkrt16m 이 사이트에서 하드웨어 바이너리를 다운 받는다.

나의 경우에는 넥서스5  안드로이드 킷캣을 사용하기 때문에  4.4 버전을 받으면 되는데 아무거나 해도 부팅에는 상관 없는 듯하지만 버전에 알맞은  것을 다운 받으면 된다.

그걸 받고나서 framework의 root 폴더에서 압축을 풀면 .sh파일이 나오고 이걸 실행해주면 /vendor라는 폴더안에 바이너리들이 설치된다.

이게 설치가 다 되면


>> source build/envsetup.sh 

>> lunch 

>> 10


을 해주면 환경설정이 다된다

그리고나서 api를 수정했다면 

>>make update-api -j16 (16은 알아서 옵션조절해주면 됨)

을 해줘서 aidl을 다 연결시켜주고


>>make -j16 

을 해주면 알아서 짠 하고 빌드가 된다


이렇게 빌드가 다 되면

/out/target/product/hammerhead 에 

.img파일들이 생성된다.

이걸 내 디바이스에 넣기 위해서는

/out/host/linux_x86/bin 에 가면 

fastboot가 있다.

안드로이드 디바이스를 fastboot모드로 재시동을 하고 (볼륨다운+전원)

sudo ANDROID_PRODUCT_OUT=/out/target/product/hammerhead ./fastboot -w flashall

을 해주면  img가 디바이스에 들어간다







저작자 표시 비영리 변경 금지
신고

'컴퓨터 > Android' 카테고리의 다른 글

android full source build 한후 fastboot로 flash하기  (0) 2014.09.18
Posted by youngjinkmi0706

checkbox를 통해서 값을 보내려고했는데

submit을 하지 않으면 python framework로 값이 전달 되지 않음

따라서 submit버튼 없이 checkbox의 정보를 보내기 위해서는 자바스크립트로 form을 submit하는 것을 구현하면됨

그러기 싫으면 submit버튼 만들어서 보내자.

저작자 표시 비영리 변경 금지
신고
Posted by youngjinkmi0706

andorid에 새 이미지를 올리기 위해 adb와 fastboot을 설치해보자


sudo add-apt-repository ppa:nilarimogard/webupd8

sudo apt-get update

sudo apt-get install android-tools-adb android-tools-fastboot


끝!

저작자 표시 비영리 변경 금지
신고
Posted by youngjinkmi0706


 public static void main(String[] args) throws IOException {    

     startService(args, null);

  } 


static void startService(String[] args, DatagramSocket registrationSocket) throws IOException {

    StringUtils.startupShutdownMessage(Nfs3.class, args, LOG);    

    /* Nfs3 constructor에서 

     * super(new RpcProgramNfs3(conf, registrationSocket), conf); << Nfs3Base()

     * Nfs3Base()에서 NFS3_SERVER_PORT 설정   

     */

    final Nfs3 nfsServer = new Nfs3(new Configuration(), registrationSocket);

    

    /* public void startServiceInternal(boolean register) throws IOException 에서

     * nfs server를 mount 시키고 

     * Nfs3Base.java에 있는 start(boolean register)를 호출하여 TCP server를 실행시킨다

     * NFS는 오직 TCP server만을 지원하며 UDP는 지원하지 않는다

     */

    nfsServer.startServiceInternal(true);

  }

저작자 표시 비영리 변경 금지
신고
Posted by youngjinkmi0706

hadoop-common/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs

  • /mount/mountd

 super(new RpcProgramMountd(config, registrationSocket));

>> MountdBase의 Constructor에 RpcProgram을 전달

↓↓

public RpcProgramMountd(Configuration config, DatagramSocket registrationSocket) throws IOException {

    // Note that RPC cache is not enabled


    /*  

     *  protected RpcProgram(String program, String host, int port, int       progNumber,int lowProgVersion, int highProgVersion,DatagramSocket registrationSocket)

     *  RpcProgram.java의 Constructor에서 RpcProgram객체에 매개변수를 할당

     *  @param program program name

     *  @param host host where the Rpc server program is started

     *  @param port port where the Rpc server program is listening to

     *  @param progNumber program number as defined in RFC 1050

     *  @param lowProgVersion lowest version of the specification supported

     *  @param highProgVersion highest version of the specification supported

     */ 

    super("mountd", "localhost", config.getInt("nfs3.mountd.port", PORT),

        PROGRAM, VERSION_1, VERSION_3, registrationSocket); 

   

    //export는 공유 대상(mount를 할 대상) 

    exports = new ArrayList<String>();

    exports.add(config.get(Nfs3Constant.EXPORT_POINT,

        Nfs3Constant.EXPORT_POINT_DEFAULT));

    this.hostsMatcher = NfsExports.getInstance(config);


    //mount entry 할당

    this.mounts = Collections.synchronizedList(new ArrayList<MountEntry>());

    UserGroupInformation.setConfiguration(config);

    SecurityUtil.login(config, DFS_NFS_KEYTAB_FILE_KEY,

            DFS_NFS_KERBEROS_PRINCIPAL_KEY);

    //namenode 세팅

    this.dfsClient = new DFSClient(NameNode.getAddress(config), config);

  }

 

 mountd.start(true); // UDP, TCP server Start



저작자 표시 비영리 변경 금지
신고
Posted by youngjinkmi0706

mac osx mavericks above


maven, protoc를 설치 해 줘야 한다.

소스를 직접 다운 받는 것도 좋고 macport를 이용해서 설치해도 된다. 

나는 맥포트를 이용

맥 포트 매버릭스용 다운로드 

사용법은 http://www.macports.org/에 잘 나와 있다


맥포트를 설치했다면, 맥포트를 통해서 maven을 설치해준다

명령어는 우분투의 apt-get install과 비슷하다


JAVA_HOME 설정

maven을 통해서 실행을 시키려면 JAVA_HOME이 설정되야 한다.

자바의 설치 주소는

/usr/libexec/java_home -v 

명령어를 실행시키면 나온다.

이렇게 나온 자바 주소를 vi ~/.bash_profile에 가서 

export JAVA_HOME='java_path' 

라고 쓴 후에 저장

그리고 source ~/.bash_profile을 해준다.


maven 설치

sudo port install maven3 

sudo port select --set maven maven3

maven 설치가 완료되면 

mvn -version으로 maven 버전 확인


protocol buffer 설치

protobuf 2.5.0 다운로드

이거 설치법은 이 안에 INSTALL.txt 파일을 보면 자세히 나와 있다 

간략히 요약하면

./configure

./make

./make install


이게 다 설치가 되면 

hadoop source가 있는 디렉토리에 들어가서 

cd hadoop-maven-plugins

mvn install 

이게 다 되면

cd ..

mvn eclipse:eclipse -DskipTests


이게 다 끝나고 나면

이클립스 켜서 import - existing projects into workspace -hadoop 최상위 폴더 선택 후 finish를 누르면 이클립스로 import가 된다.


windows 

다음 사이트를 참조

http://hadoopguide.blogspot.kr/2014/01/install-hadoop-220-source-in-windows-7_25.html 




 



저작자 표시 비영리 변경 금지
신고
Posted by youngjinkmi0706

hdfs 분석의 필요성이 있기에 소스코드를 분석해보자 !!

일단 소스코드는 hadoop git에서 받으면 된다

내가 분석할 hdfs 소스는

hadoop-common/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop

hadoop-common/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs 에 있는 소스 파일들이다


hadoop-hdfs/src/main/java/org/apache/hadoop

  • StorageType.java

스토리지 타입을 골라준다 (DISK/SSD)

public static final StorageType DEFAULT = DISK;



저작자 표시 비영리 변경 금지
신고
Posted by youngjinkmi0706


티스토리 툴바