Bitnami LAMP VM (Debian 9) on VirtualBox, macOS host

Warning

This is a setup I use for development environments, not recommended for production!

Basic VM Install

  • Download OVA file from https://bitnami.com/stack/lamp/virtual-machine (version used: PHP 7.1.16-0 64-bit)
  • In VirtualBox file menu, import appliance (OVA file) & start it
  • Wait until coloured screen appears
  • Login with bitnami / bitnami
  • Set a new password
  • Root access: $ sudo su
  • Shutdown: $ sudo init 0

Tweak VM resources

By default resources allocated to the VM are quite scarce. Depending on the use it will have and the resources on your host machine you may want to increase them. My setup includes:

  • all available CPUs at 80% for better performance
  • 1 or 2 GB of RAM
  • 8 MB of video memory (there's no GUI)

Stop the VM for adjusting them.

Configure VM network

This is a server for local development/testing so we just need it to be accessible from the host machine. Additionally we may need it to access the internet. Reference.

bridged mode

With this mode the VM can communicate in all directions. Limitation: the virtual adapter needs to be attached to a physical WiFi (AirPort) adapter. Configure this mode in the VM's Settings - Network - Adapter 1.

host-only adapter

If you don't need the VM to access the internet you can configure it in this way.For that we need to create a host-only adapter. In Global Tools - Host Network Manager create one with default parameters & enable DHCP. The first one gets by default the name vboxnet0 and the IP range 192.168.56.x. Then in VM's Settings - Network - Adapter 1 select Host-only adapter and vboxnet0.

Verify it works

http://192.168.x.x/

Access the VM from the macOS terminal

I find it convenient to have SSH enabled so I can access the VM from a terminal Window. Partly because without GUI the default console is very limited: no window resize, no clipboard integration...
https://docs.bitnami.com/virtual-machine/faq/#how-to-connect-to-the-server-through-ssh

VM:

$ sudo rm -f /etc/ssh/sshd_not_to_be_run
$ sudo systemctl enable ssh
$ sudo systemctl start ssh
$ sudo ifconfig | grep 192
... inet 192.168.x.x ...

macOS:

latest command above shows the local IP of the VM, use it to connect to it:
ssh bitnami@192.168.x.x

    Install VirtualBox Guest Additions

    This is optional but quite convenient in a development setup. Specifically I use the shared folders feature with the host so changes in code I make on macOS are immediately available within the VM.

    • In Settings - Storage add a new CD device to the existing controller and leave it empty
    • Start the VM

    Install dependencies

    Find out then Linux kernel version, it's the third column, "4.9.0-6-amd64" in this case:

    bitnami@debian:~$ uname -a
    Linux debian 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64 GNU/Linux

    the default DNS resolver was not working so I had to fix it using a Google's one.

    $ sudo vi /etc/resolv.conf
    ...
    nameserver 8.8.8.8
    ...
    $ sudo apt-get -y install dkms build-essential linux-headers-4.9.0-6-amd64
    $ sudo reboot

    Install Guest Additions

    Once the login prompt appears, insert the Guest Additions CD image (devices menu). Then mount & execute:

    $ sudo mkdir /mnt/cdrom
    $ sudo mount /dev/cdrom /mnt/cdrom
    $ cd /mnt/cdrom
    $ sudo sh ./VBoxLinuxAdditions.run --nox11

    Check if running:
    bitnami@debian:/mnt/cdrom$ ps -ef | grep VBoxService | grep -v grep
    root 5447 1 0 11:46 ? 00:00:00 /usr/sbin/VBoxService --pidfile /var/run/vboxadd-service.sh


    Finish
    $ sudo umount /dev/cdrom
    $ init 0

    Configure any shared folders (normally with auto-mount), start the VM, check folders are mounted:
    $ mount | grep media
    $ sudo ls /media/*

    User access to shared folders
    e.g. allow bitnami user R/W access to VB shared folders
    $ sudo usermod -a -G vboxsf bitnami

    Enable phpMyAdmin for private IPs

    Bitnami docs instruct to use an ssh tunnel to access phpMyAdmin, but I prefer to just allow access from the local network.

    $ vi /opt/bitnami/apps/phpmyadmin/conf/httpd-app.conf

    replace: Require local by Require ip 192.168

    $ /opt/bitnami/ctlscript.sh restart apache

    Verify it works: http://192.168.x.x/phpmyadmin/

    Install WordPress module

    Following this guide: https://docs.bitnami.com/installer/infrastructure/lamp/#how-can-i-add-applications-on-top-of-lamp

    Obtain the module download URL from https://bitnami.com/stack/lamp/modules

    $ cd
    $ pwd
    /home/bitnami
    $ cat bitnami_credentials
    *** contains MySQL root password used below ***
    $ exec sh /opt/bitnami/use_lampstack
    $ curl --remote-name --location https://bitnami.com/redirect/to/186012/bitnami-wordpress-4.9.5-0-module-linux-x64-installer.run
    $ chmod +x ./bitnami-wordpress-4.9.5-0-module-linux-x64-installer.run
    $ sudo ./bitnami-wordpress-4.9.5-0-module-linux-x64-installer.run
    installer asks for the following data:
    • language
    • Installation folder: /opt/bitnami
    • WP admin account data
    • MySQL "root" password (see above)
    • Blog name
    • mail support/SMTP Settings so your application can send notifications via email.  Either GMail or in my case "Custom":
      • Username
      • Password
      • SMTP Host 
      • SMTP Port [587]
      • Secure connection: None /SSL/TLS
    • Development o production environment
      Verify it works: http://192.168.x.x/applications.html