- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行Vagrant VM标准问题lucid32.box。在此设置LAMP的完整说明是什么?
我看着刀(厨师的一部分)并尝试:
vagrant@lucid32:~$ knife cookbook site install apache2
WARNING: No knife configuration file found
最佳答案
好的,我已经决定作为原始问题解答者为我自己完全回答。 (感谢所有之前做出贡献的人。)
使用Vagrant和Oracle VirtualBox在Windows 64位主机上进行LAMP VM的端到端设置
我最初问这个问题的原因是,尽管网络上有很多说明和指南,但它们似乎没有做:
明确定义起点和先决条件
为那些像我一样在具有能力的Windows计算机来托管VM的公司环境中的用户提供指导。相反,他们假定基于Linux的主机。
请明确要设置文件的位置:在主机上?在来宾操作系统上? (要确定主机操作系统和来宾操作系统都是基于Linux还是基于Unix,这特别困难-显示的命令行片段显然看不出任何线索,因为它们看上去都一样。)
说明使用了哪个版本的Vagrant。主要有两(2)个版本:API版本1,该版本是v1.1.0之前(但不包括)的所有版本。另一个是API版本2-从v1.1.0开始发行。因此,版本约定类似于Java。这个API版本非常重要,因为例如v1 API脚本根本无法在Vagrant软件的API v2上运行,除非在脚本的开头放置了一个子句以指明要使用哪个版本。
我个人认为,Vagrant版本控制约定可能会更简单。注意:此指南适用于Vagrant1。我被告知版本1具有广泛的安装基础,而Vagrant 2仍处于2013年中期草案中。因此,我想将版本1-V1 LTS-长期支持-像Ubuntu表明这将持续很长时间。
这是一张图片,以阐明哪个API在Vagrant软件的哪个版本上:
对于此处使用Vagrant的示例设置,我建议使用V1.1.0之前的版本(即vagrantup.com上下载的Vagrant API 1),但是您应该能够使用上述Vagrant软件的Vagrant 2 API版本但是您需要在脚本的开头添加一个“指令”,以告知Vagrant它们是针对Vagrant 1的,否则脚本将失败并显示一条错误消息。 TODO:我将尝试获取该指令并将其放在此处以提供帮助。
(流浪者的创建者Mitchell Hashimoto-请在您的O'Reilly图书的任何将来版本中注意上述内容:流浪者:正常运行:http://shop.oreilly.com/product/0636920026358.do)
这些答案中的这些指示应该做什么:
使用Windows 7 64位计算机(或Mac或Linux计算机)上的Oracle VirtualBox,获得具有LAMP(Linux操作系统,Apache Web服务器,MySQL数据库,PHP)堆栈的32位Ubuntu Linux操作系统,并作为虚拟机运行,但主要在Windows上进行了测试,但在Mac上应该可以正常使用,并且该解决方案是独立于平台的)。我已经测试了PHP OK(通过标准的phpinfo.php文件,看到MySQL正在运行,但尚未测试)。
设置在Vagrant VM上运行的LAMP堆栈的其他方法
注意:对于那些想要使用Drupal开源内容管理框架来实现LAMP堆栈的人(如我),可以使用另一种开箱即用的解决方案:http://drupal.org/project/vagrant
您应该能够仅遵循下面的先决条件,然后从上述URL下载.zip并按照其中的说明进行操作,并从命令行运行vagrant up
以启动VM并等待其构建和启动(其中一些第一次设置是一次性的,因为一旦设置好图像,随后的启动应该会更快)。您可以免费获得许多其他开发人员的东西(例如,省去了安装它们的工作),例如git,drush(我认为)和性能分析工具。然后转到[服务器地址] /install.php安装Drupal。这似乎很好地工作了,没有问题-我已经尝试了它,但没有对其进行广泛的测试。如果收到错误消息,则可能需要禁用xhprof的安装-有关详细信息,请参见http://drupal.org/node/1940668。
另一个选择是使用此配置工具:https://puphpet.com/
-这是用于配置Vagrant设置的直观点击方法。这在Vagrant 2上有效(我认为,至少在Vagrant 1.2.2上,是的,是的)。更新:实际上,我已经成功完成了这个工作,并基于在本地运行Drupal的设置-请在此处查看我的指南:https://drupal.org/node/2055947
更新资料
这是我发现在Mac和Windows上可以正常使用的其他一些现成的Vagrant设置:
https://github.com/mikebell/drupaldev-apache
https://github.com/mikebell/drupaldev-nginx
如果要将Solr搜索引擎作为LAMP堆栈的一部分放在VM中本地,则可能需要查看以下内容:
https://github.com/computerminds/parrot
尽管这些替代方法很棒,但我的说明仍然对帮助您了解此类设置的工作或希望使用更简单的更基本的LAMP堆栈很有用。
您需要了解如何做的小附加功能(将在此处尝试包括在内)
设置完成后登录到计算机-这是通过基于SSH的标准登录完成的。您将需要免费工具putty.exe和puttygen.exe。
目前,我尚未在此处提供如何使用SSH登录,但以后会尝试这样做。您将在此答案的末尾找到参考。
请注意,登录将使用用户vagrant
。
(按照下面的设置说明进行操作后)才能使用root用户,您需要“解锁”该帐户才能重设密码:
解锁根帐户:
vagrant@lucid32:~$ sudo passwd -u root
passwd: password expiry information changed.
vagrant@lucid32:~$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
vagrant@lucid32:~$ su root
Password:
root@lucid32:/home/vagrant#
vagrant up
等),它仍然有效,因此我认为不需要这些额外的,单独的Ruby和Puppet安装。
C:\Users\rdavis
mkdir lamp-project
cd lamp-project
mkdir configs
cd ..
cd lamp-project
mkdir manifests
C:\Users\rdavis\lamp-project>vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
C:\Users\rdavis\lamp-project>vagrant init lucid32
vagrant init
,但是对于第一次,您将必须执行上述命令。)
C:\Users\rdavis\lamp-project>vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
C:\Users\rdavis\lamp-project>
C:\Users\rdavis\lamp-project\Vagrantfile
Vagrant::Config.run do |config|
之后直接插入以下内容
config.vm.box = "lucid32"
config.vm.provision :puppet do |puppet|
puppet.manifests_path = File.expand_path("../manifests", __FILE__)
end
config.vm.forward_port 80, 8080
config.vm.share_folder "configs", "/configs", File.expand_path("../configs", __FILE__)
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant::Config.run do |config|
config.vm.box = "lucid32"
config.vm.provision :puppet do |puppet|
puppet.manifests_path = File.expand_path("../manifests", __FILE__)
end
config.vm.forward_port 80, 8080
config.vm.share_folder "configs", "/configs", File.expand_path("../configs", __FILE__)
# All Vagrant configuration is done here. The most common configuration
# options are documented and commented below. For a complete reference,
# please see the online documentation at vagrantup.com.
# Every Vagrant virtual environment requires a box to build off of.
# config.vm.box = "lucid32"
# (this is already done above, but if you have a box called 'base' which is an Ubuntu lucid32 then you can use: config.vm.box = "base". This info may be helpful if you get error: "The box 'base' could not be found.")
# The url from where the 'config.vm.box' box will be fetched if it
# doesn't already exist on the user's system.
# config.vm.box_url = "http://example.com/path/to/above.box"
# Boot with a GUI so you can see the screen. (Default is headless)
# config.vm.boot_mode = :gui
# Assign this VM to a host-only network IP, allowing you to access it
# via the IP. Host-only networks can talk to the host machine as well as
# any other machines on the same network, but cannot be accessed (through this
# network interface) by any external networks.
# config.vm.network :hostonly, "192.168.33.10"
# Assign this VM to a bridged network, allowing you to connect directly to a
# network using the host's network device. This makes the VM appear as another
# physical device on your network.
# config.vm.network :bridged
# Forward a port from the guest to the host, which allows for outside
# computers to access the VM, whereas host only networking does not.
# config.vm.forward_port 80, 8080
# Share an additional folder to the guest VM. The first argument is
# an identifier, the second is the path on the guest to mount the
# folder, and the third is the path on the host to the actual folder.
# config.vm.share_folder "v-data", "/vagrant_data", "../data"
# Enable provisioning with Puppet stand alone. Puppet manifests
# are contained in a directory path relative to this Vagrantfile.
# You will need to create the manifests directory and a manifest in
# the file base.pp in the manifests_path directory.
#
# An example Puppet manifest to provision the message of the day:
#
# # group { "puppet":
# # ensure => "present",
# # }
# #
# # File { owner => 0, group => 0, mode => 0644 }
# #
# # file { '/etc/motd':
# # content => "Welcome to your Vagrant-built virtual machine!
# # Managed by Puppet.\n"
# # }
#
# config.vm.provision :puppet do |puppet|
# puppet.manifests_path = "manifests"
# puppet.manifest_file = "base.pp"
# end
# Enable provisioning with chef solo, specifying a cookbooks path, roles
# path, and data_bags path (all relative to this Vagrantfile), and adding
# some recipes and/or roles.
#
# config.vm.provision :chef_solo do |chef|
# chef.cookbooks_path = "../my-recipes/cookbooks"
# chef.roles_path = "../my-recipes/roles"
# chef.data_bags_path = "../my-recipes/data_bags"
# chef.add_recipe "mysql"
# chef.add_role "web"
#
# # You may also specify custom JSON attributes:
# chef.json = { :mysql_password => "foo" }
# end
# Enable provisioning with chef server, specifying the chef server URL,
# and the path to the validation key (relative to this Vagrantfile).
#
# The Opscode Platform uses HTTPS. Substitute your organization for
# ORGNAME in the URL and validation key.
#
# If you have your own Chef Server, use the appropriate URL, which may be
# HTTP instead of HTTPS depending on your configuration. Also change the
# validation key to validation.pem.
#
# config.vm.provision :chef_client do |chef|
# chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
# chef.validation_key_path = "ORGNAME-validator.pem"
# end
#
# If you're using the Opscode platform, your validator client is
# ORGNAME-validator, replacing ORGNAME with your organization name.
#
# IF you have your own Chef Server, the default validation client name is
# chef-validator, unless you changed the configuration.
#
# chef.validation_client_name = "ORGNAME-validator"
end
$config_path = "/configs"
$vagrant_base_path = "/vagrant"
Exec { path => "/bin:/usr/bin:/usr/local/bin" }
group { "puppet": ensure => present }
exec { "apt-get update": command => "apt-get update" }
class apache {
exec { "enable-mod_rewrite":
require => Package["apache2"],
before => Service["apache2"],
command => "/usr/sbin/a2enmod rewrite"
}
package { "apache2":
ensure => present
}
service { "apache2":
ensure => running,
require => Package["apache2"]
}
}
class php {
package { "libapache2-mod-php5": ensure => present }
package { "php5": ensure => present }
package { "php5-cli": ensure => present }
package { "php5-dev": ensure => present }
package { "php5-mysql": ensure => present }
package { "php-pear": ensure => present }
exec { "pear upgrade":
command => "/usr/bin/pear upgrade",
require => Package["php-pear"],
}
}
class mysql {
package { "mysql-server":
require => Exec["apt-get update"],
ensure => present,
}
service { "mysql":
enable => true,
ensure => running,
require => Package["mysql-server"],
}
exec { "Set MySQL server root password":
require => Package["mysql-server"],
unless => "/usr/bin/mysqladmin -uroot -proot status",
command => "/usr/bin/mysqladmin -uroot password root",
}
}
include apache
include php
include mysql
Vagrantfile
和
default.pp
(以及其他Vagrant辅助文件和文件夹结构)可以从我的GitHub存储库VagrantVMSetups中找到,网址为:
https://github.com/therobyouknow/VagrantVMSetups
justlamp
文件夹-与此答案中使用的
lamp-project
内容相同。)
C:\Users\rdavis\lamp-project>vagrant up
vagrant halt
(而不是使用
vagrant destroy
删除虚拟机映像)将其关闭,则我希望此延迟是一次性的初始设置时间。我认为,VM的后续启动(使用
vagrant up
)应该更快。
vagrant up
后在主机上看到错误消息
There is a syntax error in the following Vagrantfile. The syntax error
message is reproduced below for convenience:
C:/Users/rdavis/lamp-project/Vagrantfile:6: invalid multibyte char (US-ASCII)
C:/Users/rdavis/lamp-project/Vagrantfile:6: syntax error, unexpected $end
Could not parse for environment production: Could not match ?/configs? at /tmp/vagrant-puppet/manifests/default.pp:1 on node lucid32.hsd1.ca.comcast.net.
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
There was an error executing the following command with VBoxManage:
["list", "hostonlyifs"]
vagrant up
后,主机上出现以下错误消息
←[1;35merr: /Stage[main]/Apache/File[/etc/apache2/sites-enabled/000-default]: Could not evaluate: Could not retrieve information from environment production source(s) file:/configs/000-default at /tmp
/vagrant-puppet/manifests/default.pp:11←[0m
000-default
的路径的引用。我只是删除了所有引用它的行和构造。
vagrant@lucid32:/etc/php5/cli$ a2enmod php5
Module php5 already enabled
vagrant@lucid32:/etc/php5/cli$ sudo apache2ctl restart
php.ini
/etc/php5/cli/php.ini
。
[default] The guest additions on this VM do not match the install version of
VirtualBox! This may cause things such as forwarded ports, shared
folders, and more to not work properly. If any of those things fail on
this machine, please update the guest additions and repackage the
box.
Guest Additions Version: 4.2.0
VirtualBox Version: 4.2.4
The box 'base' could not be found."
后看到
vagrant up
错误消息。
config.vm.box =
中包含语句
Vagrantfile
等的行(请参见上面的示例
Vagrantfile
),以确保它引用的是系统上实际存在的Vagrant框(操作系统安装映像)-issue命令
vagrant box list
看看您有哪些盒子。
lucid32
框。确保您的
config.vm.box =
中没有多余的
Vagrantfile
等语句。坦白:
config.vm.box = "base"
中有一个多余的
Vagrantfile
,实际上上面的几行已经完成了。我现在纠正了这个问题。
config.vm.box = "lucid32"
的过程,可能需要一段时间
vagrant up
以删除无关的
Vagrantfile
,而
config.vm.box = "base"
已经完成。如果遇到错误
config.vm.box = "lucid32"
,这将有所帮助。还添加了一个新的故障排除项目,解释该问题。
关于windows-7 - 获取在Vagrant VM(在Windows 7主机下)上运行的LAMP堆栈的完整说明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14608875/
由于我在一个团队中工作,我想让与 vagrant(和 Chef-solo)一起工作的过程尽可能顺利。 当团队中的某人更改厨师食谱、角色或其他任何内容时,我希望所有其他团队成员通过在下一个“Vagran
在学习了几天之后,我很高兴能够成功设置我的 VM 并运行 Laravel 起始页。在那里很开心:) 有人可以澄清“何时”使用 Vagrant 函数。我的问题: 如果我打算关闭我的电脑,你应该使用 ha
如果我更改了配置脚本或更糟的基本操作系统,有没有办法强制 vagrant 重新配置或重新下载基本框?我试图改变 config.vm.box和 config.vm.box_url ,但是 vagrant
默认情况下,vagrant将框提取到用户主驱动器-%HOMEDRIVE%\.vagrant.d\boxes。这是在网络位置上。虽然有利于可靠存储,但速度非常慢。 如何更改盒子的位置? 最佳答案 当然。
我的系统上有许多测试 Vagrant 盒,我正在整理它们。我安装了插件,例如vagrant plugin install vagrant-hostsupdater和vagrant plugin ins
我的系统上有许多测试 Vagrant 盒,我正在整理它们。我安装了插件,例如vagrant plugin install vagrant-hostsupdater和vagrant plugin ins
我在理解他们网站上的 vagrant 工作流程时遇到了一些麻烦。 我之前一直在做一个项目,经历了更改目录和设置 vagrant box 等的整个过程。我什至运行了 bundle install 来安装
我在一个盒子上有一些相当复杂的配置,之后我想以编程方式做等效于 vagrant reload 的事情。 . 我见过的最好的解决方案是 here ,但是该链接上的代码似乎在 Vagrant 1.4+ 上
我无法在 Windows 7 机器上在我们的公司代理后面执行 vagrant up(或 vagrant add)。我尝试过使用和不使用 http_proxy/https_proxy 环境变量。我尝试将
是否可以将配置脚本中的值返回给 vagrant? response = config.vm.provision( "shell", path: "script.sh" ) if response =
这两个 Vagrant 插件有什么区别?我正在使用 vagrant-hostmanager,它可以更新主机上的/etc/hosts 文件,以及 guest 机器上的文件,支持多机 vagrant 设置
我正在使用vagrant和ansible来配置虚拟机,并且工作正常。这个可笑的剧本克隆了一个git repo,安装了它并运行了一个服务守护进程。 我还希望有一个无所事事的命令,该命令执行一个单独的“更
在浏览 Vagrant 教程时,我看到了两种在主机和 guest 计算机之间共享文件夹的选项 - 共享文件夹和同步文件夹。它们之间有什么区别? 或者,在 Vagrant 2 中,同步文件夹是共享文件夹
我在 Vagrant 中遇到同步文件夹的问题。我的配置非常简单: Vagrant.configure(2) do |config| config.vm.box = "ubuntu/xenial64
我正在尝试提供一个主-主MySQL对,并且只有它们都启动时才能正确配置它们。 Vagrant.configure("2") do |config| web.vm.box = "centos/7"
我已经在目录D:\vagrant\precise32\02-lamp\中执行了以下命令(在Windows中,使用Git Bash) $ vagrant box add precise32 http:/
尝试使用 Vagrant 的安装程序在 Windows 7 X64 上安装 Vagrant - vagrant_1.7.0.msi 安装正常,但无法使用 vagrant。在任何命令上,例如 vagra
我想禁用VirtualBox Guest Additions。我不会将它们用于文件夹同步等操作,对于我正在使用的盒子(例如centos / 7),无论如何它们都无法构建。有什么办法告诉流浪汉不要尝试在
我在 VirtualBox 上使用 Vagrant。昨天,我通过运行保存了我的项目的快照: $ vagrant snapshot save 'my-project-date-time' 今天,我对我想
我使用来自 vagrant init 的默认配置配置了 Vagrant (1.7.4)在 OS X (10.11.4) 上使用最新版本的 VirtualBox (5.0.16 r105871) 和最新
我是一名优秀的程序员,十分优秀!