Vagrant VCCW Setup and Settings
How To Change Your PHP Settings on Ubuntu 14.04
Falls noch nicht gemacht: Install the vagrant-hostsupdater plugin. (Optional):
vagrant plugin install vagrant-hostsupdater
Dann:
vagrant box add vccw-team/xenial64
Dass muss nur einmal gemacht werden, da die Box dann lokal für spätere Verwendung gespeichert wird.
Projektverzeichnis anlegen und eine dieser beiden Dateien darin im Stammverzeichnis entpacken (kein Unterordner erlaubt):
Dann:
vagrant up
Die Standard-WordPress-Installation kann jetzt im Browser mit http://vccw.dev/ oder http://192.168.33.10/ angesehen werden.
Das Tool legt folgende Umgebungen an:
WordPress
Standardbenutzer
Benutzername: `admin`
Passwort: `admin`
MySQL
MySQL Host: 127.0.0.1
Benutzername: wordpress
oder root
Passwort: wordpress
Port: 3306
SSH
Host: vccw.dev
oder 192.168.33.10
Benutzername: vagrant
Passwort: vagrant
Port: 22
Mit vagrant ssh
kann man mit dem Terminal in die Box gehen und Dateien anlegen, löschen, ändern usw. Das ist ein gespiegeltes Verzeichnis, sodass man auch mit dem Finder lokal auf die Daten zugreifen kann.
VCCW ist konfiguriert, um WordPress Plugins, Themes oder Webseiten zu entwickeln. Es enthält viele anpassbare Variablen für die WordPress-Version (oder Beta Release), Sprache, Hostname, Unterverzeichnis, Administrative Referenzen, Standard-Plugins, Standard-Theme, Multisite, SSL und andere Optionen.
Kopiere die Standardkonfiguration in das Stammverzeichnis:
cp provision/default.yml site.yml
Hier ist eine Musterdatei site.muster.yml
: /Users/leo/Sites/vccwboxen/site.muster.yml
Dann ändere die site.yml
und starte vagrant up
.
VCCW hat eine Reihe von globalen Parametern, die alle mit virtuellen Maschinen funktionieren.
Sie können in der Datei ~/.vccw/config.yml
spezifiziert werden:
memory: 1024
cpus: 2
theme_unit_test: true
Beispiel Script
Shell Scripte können hinterlegt werden, die dann vor und nach dem Provisiong ausgeführt werden.
#!/usr/bin/env bash
set -ex
/usr/local/bin/wp --path=/var/www/wordpress plugin install contact-form-7 --activate
Dieses Script installiert und aktiviert das Plugin "Contact Form 7" mit WP-CLI.
Anpassen mit Ansible
Ansible kann auch genutzt werden.
provision-post.yml
startet nach dem Provisioning.
- hosts: all
become: yes
tasks:
- name: Ensure nginx is installed
apt: pkg=nginx state=latest
MailCatcher leitet alle WordPress-Emails zu MailCatcher um:
Besuche dazu http://vccw.dev:1080/ (oder eine andere individuelle Domain)
Im Vagrantfile
die URL (Standard ist http://192.168.33.10) für jede Box um z. B. einen Wert erhöhen (192.168.33.11), damit sie nicht mit bereits bestehenden Boxen kollidiert. Wenn z. B. 3 Webseiten gleichzeitig in Bearbeitung sind, wurden vermutlich auch 3 Vagrant-Boxen erstellt. In solchen Fällen müssen sich natürlich die URLs unterscheiden, da sie sonst im Hostfile mehrfach vorkommen und nicht richtig aufgelöst werden können. BeispieL: Ist die 192.168.33.10 für jedes der 3 Projekte vergeben, wird der Browser immer auf den ersten Eintrag der Hostsdatei referenzieren (selbst wenn die Domain wie z. B. http://example3.com eingegeben wurde, da aber dieselbe IP-Adresse wie die anderen Webseiten hat, aber erst danach im Hostfile aufgeführt wird).
Jetzt noch im Vagrantfile
die Variable für den Hostnamen config.vm.hostname="hostname"
(z. B. example1.local) anpassen und in der config.yml
die gewünschten Daten. WICHTIG: Die URL in den wpsettings:
muss mit der URL im Vagrantfile
übereinstimmen! Wenn die Hosts-Datei nach einem Suspend oder Halt nicht geändert werden soll, wird dies noch eingefügt: config.hostsupdater.remove_on_suspend = false
.
Allow passwordless startup of Vagrant with vagrant-hostsupdater. Dazu im lokalen Verzeichnis eingeben:
sudo visudo
und die Zeilen
Cmnd_Alias VAGRANT_HOSTS_ADD = /bin/sh -c echo "*" >> /etc/hosts
Cmnd_Alias VAGRANT_HOSTS_REMOVE = /bin/env sed -i -e /*/ d /etc/hosts
%admin ALL=(root) NOPASSWD: VAGRANT_HOSTS_ADD, VAGRANT_HOSTS_REMOVE
einfügen.
upload_max_filesize
kommtNach vagrant ssh
am besten gleich anlegen: sudo nano /var/www/public/info.php
.
Inhalt:
<?php
phpinfo();
?>
Dann http://www.example.com/info.php aufrufen und die Werte ablesen. Meistens ist upload_max_filesize
sehr niedrig eingestellt (in unserem Beispiel hier sind es 2MB).
Die zu ändernde Datei befindet sich hier: sudo nano /etc/php/apache2/php.ini
. In der Datei suchen wir die Einträge post_max_size
und upload_max_filesize
und stellen sie jeweils auf 30M
ein. Bei der Gelegenheit kann auch memory_limit = 128M
eingestellt werden und max_execution_time = 30
. Danach wird der Apache neu gestartet: sudo service apache2 restart
.
Zur Information kann jetzt die http://www.example.com/info.php nochmal aufgerufen werden und die eingestellten Werte sollten dort drinstehen.