也许这只是因为它是一个星期五而且是在关闭时间之后但是我已经坚持了一个小时并且不能完全正常工作。我正在使用Vagrant和我们正在构建的应用程序 - git repo包含Vagrantfile
和Laravel应用程序。我们有/deploy
,/tests
和/src
目录;实际的Laravel框架位于/src
。在我的本地计算机上,我已经设置了一个VirtualHost,让我通过浏览localhost:9000
来访问该应用程序:
Listen 8081
<VirtualHost *:8081>
DocumentRoot "/Application/mamp/apache2/htdocs/myapp/src/public"
ServerName localhost
<Directory "/Application/mamp/apache2/htdocs/myapp/src/public">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
像魅力一样工作。所以我将相关位复制到我的Vagrant设置中:
Listen 8081
<VirtualHost *:8081>
DocumentRoot "/var/www/src/public"
ServerName localhost
<Directory "/var/www/src/public">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
我的Vagrantfile
看起来像这样:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "hashicorp/precise64"
config.vm.provision :shell, :path => "vagrant/main.sh"
config.vm.network "private_network", ip: "192.168.100.101", virtualbox__intnet: true
end
我的vagrant/main.sh
文件如下所示:
#!/usr/bin/env bash
apt-get update
echo mysql-server-5.5 mysql-server/root_password password notthepassword | debconf-set-selections
echo mysql-server-5.5 mysql-server/root_password_again password notthepassword | debconf-set-selections
apt-get install -y mysql-common mysql-server mysql-client
apt-get install -y apache2
apt-get install -y php5 libapache2-mod-php5
apt-get install -y php5-mysql php5-curl php-pear php5-imagick php5-mcrypt php5-memcache
apt-get install -y vim
a2enmod rewrite
sed -i -e 's/AllowOverride None/AllowOverride All/g' /etc/apache2/sites-available/default
cp /vagrant/vagrant/bgs /etc/apache2/sites-available
a2ensite bgs
/etc/init.d/apache2 restart
rm -rf /var/www
ln -fs /vagrant /var/www
一旦它全部启动并运行,我就可以ping 192.168.100.101
。但它没有提供任何HTML - 如果我在Chrome浏览器中浏览到该地址,则会收到“无数据接收”错误。如果我转到192.168.100.101:8081
,则说Chrome无法找到该地址。如何配置所有内容以便一起玩,让我克隆我的仓库,运行vagrant up
,然后浏览到192.168.100.101:8081
并查看我的应用程序?
(另外:我甚至在那里添加了一个端口转发线,从guest:8081
转到host:8081
。这产生了一个HTTP 500错误(“服务器遇到内部错误或配置错误,但无法完成你的请求。“)。不确定这是否有进展。
答案 0 :(得分:1)
事实证明,有很多事情同时发生:
virtualbox__intnet
指令错了。不知何故。将整个Vagrantfile
行更改为:config.vm.network "private_network", :ip => "192.168.100.101", :auto_network => true
这是我的最终设置,以防其他人有这个确切的具体问题:
Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "puppetlabs/ubuntu-13.10-64-puppet"
config.vm.provision :shell, :path => "vagrant/main.sh"
config.vm.network "private_network", :ip => "192.168.100.101", :auto_network => true
end
main.sh:
#!/usr/bin/env bash
apt-get update
echo mysql-server-5.5 mysql-server/root_password password f6b6rWixbu99CtQ | debconf-set-selections
echo mysql-server-5.5 mysql-server/root_password_again password f6b6rWixbu99CtQ | debconf-set-selections
apt-get install -y mysql-common mysql-server mysql-client apache2 php5 libapache2-mod-php5 php5-mysql php5-curl php-pear php5-imagick php5-mcrypt php5-memcache php5-json
a2enmod rewrite
sed -i -e 's/AllowOverride None/AllowOverride All/g' /etc/apache2/sites-available/default
cp /vagrant/vagrant/app.conf /etc/apache2/sites-available
a2ensite app.conf
#fix for ubuntu 13.10: http://stackoverflow.com/questions/19446679/mcrypt-not-present-after-ubuntu-upgrade-to-13-10
ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
php5enmod mcrypt
#/fix
#json licensing snafu: http://stackoverflow.com/questions/18239405/php-fatal-error-call-to-undefined-function-json-decode
php5enmod json
#/snafu
#may need to be done on the host OS, not the guest: http://stackoverflow.com/questions/17954625/services-json-failed-to-open-stream-permission-denied-in-laravel-4
chmod -R 0777 /vagrant/src/app/storage
rm -rf /var/www
ln -fs /vagrant/src/public /var/www
/etc/init.d/apache2 restart
复制的Apache站点配置:
<VirtualHost *:80>
DocumentRoot "/var/www"
ServerName localhost
<Directory "/var/www">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
(顺便说一句,虽然这个配置与默认的apache配置非常相似,但我发现为我正在处理的任何项目创建配置更简单,更具可扩展性,如果我需要扩展选项,一个未来的项目,我可以。)