오랜만에 ubuntu에서 docker를 설치하려고 했는데...

Ubuntu 14.04 환경에서 설치가 안되었다. 이런... (https://www.whatwant.com/863)

뭐 이젠 14.04를 놓아줄 때도 된 것 같아서 ... 이를 극복하기 보다는 16.04 환경에서 진행해보기로 했다.

추가로 18.04에서도 해봤다.



공식 홈페이지 가이드를 따라서 진행했다.

- https://docs.docker.com/engine/installation/linux/ubuntu/



※ 이 블로그를 계속 봐오신 분들은 아시겠지만... 아래 내용은 직접 실행해보면서 작성한 것입니다.

※ VirtualBox를 이용하여 해당 OS를 설치하고 update까지만 마친 상태에서 진행하였습니다.




1. Ubuntu version

    - Ubuntu 14.04는 이제 지원하지 않는 것으로 보인다.

    - 특히, 64bit 만 지원한다! 32bit 안된다!



2. Binary 확인

    - 웹으로 다운로드 받을 버전을 확인하자.




3-1. Download 받기 (16.04)


$ wget https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/containerd.io_1.2.6-3_amd64.deb

$ wget https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce-cli_18.09.7~3-0~ubuntu-xenial_amd64.deb

$ wget https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_18.09.7~3-0~ubuntu-xenial_amd64.deb


3-2. Download 받기 (18.04)


$ wget https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/containerd.io_1.2.6-3_amd64.deb

$ wget https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce-cli_18.09.7~3-0~ubuntu-bionic_amd64.deb

$ wget https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce_18.09.7~3-0~ubuntu-bionic_amd64.deb



4-1. Docker 설치하기 (16.04)


$ sudo dpkg --install ./containerd.io_1.2.6-3_amd64.deb

$ sudo dpkg --install ./docker-ce-cli_18.09.7~3-0~ubuntu-xenial_amd64.deb

$ sudo dpkg --install ./docker-ce_18.09.7~3-0~ubuntu-xenial_amd64.deb


4-2. Docker 설치하기 (18.04)


$ sudo dpkg --install ./containerd.io_1.2.6-3_amd64.deb

$ sudo dpkg --install ./docker-ce-cli_18.09.7~3-0~ubuntu-bionic_amd64.deb

$ sudo dpkg --install ./docker-ce_18.09.7~3-0~ubuntu-bionic_amd64.deb




5. Hello World


$ sudo docker run hello-world

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world

1b930d010525: Pull complete 

Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8

Status: Downloaded newer image for hello-world:latest


Hello from Docker!

This message shows that your installation appears to be working correctly.


To generate this message, Docker took the following steps:

 1. The Docker client contacted the Docker daemon.

 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.

    (amd64)

 3. The Docker daemon created a new container from that image which runs the

    executable that produces the output you are currently reading.

 4. The Docker daemon streamed that output to the Docker client, which sent it

    to your terminal.


To try something more ambitious, you can run an Ubuntu container with:

 $ docker run -it ubuntu bash


Share images, automate workflows, and more with a free Docker ID:

 https://hub.docker.com/


For more examples and ideas, visit:

 https://docs.docker.com/get-started/



끝~



반응형

오랜만에 새로운 Ubuntu 버전과 Git 버전을 가지고 설치를 진행해보았다.
달라진 것은 없다.



1. 필수 패키지 설치

$ sudo apt-get install make libcurl4-gnutls-dev libexpat1-dev gettext zlib1g-dev libssl-dev asciidoc xmlto autoconf

 

 

2. 다운로드

$ cd /srv/install/git

$ wget http://www.kernel.org/pub/software/scm/git/git-2.1.0.tar.gz
$ tar zxvf git-2.1.0.tar.gz
$ cd git-2.1.0/


3. 빌드

$ make configure
$ ./configure --prefix=/usr/local
$ make all doc
$ sudo make install install-doc install-html

   - 설치가 잘 되었는지 확인을 해보기 위해서 버전 확인을 해보자.

$ git --version



GIT 자동완성을 지원하기 위해서는...

   - http://whatwant.tistory.com/478


우리 모두 Git으로 행복한 형상관리를...

반응형


솔직히 Ubuntu 환경에서 Subversion을 설치하는 방법은 너무 쉽다.

$ sudo apt-get install subversion


딱 한 줄의 명령어면 해결이 된다.

하지만, 개인적인 취향으로...
그리고 서버로 운영을 할 것이라면 공부 좀 하면서 SourceCode로 설치하는 것이 좋다고 생각한다.


그러면 해보자 !!!

우선 필요한 것은 빌드에 필요한 밑밥깔기~ 

$ sudo apt-get build-dep subversion

패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다      
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
  apache2-threaded-dev apache2-utils apache2.2-bin apache2.2-common autoconf automoc
  autotools-dev build-essential ca-certificates-java comerr-dev debhelper default-jdk
  default-jre default-jre-headless dh-apparmor diffstat docbook-xml docbook-xsl doxygen
  dpkg-dev g++ g++-4.6 gettext html2text intltool-debian java-common junit kdelibs-bin
  kdelibs5-dev kdoctools krb5-multidev libapr1 libapr1-dev libaprutil1
  libaprutil1-dbd-sqlite3 libaprutil1-dev libaprutil1-ldap libatk-wrapper-java
  libatk-wrapper-java-jni libattica0.3 libclucene0ldbl libdb4.8 libdb4.8-dev
  libdbus-1-dev libdlrestrictions1 libdpkg-perl libexpat1-dev libgcrypt11-dev
  libgettextpo0 libgif4 libglib2.0-dev libgnome-keyring-dev libgnutls-dev
  libgnutls-openssl27 libgnutlsxx27 libgpg-error-dev libgssrpc4 libkadm5clnt-mit8
  libkadm5srv-mit8 libkcmutils4 libkdb5-6 libkde3support4 libkdeclarative5 libkdecore5
  libkdesu5 libkdeui5 libkdewebkit5 libkdnssd4 libkemoticons4 libkfile4 libkhtml5
  libkidletime4 libkimproxy4 libkio5 libkjsapi4 libkjsembed4 libkmediaplayer4
  libknewstuff2-4 libknewstuff3-4 libknotifyconfig4 libkntlm4 libkparts4
  libkprintutils4 libkpty4 libkrb5-dev libkrosscore4 libkrossui4 libktexteditor4
  libkunitconversion4 libkutils4 libldap2-dev libmysqlclient-dev libmysqlclient18
  libneon27-gnutls-dev libnepomuk4 libnepomukquery4a libnepomukutils4 libnss3-1d
  libp11-kit-dev libpcre3-dev libpcrecpp0 libperl-dev libphonon-dev libphonon4
  libplasma3 libpq-dev libpq5 libqca2 libqt4-designer libqt4-dev libqt4-help
  libqt4-qt3support libqt4-scripttools libqt4-test libqtwebkit4 libreadline5 libruby1.8
  libsasl2-dev libserf-dev libserf1 libsolid4 libsoprano-dev libsoprano4 libsqlite3-dev
  libssl-dev libstdc++6-4.6-dev libstreamanalyzer0 libstreams0 libtasn1-3-dev
  libthreadweaver4 libtimedate-perl libtool libunistring0 libvirtodbc0 libxml2-dev
  libxml2-utils libxss1 m4 mysql-common odbcinst odbcinst1debian2 openjdk-6-jdk
  openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib phonon-backend-null po-debconf
  python-all python-all-dbg python-all-dev python-dbg python-dev python2.7-dbg
  python2.7-dev qt4-linguist-tools qt4-qmake quilt ruby1.8 ruby1.8-dev sgml-data
  soprano-daemon swig swig2.0 tzdata-java uuid-dev virtuoso-opensource-6.1-common
  zlib1g-dev
0개 업그레이드, 167개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
154 M바이트 아카이브를 받아야 합니다.
이 작업 후 486 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까 [Y/n]?


뭔가 정말 많이도 설치한다.
무려 167개...!? (물론 각자 상황에 따라 틀릴 것이다)


소스코드를 다운로드 받아서 진행을 해보자.


2013.09.04 현재 가장 최신 버전은 1.8.3 이다.

$ tar zxvf subversion-1.8.3.tar.gz

$ cd subversion-1.8.3/


압축 풀고... 이제 본격적으로 진행하면 된다.

$ ./get-deps.sh
Local directory 'zlib' already exists; the downloaded copy won't be used
Local directory 'serf' already exists; the downloaded copy won't be used
Local directory 'sqlite-amalgamation' already exists; the downloaded copy won't be used
Local directory 'apr' already exists; the downloaded copy won't be used
Local directory 'apr-util' already exists; the downloaded copy won't be used

If you require mod_dav_svn, the recommended version of httpd is:
   http://archive.apache.org/dist/httpd/httpd-2.4.6.tar.bz2

If you require apr-iconv, its recommended version is:
   http://archive.apache.org/dist/apr/apr-iconv-1.2.1.tar.bz2


Subversion과 같이 빌드가 될 다양한 dependency 관계에 있는 모듈들을 미리 점검하는 과정이다.

위의 메시지처럼 같이 빌드할 수 있는 모듈 중 현재 없는 것을 알려주는 경우,
필요하면 설치를 해주고 필요없다면 그냥 무시해도 Subversion 빌드는 진행할 수 있다.

$ cd apr/
$ ./buildconf
$ cd ..


$ cd apr-util/
$ ./buildconf
$ cd ..


$ cd apr-util/xml/expat/
$ ./buildconf.sh
$ cd ../../..


$ ./autogen.sh

$ ./configure

$ make

$ make check

$ sudo make install


설치는 이렇게만 하면 끝이다 !!!

반응형

개인적으로 무조건적인 사랑을 주고 싶은 리눅스
그 중에서도 가장 마음에 드는 Ubuntu

Ubuntu에서 Git을 설치해보고자 한다.



1. 패키지로 설치하기


Ubuntu가 11.10으로 업데이트가 되면서
아직 개인적으로도 낯설다.

애정을 가지고 적응을 해야겠지...


"우분투 소프트웨어 센터"에서 "git-core"로 검색을 해서
해당 패키지를 설치하면 바로 git을 사용할 수 있다.

가장 편한 방법이다.




2. 소스로 설치하기

 
Git을 소스로 설치하기 전에 필요한 패키지들을 미리 설치하자

$ sudo apt-get install make libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev asciidoc xmlto autoconf

 


엄청 빠른 버전업이 이루어지다가
1.8.x 버전대까지 와서야 조금은 천천히 업그레이드가 되고 있다.

[ Tarballs ] 부분을 클릭하면 다운로드 받을 수 있는 리스트를 확인할 수 있다.


여기에서 다운로드 받을 소스의 주소를 구하자.

$ pwd
/srv/install/git

$ wget http://git-core.googlecode.com/files/git-1.8.2.1.tar.gz

$ tar zxvf git-1.8.2.1.tar.gz

$ cd git-1.8.2.1/

 빌드가 어려울 것이라는 편견은 버리자.

$ make configure
$ ./configure --prefix=/usr/local
$ make all doc
$ sudo make install install-doc install-html

설치가 잘 되었는지 확인을 해보기 위해서 버전 확인을 해보자.

$ git --version


GIT 자동완성을 지원하기 위해서는...
http://whatwant.tistory.com/478


우리 모두 Git으로 행복한 형상관리를...
반응형

꾸준히 업데이트를 해주고 있는 아름다운 Redmine이 2013.03.19 날짜에 2.3.0 버전과 2.2.4 버전을 배포했다.

기존 install 포스팅으로도 설치에 큰 이슈가 없을 것 같기는 하지만,
그래도 오랜만에 다시 한 번 천천히 설치 과정을 진행해보려고 한다.


01. 버전 호환성 확인하기

   - 정말 다시 한 번 말하지만, Ruby 대중화의 가장 큰 적은 버전 호환성이다 !!!

 Redmine  Supported Ruby  Required Rails  Supported Rack  Supported RubyGems
 2.3.0  ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0
jruby-1.7.2
 Rails 3.2.13  ?  RubyGems <= 1.8
 2.2.4  ruby 1.8.7, 1.9.2, 1.9.3,
jruby-1.6.7
 Rails 3.2.13  ?  RubyGems <= 1.8



02. 기본 패키지 설치

   - Ruby, Redmine 설치를 위해 사전에 필요한 패키지들을 모두 설치하자.

$ sudo apt-get install build-essential libpcre3-dev libruby libssl-dev libcurl4-openssl-dev libpq-dev libreadline-dev libjpeg62-dev libpng12-dev curl openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev autoconf libc6-dev libncurses5-dev automake libtool bison pkg-config



03. Ruby 설치

   - Ruby 설치를 위해서는 rvm을 활용해야 한다. (여기에서 root 로 변경 후 뒤에 계속 root로....)

$ sudo su -
$ curl -L https://get.rvm.io | sudo bash -s stable
$ source /etc/profile
$ rvm install 1.9.3
$ rvm use 1.9.3
$ rvm --default use 1.9.3 

   - 이렇게 한 뒤 [ rvm -v ] 명령을 통해 ruby 버전이 확인되면 성공한 것이다.
   - 마지막으로 PATH 설정을 추가로 해주어야 하는데, sudo의 PATH 문제로 인해서 조금 더 해줘야 할 것이 있다.

$ nano /etc/environment


PATH="......:/usr/local/rvm/bin"




04. Rails 설치

   - rails를 설치하자.

$ gem install rdoc
$ gem install rails -v 3.2.13
 


05. PostgreSQL 설치 및 설정

     - 개인적 취향이지만 객관적으로도 꽤 괜찮은 database를 설치하자.
     - 그리고 나서 사용할 계정과 데이터베이스를 만들자.

$ apt-get install postgresql

$ su - postgres
$ psql

# CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity';
# CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
# \q

$ exit
$ gem install pg



06. ImageMagick

     - rmagick 설치하기

$ apt-get install librmagick-ruby libmagickwand-dev
$ gem install rmagick




07. Redmine

     - 압축파일로 다운로드 받자.

$ cd /srv/install/
$ wget http://rubyforge.org/frs/download.php/76867/redmine-2.3.0.tar.gz
$ tar zxvf  redmine-2.3.0.tar.gz



08. bundler & install

     - 필요한 패키지들을 한 번에 받을 수 있는 놈이 있다.

$ cd redmine-2.3.0
$ gem install bundler

reboot

$ sudo su -
$ cd /srv/install/redmine-2.3.0
$ bundle install --without development test mysql sqlite



09. Apache2 설치

$ apt-get install apache2 apache2-prefork-dev




10. passenger 설치

$ gem install passenger
$ cd /usr/local/rvm/gems/ruby-1.9.3-p392/gems/passenger-3.0.19/
./bin/passenger-install-apache2-module

     - Passenger 모듈을 Apache2에 올리기 위해서는 화면에 나오는 값을 잘 봐야 한다.

$ nano /etc/apache2/mods-available/passenger.conf

<IfModule mod_passenger.c>
   PassengerUser www-data
   PassengerDefaultUser www-data

   PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p392/gems/passenger-3.0.19
   PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p392/ruby
</IfModule>

$ nano /etc/apache2/mods-available/passenger.load

LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p392/gems/passenger-3.0.19/ext/apache2/mod_passenger.so


$ cd /etc/apache2/mods-enabled
ln -s ../mods-available/passenger.conf ./passenger.conf
ln -s ../mods-available/passenger.load ./passenger.load



11. database 설정값 등록

$ cd /srv/install/redmine-2.3.0
$ nano ./config/database.yml

 

production:
        adapter: postgresql
        database: redmine
        host: localhost
        username: redmine
        password: redmine
        encoding: utf8
        schema_search_path: public


     - 주의 사항으로는 위의 파일 내용을 입력할 때에 Tab 말고 White-Space로 입력해야 한다.



12. 추가 작업

$ rake generate_secret_token
$ RAILS_ENV=production rake db:migrate
$ RAILS_ENV=production rake redmine:load_default_data
   → Select language [ko]
$ mkdir public/plugin_assets


   - 권한 설정이 중요하다 !

$ chown -R www-data:www-data files log tmp public
$ chmod -R 755 files log tmp public/plugin_assets
$ chown -R www-data:www-data ./config/database.yml
$ chmod 600 ./config/database.yml



 

13. 웹설정

$ cd /var/www/
$ ln -s /srv/install/redmine-2.3.0/public ./redmine

$ nano /etc/apache2/sites-available/default


<Directory /var/www/redmine>

        RailsBaseURI /redmine
        RackEnv production
        RailsEnv production
        PassengerResolveSymlinksInDocumentRoot on

</Directory>


$ service apache2 restart


여기까지 진행하고 웹브라우저로 http://127.0.0.1/redmine에 접속을 하면 Redmine을 볼 수 있다.

초기 관리자는 admin/admin 이다.
반응형

Git의 기본적인 계정(권한) 관리는 SSH를 따라간다고 앞에서 지겹게 언급했다.

SSH가 훌륭한 놈이라는 것은 분명하지만,
계정 관리에 있어서 부족함이 있는 것 또한 분명하다.

Git에 있어서도 다양하고 디테일한 권한 설정 등이 필요한데,
이 부분을 SSH는 충분히 채워주지 못하고 있다.

그래서, Git을 위한 계정(권한) 관리 도구들이 계속 나타나고 있다.

과거에는 Gitosis 라는 것을 주로 사용했으나 기능이나 사용상의 편의성에 있어서 부족함이 보여서
새로운 Gitolite 라는 것이 나타났고, 최근에는 거의 대부분 Gitolite를 사용하고 있다.

사실 일반적인 경우 Gitosis만 가지고도 대부분 처리가 가능하나,
왠지 더 최근의 보다 더 막강한 Gitolite를 적용하곤 하는 것도 없지 않아 있는 것 같다.
물론 나의 경우에도 마찬가지다! 최신병에 걸린 죄로.... Gitolite에 대해서 연구를 해보겠다!!!




Gitolite를 설치하는 방법은 당연하게도 패키지 설치와 소스 설치가 있고...
여기에서는 소스를 가지고 설치하는 과정으로 설명을 할 것이다.


[ 전면수정 ]
   - 내가 바보같아서인지, 이 놈의 Gitolite에 대해서 친절하게 설명해 놓은 자료가 안보인다.
   - 가끔 친절한척 자세히 적어놓은 것들이 있지만, 따라하다보면 대체 뭘하는 것인지 모르겠는 그런 것이 대부분이다.
   - 더더욱 힘들게 하는 것은 Gitolite가 최근 g2 버전에서 g3로 바뀌면서 설치 과정들이 바뀌었다.
   - 그래서 예전 기억을 더듬어 차근차근 포스팅을 해나가다가... 좌절! 결국 대폭 수정 작업!!! 짜증 확!!! ㅠㅠ




1. Gitolite


     - Gitolite 프로젝트의 홈페이지는 아래와 같다.
          ▷ https://github.com/sitaramc/gitolite
     - 설치 과정에 대한 매뉴얼은 아래와 같다.
          ▷ http://sitaramc.github.com/gitolite/install.html
     - 계정 관리 등에 대해서 요약(?)을 한글로 보고 싶다면 아래 주소로 가라.
          ▷ https://github.com/progit/progit/blob/master/ko/04-git-server/01-chapter4.markdown



2. 시스템(계정) 구성

     - Gitolite를 설치하는 환경을 위해 어떻게 구성해야하는지 살펴보자.


     - 꼭 위와 같이 구성해야하는 것은 절대 아니다.
     - 아래 설명하는 내용을 잘 읽어보고 어떻게 구성해야하는지 각자 결정하면 된다.

     - 위의 직사각형은 각 계정을 의미한다.
     - [ git-repo ] 계정은 Git repository를 운영하기 위한 계정이다.
     - [ gitolite ] 계정은 Gitolite를 관리하기 위한 관리자 계정이다.
     - [ user ] 계정은 그냥 여러분이 사용하는 Ubuntu의 기본 계정이다.

     - 위 그림에 대한 설명은 아래 내용들을 하나씩 따라하면 알 수 있을 것이다.



3. 계정 생성

     - SSH 환경에서 여러 개발자들을 지원해주기 위해서는 Linux 계정을 그 숫자만큼 만들어줘야 했다.
     - Gitolite를 적용하게 되면 Linux 계정을 만들어주지 않고도 Git 계정을 만들어 줄 수 있다.
     - 대표 계정 하나로 나머지를 모두 커버하는 것이다.


$ sudo adduser gitolite
$ sudo adduser git-repo

     - [ gitolite, git-repo ]라는 계정을 추가해주자.



4. Public Key 등록

     - 현재 작업중인 계정에서 다른 계정에 접근하기 위해 Public-Key를 등록해주자.


     - 지금 사용중인 user의 계정에서 gitolite, git-repo 계정으로 ssh 접근을 바로(패스워드 없이) 하기 위해서
       user 계정의 공개키를 넣어주는 것이다.


$ ssh-keygen
$ ls -al ~/.ssh/

     - [ ~/.ssh/ ] 계정의 홈디렉토리 밑에 있는 '.ssh/' 디렉토리 밑의 파일들을 우선 확인하고,
     - [ id_rsa ], [ id_rsa.pub ] 파일들이 안보이면 [ ssh-keygen ]으로 생성을 해주면 된다.

 

$ ssh-copy-id -i ~/.ssh/id_rsa.pub gitolite@localhost
$ ssh-copy-id -i ~/.ssh/id_rsa.pub git-repo@localhost


     - 지금 현재 계정의 공개키를 gitolite, git-repo 계정에 넣어주기 위한 명령이다.


     - 잘 되었는지 검증해보기 위해서는 아래와 같이 직접 ssh 접속을 해보면 안다.

     - 암호를 묻는 과정이 사라졌다.
     - gitolite 계정의 [ ~/.ssh/ ] 경로를 살펴보면 [ authorized_keys ] 파일이 보일 것이다!



5. Gitolite 다운로드 받기

     - 위와같이 계정들을 생성하고 준비를 하고...이제 Gitolite를 설치해보자.
     - 그런데, 어디에 Gitolite를 설치해야할까?!

     - 정답은 repository를 저장할 곳이다! 즉, [ git-repo ] 계정에서 설치를 해야하는 것이다.

 


     - [ git-repo ] 계정에서 Gitolite를 다운로드 받고 설치하면 된다.
 



     - 위 사이트에서 경로를 확인하고... 진행을 계속 해보자.



   - [ git-repo ] 계정으로 작업을 하기 위해서 해당 계정으로 접속한다.
   - [ git-repo ]의 홈디렉토리에서 Gitolite를 clone하면 된다.

   - 그런데, 여기에서 중요한 점을 하나 집고 넘어가야 한다.
   - 웹에서 검색이 되는 Gitolite의 설치가이드 대부분과 지금 현재 상황이 맞지 않는다는 점이다.
   - 그 이유는 버전이 틀리다!!! 기존 Gitolite 대부분은 "g2" 버전이고, 지금은 "g3"다.
   - 그래서 설치 스크립트가 틀리다.
   - 2012.04.17에 g3가 릴리스가 되어서인지, 이와 관련한 자료는 거의 없다.



6. install

     - 다운로드 받은 Gitolite를 설치해보자.


$ ./gitolite/install

     - 그냥 'install'만 실행하면 일단 끝이다.

     - 만약 다른 디렉토리에 설치하고 싶으면 [ ./gitolite/install -to /srv/install/gitolite ]와 같이 사용한다.
     - 여기에서 설치하는 것은 실행할 수 있는 binary들이다.

     - 이제 이어서 'setup'을 해야하는데, 관리자 계정의 공개키가 필요하다.
     - 앞에서 만든 계정 중에서 우리는 [ gitolite ]라는 이름으로 관리자 계정을 만들어 놓았다.


$ ssh gitolite@localhost
$ ssh-keygen

     - 여기서 생성한 공개키를 전송해야한다.



     - [ gitolite ]의 공개키를 [ git-repo ] 계정 어딘가로 전송을 하고자 한다.

     - 위의 경우 ~/.ssh/ 밑에 위치했는데, 꼭 그곳이 아니어도 된다.
     - 관리자로 사용할 계정의 공개키가 Gitolite 설치과정에서 필요로 해서 이렇게 하는 것이다.


$ ./gitolite/src/gitolite setup -pk ./.ssh/gitolite.pub

     - install 후에 사용할 수 있게 된 [ ./gitolite/src/gitolite ] 명령어를 이용하여 setup을 하는데,
     - [ gitolite ] 계정의 공개키를 관리자로 등록하는 것이다.

     - Gitolite는 하나의 repository로 관리를 하게 된다. 위 화면에서 보는 바와 같이 [ gitolite-admin.git ]이 그것이다.
     - 해당 repository에 자료를 넣을 수 있는 관리자는 방금 전에 등록한 공개키로 인하여 [ gitolite ] 계정이다.

     - 친절하게도 테스트 해볼 수 있게 [ testing.git ] repository도 제공을 해준다.



7. clone

     - [ gitolite-admin.git ] repository를 clone 받아서 확인을 해보도록 하겠다.


$ ssh gitolite@localhost
$ mkdir repositories

     - Gitolite에 관리자로 등록시킨 [ gitolite ] 계정으로 접속하자.
     - clone 받을 디렉토리도 'repositories'라는 이름으로 만들어두자.

▶ 여기에서 Gitolite를 처음 접하는 분들을 위한 질문~!!!!!!!
     - 위와 같이 만든 [ Gitolite를 적용한 Git ]에 어떻게 접근을 할까?!

▷ 정답은 대표 계정 1개로 접근을 한다!
     - 이 포스팅 내용대로라면 여기에서는 [ git-repo ] 계정


     - [ gitolite ] 계정이 [ git-repo ] 계정에 접근을 하려고 하면,
     - 'gitolite' 계정의 private key에 대응하는 public key를 찾는데,
     - [ Gitolite ]가 이 부분에 개입을 해서 등록된 public key를 기반으로 권한을 확인하고
     - repository에 대한 접근 권한을 조정한다.

     - 이 부분에 대해서 오랫동안 고민해보질 못해서인지 쉽게 설명은 안되는데, 위의 글과 그림을 잘 봐보면....^^

     - 일단, clone을 해보자.


$ cd ~/repositories
$ git clone git-repo@localhost:gitolite-admin.git


     - 지금 현재 사용자 계정은 [ gitolite ]이다.
     - Gitolite에 관리자로 public key를 등록한 계정도 [ gitolite ]이다.
     - 그런데, clone을 할 때 [ git-repo ] 계정으로 접근을 했다. 응?!

     - 위에서 말한바와 같이, Gitolite를 사용할 때에는 무조건 대표 계정을 사용한다.

     - 그러면, 다른 계정에서 똑같이 하면 어떻게 될까?


     - Gitolite에 별도로 계정 등록을 하지 않은 사용자 chani 계정에서 접근을 할 때인데... 당연히 접속 불가~!!!


     - [ chani ] 계정이 'git-repo' 계정으로 접근을 하지만,
     - Gitolite가 등록된 공개키를 확인을 하는데 등록된 것이 없기에 접근을 거부하게 된다.




이번 포스팅을 하면서 너무 오랜 시간이 걸렸고, (헷갈리기도 하고 주말에 열심히 놀기도 하고 사고도 있고.....)
포스팅 내용 자체도 너무 길어지는 관계로 여기까지만해서 설치에 대해서 마무리!!!

계정 관리하는 것이나, admin 환경 설정하는 것이나 그러한 것들은 다음 포스팅으로.......


아자~!!! 오늘 두산 이겼다.... 그런데, 좀 부끄럽게 이겼다.... 프로들이 어이없는 실수들을 서로 남발하는....ㅋㅋㅋ

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Git 계정 관리 - Gitolite's Repository  (4) 2012.05.20
Git 계정 관리 - Gitolite 설정하기  (3) 2012.05.19
GitWeb + Nginx  (0) 2012.05.09
SSH Public Key - SSH 공개키  (0) 2012.05.04
Git Branch (브랜치) - Remote Ⅲ (생성, track)  (0) 2012.05.01

+ Recent posts