我在Ubuntu 14.04上试图在Vagrant中构建一个LAMP堆栈的速度正在减慢,它将拥有Apache 2.4,MySQL 5.5.46,PHP 5.4,以及一些额外的功能,如phpMyAdmin,最新的NodeJS和Composer来模仿我们的生产环境。
设置Vagrant本身似乎很容易引用文档,但我从来没有设置Apache,MySQL等;所以配置和设置服务器都是全新的。通常我只是将Xampp用于我们的遗留项目,并使用Laravel为Homestead with Forge中已经配置的VM用于我们的新项目,但遗留项目现在需要一个VM来减少开发人员环境之间的维护问题。我已经尝试过学习Puppet,但是现在我只使用shell配置程序是最舒服的,以防有人想知道为什么我会使用不像Puppet,Ansible那样不具备幂等性的shell配置器。等
为了保持简单,我想一次只安装一些小块,以便知道安装了正确的版本,并且当我通过SSH连接到VM时我可以使用它们。所以我尝试安装PHP 5.4,并在Ubuntu上安装了几个不同的指南,以及一些Gists和StackOverflow。同样,我也为NodeJS和Composer做了同样的事情。但是,当我运行php -v
而不是5.4时,PHP版本似乎是5.5,而NodeJS版本是0.10.x
而不是5.x
,在配置期间也出现了npm错误,指示版本npm已经过时了。 Composer是唯一一个看似正确版本1.0-dev。
我已经在下面提供了我的配置脚本,而在我的Vagrant文件下面,虽然Vagrantfile设置似乎没问题。任何人都可以在尝试使用npm安装PHP 5.4和Node 5.x时表明我做错了什么?
Provision.sh
#!/usr/bin/env bash
# ---------------------------------------
# PHP Setup
# ---------------------------------------
apt-get update
apt-get install -y python-software-properties
add-apt-repository ppa:ondrej/php5-oldstable
apt-get update
apt-get install -y php5 php5-cli php5-fpm curl php5-curl php5-mcrypt php5-xdebug
# ---------------------------------------
# Tools Setup
# ---------------------------------------
# Adding NodeJs PPA Repository
apt-get update
curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
# Installing nodejs and npm
apt-get update
sudo apt-get install -y nodejs
apt-get install -y build-essential
# Installing Bower and Grunt
npm install -g bower grunt-cli
# Installing GIT
apt-get install -y git
# Install Composer
curl -sL https://getcomposer.org/installer | php
# Make Composer available globally
mv composer.phar /usr/local/bin/composer
Vagrantfile
# Prevent TTY Errors
config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"
# Allow SSH Agent Forward from The Box
config.ssh.forward_agent = true
hostname = settings['hostname'] ||= 'LAMP'
# Use Latest Ubuntu 14.04 Box Version And Default Hostname Unless Overridden
config.vm.box = 'ubuntu/trusty64'
config.vm.box_version = '>= 0'
config.vm.hostname = hostname
network_ip = settings['ip'] ||= '192.168.33.33'
# Use Default IP Unless Overridden
config.vm.network :private_network, ip: network_ip
# Use Default Memory And CPUs Unless Overridden
config.vm.provider 'virtualbox' do |vb|
# Display the VirtualBox GUI when booting the machine:
vb.gui = false
# Customize the name of the VM:
vb.name = hostname
# Customize the amount of memory on the VM:
vb.customize ['modifyvm', :id, '--memory', settings['memory'] ||= '2048']
# Customize the number of CPUs on the VM:
vb.customize ['modifyvm', :id, '--cpus', settings['cpus'] ||= '1']
end
# Default Port Forwarding
default_ports = {
80 => 8888,
443 => 44300,
3306 => 33060,
5432 => 54320
}
default_ports.each do |guest, host|
config.vm.network 'forwarded_port', guest: guest, host: host, auto_correct: true
end
# ---------------------------------------
# Provision the box with the included software
# ---------------------------------------
config.vm.provision 'shell', path: 'vagrant/scripts/provision.sh'
更新
要弄清楚我在服务器上SSH的版本和版本,并运行cat /etc/*{release,version}
,表明它是CentOs 6.7(最终版),其中包含PHP 5.4,但缺少官方的Vagrant框。此外,sudo apt-get ...
无法正常工作,我现在需要使用yum
?这不是安装PHP 5.4或其他任何东西。