Como: configurar Vagrant com VirtualBox executando Ruby on Rails 4, Postgres, Unicorn, Nginx, e port forward no OS X 10.10+
num ambiente de implantação real, os recursos associados são suficientes (esta publicação é apenas para vagabundos):
1 answers
Passo 1: Instalar o Vagrant e o VirtualBox
Você pode usar o Homebrew ou instaladores de seus respectivos sites, aqui e aqui.
Via Homebrew:
brew cask install vagrant
brew cask install virtualbox
Passo 2: Configurar o Vagrant
- Primeiro adicionamos uma caixa de vagabundos.As caixas vagantes são imagens que são clonadas numa máquina virtual por Vagrant, vamos usar o Ubuntu 14.04 do repositórioUbuntu para criar o nosso Virtual maquina.
vagrant box add ubuntu/trusty64
2, 3 segundos iniciamos o nosso Ficheiro vaginal.
O fornecedor padrão de vagabundos para virtualização é VirtualBox, por isso não temos de configurar nada nessa frente. Tudo o que precisamos fazer é criar um Vagrantfile
dentro ou ao lado da pasta raiz dos nossos projectos.
- o
Vagrantfile
servirá como o 'marcador de localização' para a pasta/vagrant
dentro da nossa máquina virtual, uma vez que qualquer coisa contida na mesma pasta que o nossoVagrantfile
estará acessível dentro do nosso virtual maquina.
Certifique-se que cd
para onde quer que o seu directório partilhado comece, então tudo o que precisamos de fazer é executar vagrant init
com a nossa imagem Ubuntu 14.04.
vagrant init ubuntu/trusty64
Ta-da! Estamos agora prontos para arrancar e brincar na nossa máquina virtual.
Passo 3: arranque e SSH-ing na nossa máquina virtual
Para arrancar e, em seguida, ssh em nossa máquina virtual, devemos estar no mesmo diretório que o nosso Vagrantfile
e executar:
vagrant up
vagrant ssh
Agora estamos prontos para instalar Ruby, Postgres, Rails, unicórnio e Nginx.
Passo 4: Instalar pacotes e configurar a nossa máquina virtual
4. 1-Siga o Guia DigitalOcean sobre a instalação de Ruby e Ruby nos trilhos até chegar aos passos opcionais, aqui.-
Nota: em
Install rbenv
não se esqueça de deixar o ficheiro como.bash_profile
.
4. 2-Instalar o Postgresql no Ubuntu 14. 04.
Actualizar o apt-get, depois instalar Postgres e é dependências:
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib libpq-dev
4.3-segue o Guia Digitaloceano sobre a instalação com Carris, unicórnio e Nginx, aqui .
- Nota: {[109] } certifique-se de referir os pontos abaixo sobre os quais as coisas a substituir.
-
antes do primeiro passo certifique-se que está no seu directório partilhado, para que possa aceder aos ficheiros a partir da sua máquina anfitriã, por exemplo, para usar Texto Sublime. Para aceder ao seu item de directório partilhado
cd /vagrant
. - Configure Unicorn: Copie a configuração fornecida, no entanto " Unicorn não pode armazenar A.o ficheiro sock numa pasta Virtual partilhada, por isso o que terá de fazer é modificar o 'socket' [...] " solução na fonte . Graças ao Dave Long.
-
Criar um programa de Init Unicórnio: copiar a configuração fornecida, no entanto:
- O
USER
será semprevagrant
. - temos que remover o
/home
do caminhoAPP_ROOT
também a partir de agora. -
Finalmente, dado que os portos com menos de 1024 são privilegiados no OS X, vamos ter de forçar a aplicação dos carris a funcionar em algo mais alto.
- muda esta linha:
CMD="cd $APP_ROOT && bundle exec unicorn -c config/unicorn.rb -E $ENV -D"
- nisto:
CMD="cd $APP_ROOT && bundle exec unicorn -c config/unicorn.rb -E $ENV -D -l 0.0.0.0:3000"
- muda esta linha:
- O
-
instalar e configurar Nginx: copiar a configuração fornecida, no entanto:
-
Mudámos o caminho para o
unicorn.sock
por isso alteramos o caminho paraserver unix:/home/tmp/sockets/unicorn.sock fail_timeout=0;
. - No
root
linha de configuração certifique-se que substituideploy
porvagrant
, produzindo:root /home/vagrant/APPNAME/public;
.
Finalmente, a Nginx pode não ser capaz de encontrar correctamente a aplicação dos carris, por isso vamos definir o
proxy_pass
para http://localhost:3000;
.
Desde que mudámos a localização do ficheiro unicorn.sock
para uma pasta dentro da pasta /tmp/ (que será apagada sempre que nós halt
a nossa máquina) vamos ter de configurar algumas provisões de consola via vagrant para ter a certeza que o comando mkdir /tmp/sockets
é corra cada vez que emitirmos vagrant up
para este projecto.
Basta adicionar o seguinte abaixo do bloco configure
no seu Vagrantfile
onde quiser:
# Create the /tmp/sockets folder we need every time on startup
config.vm.provision "shell",
inline: "mkdir /tmp/sockets"
Agora em vez de vagrant up
temos de correr {[[40]} toda vez que queremos iniciar a nossa máquina virtual e a pasta /tmp/sockets será criada para nós. Se não fizermos esta pasta, O Unicórnio não pega!
Passo 5: encaminhamento dos portos
Neste momento deverá poder aceder à sua aplicação em http://localhost:8080/tasks
desde que tenha configuração de reencaminhamento de portas no seu ficheiro Vagrantfile. Na verdade, porém, você nunca vai acessar seu aplicativo com uma porta no final, então precisamos port para a frente e corrigir isso. Como mencionado antes Vagrant não pode encaminhar para portos com menos de 1024, uma vez que eles são privilegiados no OS X. correr Vagrant sob sudo
também não ajuda, uma vez que este privilégio não é passado para o processo de VBoxManage desova Vagrant.
-
Acesso à nossa máquina hospedeira...
Que irá enviar para a nossa máquina hospedeira...
Que será encaminhada para a nossa máquina (virtual) convidada.
localhost
!
5. 1-locutor para o hóspede
A máquina anfitriã é a tua máquina física. máquina, o convidado é o teu Virtual. Vamos para bombordo, Porto 8080 no host, para 80 no convidado.
- abra o seu
Vagrantfile
e encontre a linha comconfig.vm.network
nele. - Descomenda a linha e edite - a, ao mesmo tempo que adiciona outra, tal que se assemelhe:
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 443, host: 8443
Agora encaminhou as portas http e https por omissão da sua máquina para o convidado.
5.2-mapeamento portuário dos portos do anfitrião Agora temos de mapear o hospedeiro. portos 80 e 443 para os portos 8080 e 8443 para que o vagabundo possa apanhá-lo! Nós vamos usar um plugin Nifty chamadovagrant-triggers
porque nós não queremos que isso aconteça o tempo todo. Só precisamos dele quando estamos a gerir o nosso caso de vagabundos. A utilização de vagrant-triggers
permitir-nos-á executar comandos na máquina de acordo com os comandos que o Vagrant diz para executar.
- instale
vagrant-triggers
executando o seguinte comando na mesma pasta que o seuVagrantfile
:vagrant plugin install vagrant-triggers
. - colar o seguinte configuração no seu
Vagrantfile
dentro do blococonfigure
, onde quiser.
config.trigger.after [:provision, :up, :reload] do
system('echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass inet proto tcp from any to any port 443 -> 127.0.0.1 port 8443
" | sudo pfctl -ef - > /dev/null 2>&1; echo "==> Fowarding Ports: 80 -> 8080, 443 -> 8443"')
end
config.trigger.after [:halt, :destroy] do
system("sudo pfctl -ef /etc/pf.conf > /dev/null 2>&1; echo '==> Removing Port Forwarding'")
end
Assim, a execução vagrant up
irá configurar o mapeamento de portas e a execução vagrant halt
irá removê-lo.
Agora pode aceder à sua aplicação a partir de http://localhost/tasks
.
pfctl
sob as configurações do soquete de Yosemite e unicórnio.
Se encontrar algo de errado com o guia, por favor, envie-me uma mensagem para que eu possa investigar e corrigir se necessário!
Codificação feliz,Tsujp