Laravel Homestead 2.0 Adding New Sites - laravel

Homestead 2 is awesome, but I can't seem to get new sites to work without going through the following process.
I do homestead edit to setup the new site paths and domains etc
I edit hosts to set up the domain
I do homestead halt then homestead up to restart
This is when I think things should be working... but they don't. I have to run the additional step of
Running vagrant global-status getting the id and running vagrant provision <id>.
Everything works except running provision again wipes out all the databases! How do I add new sites without having to provision again?

Instead of step 3 use vagrant provision in your homestead directory (~/.composer/vendor/laravel/homestead/).
As I know Taylor is already planning a "provision" flag, until that you can feel free to use vagrant commands.

this works for me
homestead halt && homestead up --provision

Here is my ~/homestead/.Homestead.yaml file, it contains a configuration for two apps, one with HHVM enabled and one with HHVM disabled(default in homestead).
Homestead will create the database for you in MySQL and PostgreSQL server, when running homestead up.
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/Projects
to: /home/vagrant/Projects
sites:
- map: jobs.app
to: /home/vagrant/Projects/jobs/public
- map: messages.app
to: /home/vagrant/Projects/messages/web
hhvm: true
databases:
- jobs
- messages
variables:
- key: APP_ENV
value: local
You can now run:
$ homestead up
and then:
$ homestead ssh
and then run byobu(for tmux):
$ byobu
and cd into the project:
$ cd Projects/jobs
and run composer:
$ composer update

Related

Laravel Homestead and vagrant don't create the folder inside vagrant box

I use Laravel Homestead for one year it all was good before I had decided change php version.
Firstly I update vagrant. Secondly I executed all commands from updating guide
vagrant destroy
git fetch
git pull origin release
vagrant box update
vagrant up
After vagrant up I saw that my databases were not created and my folder was not mounted (http://joxi.ru/Vm66DpgF410M5m).
I tried to connet via vagrant ssh, but there is not folder "code"
My Homestead.yaml
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: /home/ubuntu/PhpstormProjects/fntr
to: /home/vagrant/code/fntr
schedule: true
sites:
- map: fntr.test
to: /home/vagrant/code/fntr/public
php: "7.4"
databases:
- homestead
- testing
- imports
- prod_copy
I tried use vagrant destroy && vagrant up. I also tried vagrant reload --provision.
I have found the same issues in google and github, but this advices (http://joxi.ru/52a53oGUEBZMZ2 and other) did not help me.
I have the latest versions of vagrant and homestead.
I think that schedule: true not belongs to folders but to sites, try to remove it and run vagrant reload --provision.
I have found solution. But I am not sure that it is solution exactly.
I just reinstalled laravel homestead. Yes, I deleted homestead folder and went via instalation tutorial again.
Then I pasted my old Homestead.yaml and init vagrant box again.
Note if you want to try this method do not forget copy all of your after.sh, homestead.yaml and other files which can be lost

Laravel homestead ignores features to be installed

I want to add Minio to my Homestead VM. I've added the features option to the homestead.yml file, but running vagrant reload --provision doens't change anything and visiting http://homestead:9600/ gives me a ERR_CONNECTION_REFUSED. What am I missing here?
---
ip: "192.168.10.10"
memory: 4096
cpus: 1
provider: virtualbox
name: ausbildungsportal
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: E:\programierung\ausbildungslink
to: /home/vagrant/code/ausbildungslink
- map: E:\programierung\uptimechecker
to: /home/vagrant/code/uptimechecker
sites:
- map: azubi.tested
to: /home/vagrant/code/uptimechecker/public
- map: help.tested
to: /home/vagrant/code/ausbildungslink/public
databases:
- homestead
- azubiportal
- ausbildungslink
features:
- minio: true
I tried it and it didn't work for me. Fixed it by updating to the latest version of homestead
composer require laravel/homestead
I've just faced the same issue, leaving my solution here just in case.
For each feature, a separate script is triggered to manage the installation.
E.g. for docker it is homestead/scripts/features/docker.sh.
Inside it is checking if the feature is already installed (may look slightly different depending on the version):
if [ -f /home/$WSL_USER_NAME/.homestead-features/docker ]
then
echo "docker already installed."
exit 0
fi
So, if the feature is not installed, but still ignored by the Homestead script, you can just delete the needed file inside the VM (e.g. /home/vagrant/.homestead-features/docker for docker feature, similar for other features).

Laravel homestead: "No input file specified"

This is the output I get when entering my local site.
I'm using Windows and running Homestead with Vagrant on it. This is my homestead.yaml file:
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: D:/web/laravel
to: /home/vagrant/code
sites:
- map: laravel.test
to: /home/vagrant/code/public
databases:
- laravel
# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar
# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp
As you see, I opted for a global homestead installation, in my user folder, mapping Laravel to a path in a secondary drive.
None of these solutions I found worked for me:
vagrant up --provision
vagrant provision
Any help appreciated!
My global Homestead installation did not work, but my per project installations are OK.
Per project set up is preferred; we are able to tweak each project independently if and when we need to.
I lost two weeks due to 'no iput file specified' (at global installation). Yet the per project process is easy.
The following video more than helped me: https://www.youtube.com/watch?v=rs2Hzx4qBm8
Further let me use terms "host" (the machine) and "guest" (Homestead virtual machine, VM).
This sure works as described with versions:
Ubuntu 18.04, Virtualbox 5.2.18, Vagrant 2.1.5, Composer 1.7.2 - host.
Laravel Homestead 7.17.0, Laravel Installer 2.0.1 (Laravel 5.7) - guest.
Have Vagrant, Virtual Box (you can install the two per https://laravel.com/docs/5.7/homestead), as well as Composer installed on the host,
cd where you wish to keep Laravel sites, then mkdir LaravelSites, cd LaravelSites and then
composer create-project --prefer-dist laravel/laravel petrTest (it takes time), to create the project (and add plenty packages), and then cd petrTest and ls to review it; I guess in this step I remember adding mbstring and perhaps one or two more packages per requests on terminal by hand (sudo apt install thePackage) for my first homestead project into my host,
composer require laravel/homestead --dev, to add homestead and yaml packages to the project,
vendor/bin/homestead, to run Homestead, so to install it into your project run vendor/bin/homestead make, and view your project (note you have just added Vagrantfile and mainly Homestead.yaml),
nano Homestead.yaml, review, and exit keeping it intact for your first project,
ssh-keygen -t rsa -C "madeUp#email.com", Enter, file (keep_suggested_file): Enter, Overwrite the current file?: y, passphrase: Enter, passphrase again: Enter,
vagrant up (it takes time and computing resources), then vagrant ssh to switch to your guest (VM), cd code, then ls; and in /home/vagrant/code of your guest you can see those same files that are in /home/petr/LaravelSites/petrTest of your host (the two directories are synced),
logout to leave the guest for the host, sudo nano /etc/hosts, then append 192.168.10.10 homestead.test to the bottom and make sure to Write Out the changes. Then in the browser: homestead.test, Enter. You should see the Laravel web.
Alternatively you can follow the nice and easy video, too.

Laravel Homestead (Windows)

Today I have been trying to install the Laravel library together with Laravel Homestead.. But I can't seem to get it working.
The first thing, Laravel documentation tells you to do: composer global require "laravel/homestead=~2.0", but it didn't work.
So I searched the internet some and found: composer global require "laravel/homestead=~3.0", which actually worked.
But now when I try to run the homestead command in my command line, it gives me this: http://prntscr.com/9perhj, that's the only thing it's giving me.
I have added the directory to my path variable.
I hope someone can help me.
Thanks in advance!
Homestead itself command will return this expected screen. You would need to pass the command you want to run.
At first, run homestead init so that it will create the Homestead.yaml configuration file
This is an old question but I thought I'd put up my answer since it took me multiple tries to get it right and I documented the process while I was doing it so I wouldn't have such a hard time in the future.
Note: You should NOT have NginX, PHP, MySQL, etc. installed on your machine. The Vagrant Homestead virtual box provides all of this functionality. I had some issues where I had NginX and MySQL on my machine and it was connecting to my local machine's MySQL when it should be connecting to the virtual box's MySQL.
Without further ado, this is how I set it up for my Windows 7 machine:
Prerequisites:
VirtualBox:
https://www.virtualbox.org/wiki/Downloads
Vagrant:
https://www.vagrantup.com/downloads.html
Git Bash: A terminal that feels like a Linux terminal. You can do everything you do on an Ubuntu server in Windows.
https://git-scm.com/downloads
Putty: Telnet client that I used for connecting to my VirtualBox Homestead server
http://www.putty.org/
create project folder
open terminal in project folder (something like E:\Projects\Vagrant)
type 'vagrant box add laravel/homestead'
type 'git clone https://github.com/laravel/homestead.git Homestead'
This installs Homestead in the designated project folder.
type 'cd Homestead'
type 'bash init.sh' OR 'init.bat'
This creates a folder in:
C:\Users\USERNAME\.homestead
which has the file:
Homestead.yaml
If you open the Homestead.yaml file it should look something like this:
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/Code
to: /home/vagrant/Code
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
databases:
- homestead
The '~/' folder is the equivalent of:
C:\Users\USERNAME\
Change:
folders:
- map: ~/Code
to: /home/vagrant/Code
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
To:
folders:
- map: E:/Projects/Vagrant/Homestead
to: /home/vagrant/Homestead
sites:
- map: WEBSITE.dev
to: /home/vagrant/Homestead/Laravel/public
goto C:\Windows\System32\drivers\etc
open the file 'hosts' in a text editor
add '192.168.10.10 WEBSITE.dev' (the IP address should match the IP address in the Homestead.yaml file)
open a terminal in E:/Projects/Vagrant/Homestead folder
type 'ssh-keygen -t rsa -C "USERNAME#gmail.com"'
This creates the folder C:\Users\USERNAME.ssh and sets up your SSH Key
type 'vagrant init laravel/homestead'
type 'vagrant up'
You should see Homestead running in VirtualBox
You can use 'vagrant destroy' to kill it when done
Use putty.exe to log in to Homestead
IP Address: 127.0.0.1
Port: 2222
login as: vagrant
password: vagrant
Everything is now ready

My Laravel Homestead doesn't work

I'm having problem to understand how to run my website using vagrant and Laravel Homestead environment.
I added laravel/homestead box without any problems. Then I ran vagrant init laravel/homestead and it worked too.
I managed to create Homestead.yaml and here's what it contains:
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/www
to: /home/vagrant/code
sites:
- map: project.dev
to: /home/vagrant/code/project
databases:
- homestead
variables:
- key: APP_ENV
value: local
vagrant up runs correctly, but I don't know how to access my website. I added 192.168.10.10 project.dev to my /etc/hosts.
I want to keep my project at ~/www/project. First thing that I didn't understand from the docs is, what is the folder at sites / map / to setting supposed to be? My local folder or a folder in the virtual environment?
The next thing I don't understand is why when I do vagrant ssh and then ls, I don't see any files, even though there's index.php at my ~/www/project. I thought they are going to be synchronized automatically.
When I go to project.dev in the browser, it timeouts. I tried project.dev:8000 as well and 192.168.10.10, but nothing works.
Please help me.
You are forgetting the folders parameter, also your indentation should be with spaces and not with tabs, thats the way yaml works, everything else seems to be fine but try to make it with something similar to this one
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/www/project
to: /home/vagrant/code
sites:
- map: project.dev
to: /home/vagrant/code/project/public
databases:
- homestead
variables:
- key: APP_ENV
value: local
you're missing the folder share settings in you're homestead.yaml file.
Try adding
folders:
- map: ~/www/project
to: /home/vagrant/code
Look at the docs here
http://laravel.com/docs/5.1/homestead#configuring-homestead under Configuring Shared Folders
I think this is the common issue that someone new to Laravel Homestead is facing.
Laravel Homestead basically provides an image that gets a VM ready for Laravel development. The yaml config on "sites" is basically use to configure Nginx - it does not install a Laravel project on the path specified.
So for a new homestead VM, you just have to ssh into your Homestead VM, and type and run this:
composer global require "laravel/installer=~1.1"
Once done, on you /home/vagrant/code folder (in the VM, not your host), type and run this:
laravel new project
Where the "project" is the name given to your new project. Since your yaml is already configured to "project", the above command will work fine. Obviously, this is clearly not the only way to get Laravel as you can use composer create-project to install Laravel directly.
Once done, you should be able to visit http://project.dev on your host's browser, if your host file is configured with this added entry:
192.168.10.10<tab>project.dev
Alternatively, you can configure your host file to be
127.0.0.1<tab>project.dev
Which you can then view on your host's browser via http://project.dev:8000
Hope the above explains clear enough. Enjoy!

Resources