2018년 8월 27일 월요일

Ubuntu 배포판 다운로드 download 주소

내가 개인적으로 제일 선호하는 OS 는 Ubuntu 이다.
사용하기 편하고, 참고할만한 자료도 많기 때문이다.

사용하다 보면, 종종 옛날 버전이 필요할 때도 있는데,
그 때마다 검색해서 찾기 불편하다.

그래서 주소를 기록해 두고자 한다.

http://releases.ubuntu.com/12.04
http://releases.ubuntu.com/12.10

http://releases.ubuntu.com/13.04
http://releases.ubuntu.com/13.10

http://releases.ubuntu.com/14.04
http://releases.ubuntu.com/14.10

http://releases.ubuntu.com/15.04
http://releases.ubuntu.com/15.10

http://releases.ubuntu.com/16.04
http://releases.ubuntu.com/16.10

http://releases.ubuntu.com/17.04
http://releases.ubuntu.com/17.10

http://releases.ubuntu.com/18.04
http://releases.ubuntu.com/18.10

http://releases.ubuntu.com/19.04

각 버전 주소에 들어가면 iso 파일을 다운로드 할 수 있다.

서버 버전을 다운로드 하려면 "server-amd64.iso" 이렇게 생긴걸 다운로드 하면 된다.
데탑 버전을 다운로드 하려면 "desktop-amd64.iso" 이렇게 생긴걸 다운로드 하면 된다.

참고로,
"server-i386.iso" "desktop-i386.iso" 이렇게 생긴거는 32비트 버전이다.
"server-armhf" 이렇게 생긴거는 임베디드에 사용되는 ARM CPU 이다. (라즈베리파이 같은 곳에서 사용)

2018년 8월 20일 월요일

Vagrant 사용 방법 (7)

Vagrant Box 는 자신만 사용할 수도 있지만,
공개 site 에 업로드 해서 여러 사람이 사용할 수 있도록 할 수 있다.

만든 Vagrant Box 파일을 올려서, 여러 사람이 사용할 수 있게 해보자.


https://vagrantcloud.com
Vagrant Cloud 사이트가 hub 역할을 하고 있다.
회원 가입을 하자.


로그인을 하면, 다른 사람들이 만든 Vagrant Box 를 다운로드 할 수 있고,
내가 만든 Vagrant Box 를 업로드 할 수 있다.
"Create a new Vagrant Box" 를 클릭하자.


저번에 만든 CentOS 를 업로드 할 것이므로, 이름은 "CentOS7.2" 라고 하자.

Box 를 "Private" 로 설정할 수도 있다.
하지만 이 경우에는 유료 서비스에 가입을 해야 사용할 수 있다.
그냥 공개로 할 것이므로 체크 하지 말자.


혹시 Private 로 설정해야 한다면, 위 가격표를 참고하면 된다.

"Short description" 에는 간단한 설명을 기록하면 된다.


Box 의 버전을 입력한다.
Box 는 처음 만들때는 "RubyGems versioning" 규칙에 따라서 "0.0.1" 이라고 하면 된다.
나중에 Box 를 수정하게 되면, 수정하고 나서 버전을 "0.0.2" 이런식으로 올리면 된다.
하지만 꼭 버전을 저렇게 할 필요는 없다. 사실 자기 맘대로 해도 된다.
그러나 관례상 저렇게 한다는걸 알아두면 된다.

Vagrant.configure("2") do |config|
  config.vm.box = "CHOONGKI_KIM/CentOS7.2"
  config.vm.box_version = "0.0.1"
end

다 만들어 졌다.


Release 를 클릭하자.


Release version 을 클릭하자.


Release 버튼이 안 보이면 성공적으로 등록된 것이다.


Search 버튼을 클릭해서, 등록한 이미지를 검색해 보자.
검색이 잘 될 것이다.

등록된 box 를 사용하기 위해서는 아래와 같이 하면 된다.
그러면 Vagrantfile 이 생성된다.
% vagrant init CHOONGKI_KIM/CentOS7.2

다운로드가 시작되고, 다운로드가 다 끝나면, 최종적으로 가상머신이 실행된다.
% vagrant up



출처
https://vagrantcloud.com

2018년 8월 13일 월요일

Vagrant 사용 방법 (6)

vagrant 는 기본적으로 /vagrant 라는 디렉토리가 생성되고,
그 디렉토리는 host 머신의 Vagrantfile 이 있는 디렉토리와 동기화가 된다.

예를 들어
host 머신의 Vagrantfile 이 /home/kimchki/test 에 있다면,
guest 머신의 /vagrant 은 /home/kimchki/test 와 동기화가 된다.

그 외 별도의 디렉토리를 추가적으로 동기화를 하고 싶은 경우,
Vagrantfile 에 아래와 같이 추가하면 된다.
config.vm.synced_folder "/home/installation", "/installation"

host 머신의 /home/installation 디렉토리는
guest 머신의 /installation 디렉토리와 동기화가 된다.



Vagrant 사용 방법 (5)

지금까지는 인터넷에 공개되어 있는, public 형태의 이미지를 사용했었다.
이번에는 내가 만든, 나에게 맞춘, 나만의 이미지를 사용해 보도록 하자.

테스트를 위해서 인터넷에서 CentOS 7.2 를 다운로드 했다.
글을 쓰고 있는 현재 시점에서는 아래 링크에서 다운로드 했다.
http://vault.centos.org/7.2.1511/isos/x86_64/

virtualbox 에 새로 만들기를 클릭해서, 새로운 가상 머신을 만든다.


다운받은 CentOS 7.2 iso 파일을 통해서 설치를 진행하면 된다.


설치 완료 후, guest 머신에 개발을 위한 설정과 vagrant 를 위한 설정을 해줘야 한다.
guest 머신에 ssh 를 통해 접속하자.

root 로 로그인 후, 작업을 진행하자.
% su -
% yum groupinstall -y 'Development Tools'
% yum install -y kernel-devel perl wget

Ubuntu 경우는
% sudo apt-get install build-essential

virtualbox 에서 제공하는 "게스트 확장" 프로그램을 설치해야 한다.
"장치 - 게스트 확장 CD 이미지 삽입" 을 선택하면 iso 가 삽입된다.

참고로 위치는 이곳에 있다. (몰라도 된다)
/usr/share/virtualbox/VBoxGuestAdditions.iso


당연한 이야기 겠지만, IDE 컨트롤러가 있어야 한다.


iso 를 삽입했으니, 마운트를 해보자.
$ mount -r /dev/cdrom /media

설치를 하자.
$ /media/VBoxLinuxAdditions.run --nox11
그런데 에러가 발생했다.


kernel-devel의 특정 버전을 yum으로 설치하라는 내용이다.

이 포함되어 있다. 이 명령을 따라 kernel-devel을 설치하고 VBoxLinuxAdditions.run를 다시 실행하면 오류없이 설치가 된다.

설치하라고 하니까, 설치를 해야지 뭐.
% yum install kernel-devel-3.10.0-327.el7.x86_64


응? 에러나는데?
귀찮고 번거롭지만, 구글링을 해봐야겠다.
적당히 구글링을 해보니 찾을 수 있었다.

rpm 을 다운로드 하자.
% wget https://buildlogs.centos.org/c7.1511.00/kernel/20151119220809/3.10.0-327.el7.x86_64/kernel-devel-3.10.0-327.el7.x86_64.rpm

설치를 하자.
% rpm -Uvi kernel-devel-3.10.0-327.el7.x86_64.rpm

다시 시도를 해보자.
$ /media/VBoxLinuxAdditions.run --nox11


성공적으로 설치가 잘되었다.
만약 상위 버전이 존재한다고 메세지가 뜨면 그 버전을 삭제 후 다시 설치한다.
반드시 저 버전으로 설치를 해야 한다.

지금 진행중인 버전은 Cent OS 7.2 라서 kernel-devel-3.10.0-327 를 요구했다.
OS 버전마다 요구하는 kernel-devl 버전이 다를 수 있다.
아래 표에 정리해 놨으니 적당히 다운받도록 하자.

OSkernel-devel 버전Download 주소
CentOS 7.23.10.0-327https://buildlogs.centos.org/c7.1511.00/kernel/20151119220809/3.10.0-327.el7.x86_64/kernel-devel-3.10.0-327.el7.x86_64.rpm
CentOS 7.43.10.0-693https://buildlogs.centos.org/c7.1708.00/kernel/20170822030048/3.10.0-693.el7.x86_64/kernel-devel-3.10.0-693.el7.x86_64.rpm
CentOS 7.53.10.0-862http://mirror.centos.org/centos/7/os/x86_64/Packages/kernel-devel-3.10.0-862.el7.x86_64.rpm
Oracle Linux 7.23.8.13-98.7.1http://yum.oracle.com/repo/OracleLinux/OL7/UEKR3/x86_64/getPackage/kernel-uek-devel-3.8.13-98.7.1.el7uek.x86_64.rpm
Oracle Linux 7.44.1.12-94.3.9http://yum.oracle.com/repo/OracleLinux/OL7/UEKR4/x86_64/getPackage/kernel-uek-devel-4.1.12-94.3.9.el7uek.x86_64.rpm

다음 단계로 넘어가자.

구글링을 통해서 찾은 자료에서는 vboxadd 를 실행하라고 되어 있다.
$ /etc/init.d/vboxadd setup

그런데 아무리 찾아도 /etc 에는 vboxadd 가 없었다.
할 수 없이 / 에서 부터 찾아봤더니, /opt 에 있었다.
/opt/VBoxGuestAdditions-5.2.12/init/vboxadd

아무튼 난 저기에 있으니, 저걸 실행했다.
% /opt/VBoxGuestAdditions-5.2.12/init/vboxadd setup


성공적으로 설치가 잘 되었다.

일단 그룹을 생성하자.
$ groupadd -g 470 vagrant

"vagrant 라는 group 을 만들고, 그 group id 는 470 으로 지정해라" 라는 의미다.
왜 470 인가?
구굴링 하다 발견한 자료에서 저렇게 했길래 그냥 따라했다.
꼭 470 을 할 필요는 없다.
group id 를 부여하지 않으면, OS 에서 자동으로 부여를 할 것이다.

vagrant 계정을 추가하자.
$ useradd -g vagrant -u 470 vagrant
계정 id 도 470 으로 한다.

암호를 설정한다.
$ passwd vagrant
암호는 계정과 동일하게 vagrant 를 입력한다.
암호가 짧다고 뭐라뭐라 나올 수도 있다.
그냥 무시하고 하자.

vagrant 계정이 sudo 를 사용할 수 있도록 설정하자.
$ visudo

아래 내용을 추가해 넣자. (3줄)
Defaults    env_keep += "SSH_AUTH_SOCK"
Defaults:vagrant !requiretty
%vagrant        ALL=(ALL)       NOPASSWD: ALL

근데 어디에 넣어야 하나......
막상 visudo 를 실행하면, 어디에 해야 하지 라고 막막할 수도 있다.
그냥 가장 편하게 맨 마지막에 넣어도 된다.

근데..... 그냥 거기에 우아하게(graceful) 넣도록 노력했다.
파란색 글씨가 실제로 넣은 부분이다.

이렇게 한줄 넣고.
#
# Preserving HOME has security implications since many programs
# use it when searching for configuration files. Note that HOME
# is already set when the the env_reset option is enabled, so
# this option is only effective for configurations where either
# env_reset is disabled or HOME is present in the env_keep list.
#
Defaults    always_set_home

Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults    env_keep += "SSH_AUTH_SOCK"

이렇게 한줄 넣고.
#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults   env_keep += "HOME"

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults:vagrant !requiretty

이렇게 한줄 넣었다.
## Same thing without a password
# %wheel    ALL=(ALL)   NOPASSWD: ALL
%vagrant    ALL=(ALL)   NOPASSWD: ALL

vagrant 계정으로 변경하자.
% su - vagrant

ssh key 를 추가하자.
$ mkdir .ssh
$ curl https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub --output .ssh/authorized_keys
$ chmod 0700 .ssh
$ chmod 0600 .ssh/authorized_keys

ssh server 설정을 수정하자.
$ sudo vi /etc/ssh/sshd_config

만약 아래 내용이 주석으로 처리되어 있다면, 주석처리를 제거하자.
(# 을 지우라는 소리)
Port 22
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
그런데, 실제로 테스트를 해보니, 주석을 제거하지 않아도 잘 작동한다.
주석처리되어 있으면 기본값으로 동작할텐데,
기본값이 위처럼 되어 있는거 같다.

그리고 부가적으로 패키지를 설치하자.

CentOS
% yum install vi vim gcc g++ emacs wget make readline-devel zlib-devel openssl-devel libxml2-devel

Ubuntu
% sudo apt install vi vim gcc g++ emacs wget make libreadline-dev zlib1g-dev libssl-dev libxml2-dev

설치는 모두 끝났으니, 다음으로 넘어가자.

디스크 사이즈를 줄이자.
% sudo dd if=/dev/zero of=/EMPTY bs=1M
% sudo rm -f /EMPTY

"장치에 남은 공간이 없음" 이라는 에러가 나올 수 있는데 무시하면 된다.
정확히 무슨 역할을 하는지는 잘 모르겠다.
아래 주소를 통해 관련 내용을 참고할 수 있다.
http://stackoverflow.com/a/24956805

서버를 종료하자.
% sudo shutdown -h now

다시 host 머신으로 돌아와서 작업을 마무리 하자.

내가 생성한 CentOS 7.2 가상머신이 리스트에 들어 있는지 확인한다.
% VBoxManage list vms

box 를 생성하자.
% vagrant package --output CentOS7.2.box --base CentOS7.2

Vagrantfile 를 작성하자.
% vagrant init CentOS7.2.box

가상머신을 실행해보자.
% vagrant up


혹시라도 위와 같은 에러가 발생하면, Vagrantfile 에 아래 내용을 넣자.
.ssh 디렉토리와 authorized_keys 파일 권한도 확인해 보자.
config.ssh.insert_key = false

이것도 저것도 안되면, Vagrantfile 에 아래 내용을 넣자.
config.ssh.username = "vagrant"
config.ssh.password = "vagrant"

그리고 가상머신은 start 가 정상적으로 되어진 상태이니까,
vagrant ssh 를 통해서 접속은 가능하니,
가상머신 내부에서 수정하고 싶은것도 수정은 가능하다.


성공적으로 잘 start 되었다.

==========================================================

ssh authorize 관련해서 오류가 발생한다면, key 를 확인해 봐야 한다.

guest 머신의 .ssh 디렉토리 권한은 0700 으로 되어 있어야 한다.
guest 머신의 .ssh/authorized_keys 파일 권한은 0600 으로 되어 있어야 한다.

Vagrantfile 파일이 있는 디렉토리에 .vagrant 라는 디렉토리가 존재한다.
.vagrant/machines/default/virtualbox/private_key

그 디렉토리에 private_key 파일이 존재하는데,
그 파일과 guest 머신의 .ssh/authorized_keys 파일이 쌍으로 이루어져 있어야 한다.

또한, private_key 파일은 권한이 0600 이어야 한다.



출처
https://www.vagrantup.com/intro/getting-started/index.html
http://adhoc.tistory.com/entry/Vagrant-Box-만들기
https://blog.asamaru.net/2015/10/14/creating-a-vagrant-base-box
https://www.kjwon15.net/wordpress/articles/computer/linux-computer/540
https://kldp.org/node/155210
http://stackoverflow.com/a/24956805
https://github.com/hashicorp/vagrant/issues/5186
http://www.gisremotesensing.com/2016/06/solution-vagrant-box-authentication.html

2018년 8월 6일 월요일

Vagrant 사용 방법 (4)

apache 를 통해 web server 를 실행시켰지만,
가상머신(guest) 내부에서만 접속이 가능하고,
host 머신에서는 접속이 불가능 했다.

host 머신에서도 guest 머신으로 접속이 가능하도록
네트워크를 연결해 주자.

공유기를 사용해본 경험이 있다면,
포트 포워딩 이라고 생각하면 된다.

/home/kimchki/test/Vagrantfile 파일을 편집하자.

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.provision :shell, path: "bootstrap.sh"
  config.vm.network :forwarded_port, guest: 80, host: 4567
end

guest 머신의 80 포트를, host 머신의 4567 포트로 연결해 주겠다는 의미다.

reload 하자.
% vagrant reload

host 머신의 웹 브라우저를 통해서 자신의 4567 포트에 접속해 보자.
http://127.0.0.1:4567


잘 접속이 되면 성공한 것이다.



출처
https://www.vagrantup.com/intro/getting-started/index.html

WinSCP 기부

나는 리눅스(Linux)를 많이 사용하는 편이다. 회사에서도 사용하고, 개인적으로도 사용하고 있다. 그러다 보니 자연스럽게, SFTP를 많이 사용하게 된다. 리눅스에서는 SFTP에 대해 기본적으로 이렇게 저렇게 잘 지원을 해주는 편인데, 윈도...