Vagrant 가상 환경 지원
개발 환경의 고통
소프트웨어 개발은 개발 환경이 빠질 수 없고 웹 개발은 환경에 대한 의존도가 더욱 크다.웹 개발에서 프런트엔드든 백엔드든 서버와의 통신이 빠질 수 없다.일반적인 상황에서 전단 개발 학생, 특히Restfull 구조가 유행하는 상황에서 전단은 인터페이스와 문서만 필요로 한다.로컬에서 백엔드 서비스를 다시 구축할 필요가 없습니다.현실은 매우 잔혹하다. 인터페이스 디버깅을 위해 전단 개발은 왕왕 현지에서 백엔드 서비스를 구축해야 한다.물론 현지에서 에이전트부터 원격까지 개발 서버를 사용하는 것을 좋아하는 학생도 있다.어쨌든 디버깅할 때 백엔드 서비스가 빠질 수 없다.그 밖에 전단은 백엔드의 환경을 어떻게 구축하는지 거의 모른다.
백엔드에 대한 구축 환경은 비록 앞부분처럼 막연하고 조심스럽지는 않다.그러나 개발된 기계 환경과 생산 배치 환경이 일치하지 않아 왕왕 나타난다
코드가 내 컴퓨터에서 실행되는 데 문제가 없음(But it works on my machine)
왜 push가 서버에 와서 무릎을 꿇었어?그리고 신입이 입사할 때마다 개발 환경을 다시 한 번 배치하는 것도 짜증난다.
일로영일의 개발 환경 해결을 위해
Vagrant
운명에 따라 생겨났다.물론 현재Docker
도 비슷한 문제를 해결할 수 있다.Vagrant 설치
Vagrant
는 고급 가상 기기의 다리로 볼 수 있고vagrant를 통해 가상 기기와 파일을 쉽게 공유할 수 있다.호스트의 폴더가 가상 시스템의 파일 시스템에 매핑됩니다.네트워크 포트를 비추고 통신하는 개인 네트워크 등을 설정할 수도 있다.vagrant는 가상 기기에 의존하고 현재 지원하는 가상화 방식이 매우 많다.Virtualbox, VMware, Docker와 함께 작업할 수 있습니다.본고에서 사용한 환경은 MacOS X 10.11
, Virtaulebox 5.2.0
Vagrant 1.8.0
이다.맥에 vagrant와virtualbox를 설치하는 것은 비교적 간단합니다. 홈페이지 다운로드에 방문하여 dmg 패키지를 설치하면 됩니다.다운로드 주소는 다음과 같습니다.
Vagrant box 로드
박스 미러 다운로드
Vagrant는 고급 VM 미러링 관리자로 볼 수 있습니다.전체 환경 미러 세트는
Box
라고 합니다.누구나 자신만의 박스를 만들 수 있다.이 박스는 이른바 개발 환경으로 시스템과 관련된 소프트웨어를 포함한다.우리는 0부터 시작했기 때문에, 홈페이지 ubuntu14.04의 거울을 다운로드했다.공식 홈페이지에서 박스 렌즈 다운로드를 제공하는 것 외에 더 많은 렌즈가 이곳에 접근할 수 있다.상자 미러 추가
vagrant는 다른box 렌즈를 추가한 다음 이 렌즈에 따라 가상 환경을 초기화할 수 있습니다.다음 명령을 사용하여 box 추가
$ vagrant box add ubuntu14 ~/Download/virtualbox.box
ubuntu14는 추가된 상자의 이름입니다. 마음대로 이름을 지정할 수 있습니다.
~/Download/virtualbox.box
는 이전에 다운로드한 박스 미러입니다.위의 방법은 오프라인으로 추가하는 것입니다. vagrant는 사실 온라인으로 박스를 추가하는 것을 지원합니다. 박스의 경로를 공식적인 박스 이름으로 바꾸기만 하면 됩니다.패키지 관리 방식과 유사하다.box 미러 제거
박스 렌즈를 추가하는 데는 한 번만 걸리면 됩니다. 필요하지 않으면 다음 명령을 사용하여 박스 목록을 보고 박스를 제거할 수 있습니다.
$ vagrant box list
ubuntu14 (virtualbox, 0)
$ vagrant box remove ubuntu14
환경 초기화
가상 환경 만들기
vagrant는 서로 다른 박스를 만들고 박스에 따라 환경을 초기화할 수 있습니다.ubuntu14 환경을 만듭니다.
$ mkdir ~/ubuntu
$ cd ~/ubuntu
$ vagrant init ubuntu14
vagtant init에 박스 이름을 추가하면 이 상자를 기반으로 하는 환경을 만들 수 있습니다.init 명령이 실행되면 현재 디렉터리에 Vagrantfile 파일이 생성됩니다.
가상 머신 시작
Vagrantfile 파일을 편집하고 공유 폴더 및 개인 네트워크 액세스를 구성합니다.
# -*- mode: ruby -*-
# vi: set ft=ruby :
configure
Vagrant.configure(2) do |config|
...
#
config.vm.network "private_network", ip: "192.168.33.10"
# vagrant /vagrant, nfs 。
config.vm.synced_folder ".", "/vagrant", :nfs => true
...
end
일부 vagtant의 박스나 호스트는 nfs 공유를 지원하지 않습니다. 다음 패키지를 설치해야 합니다.
숙주 linunx:
$ sudo apt-get install nfs-kernel-server nfs-common
가상 머신:
$ sudo apt-get install nfs-common
물론 후자 명령의 집행은 반드시 먼저 가상 머신을 시작해야 설치를 실행할 수 있잖아.가상 머신을 실행하는 것은 간단합니다.
$ vagrant up
가상 머신이 시작되고 한 무더기의 설정 출력이 있으며 중간에 가상 머신의 비밀번호를 설정할 수 있는 권한을 부여해야 한다.mount 공유 폴더를 설정하는 동안 다음과 같은 오류가 발생했습니다.
Failed to mount folders in Linux guest. This is usually beacuse
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:
mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group apache | cut -d: -f3`,dmode=777,fmode=777 /vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g apache`,dmode=777,fmode=777 /vagrant /vagrant
가상 시스템에 설치해야 할 수도 있습니다
nfs-common
.VM 로그인
vagrant와 숙주 기회는 가상 머신이 시작될 때 ssh 관련 설정을 생성합니다.ssh를 사용하여 VM에 직접 로그인할 수 있습니다.
$ vagrant ssh
가상 컴퓨터에 로그인하면 방금 설치한 nfs-common을 실행할 수 있습니다.그런 다음 가상 환경을 재부팅하면 됩니다.
$ vagrant reload
Vagrantfile
파일의 설정을 수정하려면 Reload 가상 환경이 필요합니다.여기에 가상 환경을 보는
/vagrant
폴더 아래에도 Vagrantfile 파일이 있습니다.또한 이 폴더에서 만든 파일은 모두 호스트와 가상 환경을 똑같이 하고 두 폴더는 nfs 공유를 실현한다.가상 환경 닫기 및 제거
가상 환경을 사용할 필요가 없을 때 다음 명령을 사용하여 가상 시스템을 닫을 수 있습니다
$ vagrant halt
종료 후
vagrant up
를 사용하여 가상 머신을 다시 시작할 수 있습니다.이 환경이 필요하지 않을 때 vagrant destroy
를 사용하여 가상 머신을 제거할 수 있습니다.가상 시스템에 로그인하여nginx를 설치한 후에 192.168.10.33에 방문하면 숙주 호스트가 가상 환경에 접근하는 것을 볼 수 있다 가상 시스템에 nginx 설치 $ sudo apt-get install nginx 호스트에서 192.168.10.33에 방문하면nginx 처리 요청을 볼 수 있습니다.
포장하다
가상 환경을 만들면 이 환경은 생산 환경을 모의하여 웹 응용 프로그램을 배치할 수 있다.그리고 이 환경을 포장해서 새로운 박스가 됩니다.
$ vagrant package --output new_ubuntu14.box --vagrantfile Vagrantfile
서로 다른 사람에게 나누어 주고 그들도vagrant와virutalbox를 설치하면 차례대로 box를 만들고 생산 환경과 일치하는 개발 환경을 초기화할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.