best-it / shopware-vagrant
Vagrant setup mainly used for shopware (5)
This package is auto-updated.
Last update: 2024-10-11 15:34:40 UTC
README
Installation
Virtualbox and Vagrant (min. Version 2.0) have to be installed on your local machine:
Vagrant installation for Debian / Ubuntu
$ wget https://releases.hashicorp.com/vagrant/2.0.1/vagrant_2.0.1_x86_64.deb
$ sudo dpkg -i vagrant_2.0.1_x86_64.deb
Usage
Composer
Clone the repository to your local machine.
$ composer require --dev best-it/shopware-vagrant
Generate a Vagrantfile that looks like this and modify it to your needs:
shopware_vagrant = File.expand_path('./vendor/best-it/shopware-vagrant/Vagrantfile')
load shopware_vagrant
confDir = $confDir ||= File.expand_path(File.dirname(__FILE__))
afterScriptPath = confDir + "/after.sh"
customizationScriptPath = confDir + "/user-customizations.sh"
Vagrant.configure("2") do |config|
config.vm.synced_folder "./shopware", "/home/vagrant/www",
type: "rsync",
rsync__exclude: [
"/.env",
"/engine/Library",
"/var/*",
"/web/*",
"/media/.htaccess",
"/.htaccess",
"/themes/Backend",
"/themes/Frontend/Bare",
"/themes/Frontend/Responsive",
"/themes/Frontend/Session/node_modules",
"/Plugins/Local/Backend/SwagImportExport/psh",
"/custom/plugins/SwagPaymentPayPalUnified/psh"
]
config.ssh.forward_agent = true
if File.exist? afterScriptPath then
config.vm.provision "shell", path: afterScriptPath, privileged: false, keep_color: true
end
if File.exist? customizationScriptPath then
config.vm.provision "shell", path: customizationScriptPath, privileged: false, keep_color: true
end
end
userVagrantfilePath = confDir + "/user-vagrantfile"
load userVagrantfilePath if File.exists?(userVagrantfilePath)
Generate an ansible folder
$ mkdir ansible
Add a playbook that looks like this:
---
- name: apply common configuration to all nodes
hosts: all
roles:
- role: '../vendor/best-it/shopware-vagrant/ansible/roles/common'
- role: '../vendor/best-it/shopware-vagrant/ansible/roles/apache'
- role: '../vendor/best-it/shopware-vagrant/ansible/roles/mysql'
- role: '../vendor/best-it/shopware-vagrant/ansible/roles/adminer'
- role: '../vendor/best-it/shopware-vagrant/ansible/roles/ioncube'
- role: '../vendor/best-it/shopware-vagrant/ansible/roles/composer'
- role: '../vendor/best-it/shopware-vagrant/ansible/roles/nodejs'
- role: '../vendor/best-it/shopware-vagrant/ansible/roles/sw-cli-tools'
- role: '../vendor/best-it/shopware-vagrant/ansible/roles/grunt'
Without composer
Clone the repository to your local machine.
$ git clone https://github.com/shopwareLabs/shopware-vagrant
$ cd shopware-vagrant
Boot up your vagrant virtual machine:
$ vagrant up
The first boot may take a while, so feel free to get a cup of coffee.
Your machine will be available at http://192.168.33.10/ All required tools like the LAMP stack are already installed.
- Adminer (DB-Administration): http://192.168.33.10/adminer.php
- MySQL user:
root
, password:shopware
To SSH into the created VM:
$ vagrant ssh
If you use Putty the ssh configuration can be obtained via:
$ vagrant ssh-config
To reprovision your machine:
$ vagrant provision
Access files on Host machine
To start local development, it is recommended to sync the source shopware folder to a local folder. To do this, uncomment one of the config.vm.synced_folder lines in the Vagrantfile file.
#config.vm.synced_folder "../src", "/home/vagrant/www/shopware", create: true, type: "smb"
#config.vm.synced_folder "../src", "/home/vagrant/www/shopware", create: true, type: "nfs"
#config.vm.synced_folder "../src", "/home/vagrant/www/shopware", create: true;
For example, for MacOS:
config.vm.synced_folder "src", "/home/vagrant/www/shopware", create: true, type: "nfs"
After editing the vagrant file, make sure to reload your instance.
$ vagrant reload
Troubleshooting
- Error message "The 'ansible_local' provisioner could not be found.":
Make sure vagrant is at least at version 2.0:
$ vagrant -v
-
Unable to mount directory (MacOS), given error message:
Got different reports about installed GuestAdditions version: Virtualbox on your host claims: 5.0.18 VBoxService inside the vm claims: 6.0.8 Going on, assuming VBoxService is correct..."
Make sure GuestAdditions are same versions:
$ vagrant vbguest --do install
$ vagrant reload
Change PHP Version
The following PHP Versions are installed by default:
- PHP 7.0
- PHP 7.1
- PHP 7.2
Call one of the following commands to change the PHP Version:
$ changephp_7.0
$ changephp_7.1
$ changephp_7.2
This will change the PHP Version used by the Apache webserver as well as the Version of the php
command.
You can also call the PHP versions directly using their full path
$ /usr/bin/php7.0 -v
$ /usr/bin/php7.1 -v
$ /usr/bin/php7.2 -v
Installing Shopware
SSH first into your VM:
$ vagrant ssh
Call the install_shopware
script:
$ install_shopware
This will download the latest git version of shopware and install it into /home/vagrant/www/shopware
.
Download test images:
$ cd /home/vagrant/www/shopware
$ wget -O test_images.zip http://releases.s3.shopware.com/test_images_since_5.1.zip
$ unzip test_images.zip
Configure your online store in a web browser with the credentials demo/demo:
You can then access your storefront at:
- Front-end: http://192.168.33.10/shopware/
Notes for Arch Linux users
$ sudo pacman -S virtualbox ansible net-tools nfs-utils
$ sudo modprobe -a vboxdrv vboxnetadp vboxnetflt
$ sudo systemctl start nfs-server
License
The MIT License (MIT). Please see License File for more information.