vagrant provision : installing LAMP throwing errors - php

I am using ubuntu 13.04 machine,
I have installed vagrant properly.
Below are the versions
vagrant : Vagrant 1.5.1
Virtual box : 4.2.10_Ubuntur84101
I am running a shell script file to install Apache, MySQL and Php.
Apache gets installed properly but going further gives error. some special characters are getting displayed on terminal.
Below is my vagrant file content
# -*- 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|
# 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 = "hashicorp/precise32"
config.vm.provision :shell, :path => "bootstrap.sh"
# 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://domain.com/path/to/above.box"
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# If true, then any SSH connections made will enable agent forwarding.
# Default value: false
# config.ssh.forward_agent = true
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Don't boot with headless mode
# vb.gui = true
#
# # Use VBoxManage to customize the VM. For example to change memory:
# vb.customize ["modifyvm", :id, "--memory", "1024"]
# end
#
# View the documentation for the provider you're using for more
# information on available options.
# 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 hashicorp/precise32.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 = "site.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
here is my bootstrap.sh
#!/usr/bin/env bash
touch track_bootstrap_file.txt
echo -e "\n\n\t\t------ Initial installations -------\n\n"
echo -e "\n\n\t\tStep 1 of 5 ===> Updating existing packages <===\n\n"
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password pass#123'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password pass#123'
apt-get update
echo "step 1 of 5 - packages updated" > track_bootstrap_file.txt
echo -e "\n\n\t\tStep 2 of 5 ===> Installing mysql server <===\n\n"
sudo apt-get -y install mysql-server-5.5 php5-mysql
echo "step 2 of 5 - mysql server installed" >> track_bootstrap_file.txt
echo -e "\n\n\t\tStep 3 of 5 ===> Installing Apache server <===\n\n"
apt-get install -y apache2
echo "step 3 of 5 - apache server installed" >> track_bootstrap_file.txt
echo -e "\n\n\t\tStep 4 of 5 ===> Installing php5 <===\n\n"
apt-get install -y php5 libapache2-mod-php5
service apache2 restart
echo "step 4 of 5 - php5 installed" >> track_bootstrap_file.txt
echo -e "\n\n\t\tStep 5 of 5 ===> Restarting apache2 <===\n\n"
service apache2 restart
echo "step 5 of 5 - Restarted apache2 server successfully" >> track_bootstrap_file.txt
echo -e "\n\n\n\t\t----- Wohoo... Your machine configuration is ready now. -------\n\n"
echo "All operations from bootstrap.sh executed successfully" >> track_bootstrap_file.txt
Thanks in advance.

The problem is not within vagrant or the provisioning itself but in the way you try to install phpmyadmin. As the shell script runs without any interactive shall attached, the question phpmyadmin tries to ask while installing cannot be answered, messing up your installation. It should work if you put
export DEBIAN_FRONTEND=noninteractive
at the beginning of your shell script.

Related

Upgrading PHP to 5.5.9

There is an open-source project I want to install on my server, Grav, but it requires PHP 5.5.9. I currently have PHP 5.4.16 installed on a CentOS 7 server running on NGINX. Actually, it is PHP-FPM. So my question is what is the easiest and cleanest way to achieve this?
I have read many articles online regarding this and each one seems to have a different approach such as uninstalling the current version of PHP and reinstalling from scratch.
In order to get a more modern version of PHP you need to use an alternative repo. There are a few out there to choose from, that have traditionally packaged up a newer version of LAMP stack components, like Remi, but for the Centos7 vagrant I'm currently using, I went with webtatic.
You should simply follow the instructions for setting up the alternative repo with yum. Currently that involves:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Once installed do a yum search php and you'll find php versions 5.5, 5.6, 7.0 and 7.1 to choose from.
Instead of yum install php you're going to do something like yum install php56w.
For example on my VM, this is what I have for php:
[vagrant#localhost:~]$ rpm -qa | grep php
php56w-5.6.31-1.w7.x86_64
php56w-process-5.6.31-1.w7.x86_64
php56w-opcache-5.6.31-1.w7.x86_64
php56w-xml-5.6.31-1.w7.x86_64
php56w-pear-1.10.4-1.w7.noarch
php56w-common-5.6.31-1.w7.x86_64
php56w-cli-5.6.31-1.w7.x86_64
php56w-mbstring-5.6.31-1.w7.x86_64
php56w-pdo-5.6.31-1.w7.x86_64
php56w-mysqlnd-5.6.31-1.w7.x86_64
php56w-fpm-5.6.31-1.w7.x86_64
php56w-gd-5.6.31-1.w7.x86_64
You will need to uninstall your current php version, so this is an involved operation, and you want to have done a dry run, and be confident that you know what you're doing.
As for confidence that something won't break, with Vagrant/Virtualbox/Docker etc., there is no excuse for not testing this out in a VM first.
Not to mention that these are foundation tech for state of the art development these days.
Here's a quick and simple Vagrantfile for a vanilla Centos7 box you can have up and running (assuming you get Vagrant installed and working).
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "centos/7"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 8080, host: 8080
# config.vm.network "forwarded_port", guest: 80, host: 80
# config.vm.network "forwarded_port", guest: 3306, host: 3306
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: "192.168.20.20"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
config.vm.synced_folder "./data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
# such as FTP and Heroku are also available. See the documentation at
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
# config.push.define "atlas" do |push|
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
# end
# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
end

Fresh install of Laravel homestead, edited Vagrantfile renders "Unexpected end" error

I am working away on my first website using the Laravel framework and am attempting top install Homestead on OS X el captin. after failing to sync my shared folders on my host and guest machine, instead of continuing to fiddle with the Homestead.ymal file, I decided to add the shared folders to the Vagrantfile manually:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "laravel/homestead"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
# such as FTP and Heroku are also available. See the documentation at
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
# config.push.define "atlas" do |push|
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
# end
# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# sudo apt-get update
# sudo apt-get install -y apache2
# SHELL
end
After making the changes, when I run vagrant up I get the following error message;
There is a syntax error in the following Vagrantfile. The syntax error message is reproduced below for convenience:
/Users/tommorison/vendor/laravel/homestead/Vagrantfile:71: syntax
error, unexpected end-of-input, expecting keyword_end
I am not understanding why i am getting this error/ i just changed the synced folders
I found a solution to this error. just edit the vagrantfile in the homestead directory and the folders would mount to vagrant. make sure there are no whitesoaces in your homestead.ymal file.

How to set Vagrant using virtual Box?

I am new to vagrant, I am trying to setup a project using vagrant/virtual box, What I have done till now.
1- I have installed vagrant 1.0.1
2- i have installed virtual box on checking its version which shows -- 4.1.44_Ubuntu
3- Now I have added the virtual box in project directory using below command (Although I needed the LAMP stack for my project on ubuntu) and my system config is (ubuntu 12.04 insatlled using wubi installer on widows 7 )--
1- vagrant box add hashicorp/precise32 http://files.vagrantup.com/precise32.box
2- vagrant init
3- vagrant up hashicorp/precise32
Then it starts downloading the file from specified url (for first time it seems ok, But for all time it repeats the same process).
Am I missing some steps for congiuring it using vagrant ?
Any help would be appreciated.
Here is vagrant file.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant::Config.run do |config|
# 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 = "hasicorp/precise32"
# 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://files.vagrantup.com/precise32.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 hasicorp/precise32.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 = "hasicorp/precise32.pp"
# end
# Enable provisioning with chef solo, specifying a cookbooks path (relative
# to this Vagrantfile), and adding some recipes and/or roles.
#
# config.vm.provision :chef_solo do |chef|
# chef.cookbooks_path = "cookbooks"
# 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
If you're using one of the Vagrant Cloud boxes, then you don't need to specify a box URL. And 'hashicorp' is misspelled in your Vagrantfile. It should be...
config.vm.box = "hashicorp/precise32"
If you seem to be in a non-working state for some reason, just vagrant destroy your current box and vagrant up again. I also highly recommend downloading and installing the latest version of Vagrant (1.8.1 currently). Hope this helps.

How to config xdebug with Vagrant and PhpStorm: Exit code 255?

I am trying to configure xdebug to work with my Vagrant VM in PhpStorm. I tried using this guide but to no avail.
I've already got xdebug installed on my Vagrant box and the box is also registered and configured with PhpStorm
I have tried setting a break point and running the debugger on this basic test function with Laravel:
Route::get('/test', function()
{
$a = [1, 2, 3, 4, 5];
array_pop($a);
return 'hello';
});
But it fails with the following error message:
vagrant://C:\Users\johndoe\Desktop\myproject/usr/bin/php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=10.0.2.2 /vagrant/app/routes.php
PHP Fatal error: Class 'Route' not found in /vagrant/app/routes.php on line 6
PHP Stack trace:
PHP 1. {main}() /vagrant/app/routes.php:0
Process finished with exit code 255
I also tried running it on a function in one of my controllers but it gives a similar error
vagrant://C:\Users\johndoe\Desktop\myproject/usr/bin/php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=10.0.2.2 /vagrant/app/controllers/MyController.php
PHP Fatal error: Class 'BaseController' not found in /vagrant/app/controllers/MyController.php on line 15
PHP Stack trace:
PHP 1. {main}() /vagrant/app/controllers/MyController.php:0
Process finished with exit code 255
/etc/php5/conf.d/20-xdebug.ini:
zend_extension=/usr/lib/php5/20100525/xdebug.so
xdebug.remote_enable = on
xdebug.remote_connect_back = on
xdebug.idekey = "vagrant"
Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Config Github Settings
github_username = "johndoe"
github_repo = "myrepo"
github_branch = "master"
# Server Configuration
# Set a local private network IP address.
# See http://en.wikipedia.org/wiki/Private_network for explanation
# You can use the following IP ranges:
# 10.0.0.1 - 10.255.255.254
# 172.16.0.1 - 172.31.255.254
# 192.168.0.1 - 192.168.255.254
server_ip = "192.168.22.10"
server_memory = "384" # MB
server_timezone = "UTC"
# HHVM Options
hhvm_use_fastcgi = "false" # Use HHVM as FastCGI (over php-fpm)
hhvm_over_php = "false" # Symlink HHVM to PHP, so calls to PHP run via HHVM
# PHP Options
php_version = "previous" # Options: latest|previous|distributed For 12.04. latest=5.5, previous=5.4, distributed=5.3
public_folder = "" # If installing Symfony or Laravel, leave this blank to default to the framework public directory
laravel_version = "4.1.27"
laravel_root_folder = "/vagrant/laravel" # Where to install Laravel. Will `composer install` if a composer.json file exists
symfony_root_folder = "/vagrant/symfony" # Where to install Symfony.
Vagrant.configure("2") do |config|
# Set server to Ubuntu 12.04
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
# Create a hostname, don't forget to put it to the `hosts` file
# This will point to the server's default virtual host
# TO DO: Make this work with virtualhost along-side xip.io URL
config.vm.hostname = "vaprobash.dev"
# Create a static IP
config.vm.network :private_network, ip: server_ip
# If using VirtualBox
config.vm.provider :virtualbox do |vb|
# Set server memory
vb.customize ["modifyvm", :id, "--memory", server_memory]
# Set the timesync threshold to 10 seconds, instead of the default 20 minutes.
# If the clock gets more than 15 minutes out of sync (due to your laptop going
# to sleep for instance, then some 3rd party services will reject requests.
vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000]
end
# If using VMWare Fusion
config.vm.provider "vmware_fusion" do |vb, override|
override.vm.box_url = "http://files.vagrantup.com/precise64_vmware.box"
# Set server memory
vb.vmx["memsize"] = server_memory
end
# If using Vagrant-Cachier
# http://fgrehm.viewdocs.io/vagrant-cachier
if Vagrant.has_plugin?("vagrant-cachier")
# Configure cached packages to be shared between instances of the same base box.
# Usage docs: http://fgrehm.viewdocs.io/vagrant-cachier/usage
config.cache.scope = :box
config.cache.synced_folder_opts = {
type: :nfs,
mount_options: ['rw', 'vers=3', 'tcp', 'nolock']
}
end
####
# Base Items
##########
# Provision Base Packages
config.vm.provision "shell", path: "https://raw.github.com/#{github_username}/#{github_repo}/#{github_branch}/scripts/base.sh"
# Provision PHP
config.vm.provision "shell", path: "https://raw.github.com/#{github_username}/#{github_repo}/#{github_branch}/scripts/php.sh", args: [php_version, server_timezone]
####
# Web Servers
##########
# Provision Apache Base
config.vm.provision "shell", path: "https://raw.github.com/#{github_username}/#{github_repo}/#{github_branch}/scripts/apache.sh", args: [server_ip, public_folder]
####
# Frameworks and Tooling
##########
# Provision Composer
config.vm.provision "shell", path: "https://raw.github.com/#{github_username}/#{github_repo}/#{github_branch}/scripts/composer.sh", privileged: false, args: composer_packages.join(" ")
# Provision Laravel
#config.vm.provision "shell", path: "https://raw.github.com/#{github_username}/#{github_repo}/#{github_branch}/scripts/laravel.sh", privileged: false, args: [server_ip, laravel_root_folder, public_folder, laravel_version]
end
PhpStorm version: 8.0.2
It seems like xdebug is not able to read any of the Laravel classes/facades. What can I do to get this fixed so I can use xdebug?

Cant load index.php page with apache using vagrant and virtualbox

This is my vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# 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 = "ubuntu32"
config.vm.provision :shell, :path => "vagrant/inicio.sh"
# 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://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box"
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
config.vm.network :forwarded_port, guest: 80, host: 8085, auto_correct: true
config.vm.provider "virtualbox" do |v|
v.name = "funcook"
end
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network :private_network, ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network :public_network
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider :virtualbox do |vb|
# # Don't boot with headless mode
# vb.gui = true
#
# # Use VBoxManage to customize the VM. For example to change memory:
# vb.customize ["modifyvm", :id, "--memory", "1024"]
# end
#
# View the documentation for the provider you're using for more
# information on available options.
# 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 = "init.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
And this is the content of inicio.sh:
#!/usr/bin/env bash
if [ ! -f ~/initial_provosioning_done ];
then
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y -q lamp-server^ php5-gd
sed -i 's,www-data,vagrant,g' /etc/apache2/envvars
sed -i 's,/var/www,/vagrant/www,g' /etc/apache2/sites-available/default
sed -i 's,AllowOverride None,AllowOverride All,g' /etc/apache2/sites-available/default
mysqladmin -u root password root
mysql -uroot -proot < /vagrant/bd/script.sql
rm -r /var/lock/apache2
a2enmod rewrite
service apache2 restart
touch ~/initial_provosioning_done
fi
This is how I am starting the VM:
minirafa:beta.funcook.com TONIWEB$ vagrant reload
[default] Attempting graceful shutdown of VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 80 => 8085 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Mounting shared folders...
[default] -- /vagrant
minirafa:beta.funcook.com TONIWEB$
The thing is that:
Chrome will log:
ERR_EMPTY_RESPONSE
and:
minirafa:~ TONIWEB$ curl 'http://localhost:80'
curl: (7) couldn't connect to host
Or:
minirafa:~ TONIWEB$ curl 'http://localhost:8085'
curl: (52) Empty reply from server
minirafa:~ TONIWEB$
Usually this settings work for me with other projects,
Any idea what could I try next?
-EDIT-
Also:
minirafa:beta.funcook.com TONIWEB$ curl -v http://localhost:8085
* About to connect() to localhost port 8085 (#0)
* Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 8085 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8y zlib/1.2.3
> Host: localhost:8085
> Accept: */*
>
* Empty reply from server
* Connection #0 to host localhost left intact
curl: (52) Empty reply from server
* Closing connection #0
minirafa:beta.funcook.com TONIWEB$
When you're trying to reach localhost on port 80 with curl, you're actually trying to reach the host machine (not the guest running in virtualbox/vagrant). So if the host doesn't run a webserver (on port 80), it's normal you get a couldn't connect to host message.
You should be trying to reach localhost on port 8085, because that's the port you're forwarding to port 80 on the guest machine. And that apparently tells you Empty reply from server...
I cannot say much about this, unless I can get some additional info about the webserver running on the guest:
Is it running properly? (check the error-logs)
Does it respond to requests from inside the guest machine?
Does the request from the host reach the webserver? (check the access-logs)
If so, does the webserver encounter errors? (check the error-logs)
If not, is there a firewall is running on the guest, dropping requests to port 80?
PS: Just a tip: You could create a private network on the guest by enabling this line:
config.vm.network :private_network, ip: "192.168.33.10"
This way you can reach the webserver at 192.168.33.10:80, and won't need to forward any ports to it.

Categories