Virtual MusicBrainz Server
What Is the Virtual MusicBrainz Server?
The Virtual MusicBrainz Server is a virtual machine image containg a Linux environment fully configured with the latest release of the mb_server source code. If you want to experiment with the data, or try hacking on some new features, it is intended to be the fastest way to get up and running.
The image is built using VMWare Workstation. Windows and Linux users can run it in the free VMWare Player or VMWare Server software, and Mac users can use VMWare Fusion. On the PC you're intending to run VMWare, you need at least 512Mb of RAM and at least 10Gb of free disk space.
What's in the Image?
The virtual server is running the base Debian unstable installation, fully patched as of the time of release. It also includes pre-configured versions of Apache, mod_perl, all the perl dependencies, and Postgresql.
There is a full check-out of the latest MusicBrainz server release, and an empty MusicBrainz database.
[TODO: Explain disk partitions. 4Gb root, 10Gb data. vmdx files will expand]
Running the Virtual MusicBrainz Server
Before you begin
- Download VMWare Player or VMWare Fusion for Mac OS-X and follow the instructions for installing and setting it up.
- Download the Virtual MusicBrainz Server image from ftp://ftp.musicbrainz.org/pub/musicbrainz/MBServer-20090524.tar.bz2. To extract it in Windows, you can use 7-Zip. From the .bz2 you will extract a .tar from which you will extract the VMware files themselves. You can remove the .tar file now. Linux users can use
tar xvjf MBServer-20090224.tar.bz2.
- Start the virtual machine in VMWare: run VMware, then navigate to the folder where you extracted the VMware files and choose MBServer. VMware will now boot Linux in a virtual machine. Wait until you get the prompt: "brainzvm login:"
- There are two users on the system with passwords: "root" and "mbserver". By default, the user passwords are the same as the usernames. So the first thing to do is login as root, and change the passwords to something a smidge more secure.
brainzvm:~# passwd root Enter new UNIX password: [enter a new password] Retype new UNIX password: [repeat it] passwd: password updated successfully brainzvm:~# passwd mbserver Enter new UNIX password: [enter a new password] Retype new UNIX password: [repeat it] passwd: password updated successfully
- Make sure you have an internet connection inside your virtual machine by pinging Google. (This may fail if you're behind a firewall that blocks pings.)
brainzvm:~# ping -c 3 google.com PING google.com (220.127.116.11) 56(84) bytes of data. 64 bytes from 18.104.22.168: icmp_seq=1 ttl=244 time=17.3 ms 64 bytes from 22.214.171.124: icmp_seq=2 ttl=244 time=17.9 ms 64 bytes from 126.96.36.199: icmp_seq=3 ttl=244 time=8.85 ms --- google.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2029ms rtt min/avg/max/mdev = 8.854/14.718/17.950/4.153 ms
- If this works, find out what IP address is assigned to your virtual server by running ifconfig.
brainzvm:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:62:7F:57 inet addr:192.168.213.42 Bcast:192.168.213.255 Mask:255.255.255.0 [ ^^^^^^^^^^^^^^ this is the address you care about ] UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 [snip]
- Outside of your virtual machine, open a webbrowser and try accessing the virtual IP address as http://ipaddress/. You should see the MusicBrainz homepage, but with a banner that reads "Brainzvm Server".
- Outside the VM, ssh into it, as the mbserver user. (Windows users can use the excellent ssh client PuTTY). This makes it easier to cut and paste things from this document.
- Now let's download the latest MB data dump. Use
lynx http://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport/, go into the latest folder and get the mbdump.tar.bz2, mbdump-derived.tar.bz2 and mbdump-stats.tar.bz2 files. (You can grab the other files if you want, but the data they contain is stuff like old moderations; Nothing necessary to get your server up and running) Save them to the mbserver home directory then press 'q' to exit lynx.
- In mbserver's home directory is a directory called svn. This contains the latest MusicBrainz server code at the time of release. To make sure you have an up-to-date copy:
mbserver@brainzvm:~$ cd svn/mb_server mbserver@brainzvm:~/svn/mb_server$ svn up
- Stop apache, drop the empty musicbrainz database, and import these dumps:
mbserver@brainzvm:~/svn/mb_server$ su - Password: brainzvm:~# /etc/init.d/apache-perl stop Stopping web server: apache-perl. brainzvm:~# exit mbserver@brainzvm:~/svn/mb_server$ dropdb -U postgres musicbrainz_db DROP DATABASE mbserver@brainzvm:~/svn/mb_server$ dropdb -U postgres musicbrainz_db_raw DROP DATABASE mbserver@brainzvm:~/svn/mb_server$ perl ./admin/InitDb.pl --createdb --echo --import -- --tmp-dir=/mnt/data/tmp ~/mbdump*.tar.bz2 <snip> -- Go get some coffee and a book, cause this'll take at least an hour to run. Fri Oct 21 21:11:56 2005 : Initialized and imported data into the database. Fri Oct 21 21:11:56 2005 : InitDb.pl succeeded mbserver@brainzvm:~$ su - Password: brainzvm:~# /etc/init.d/apache-perl start Starting web server: apache-perl. brainzvm:~# exit
- Going to http://ipaddress/ should now present you with your very own searchable MusicBrainz server. Hurrah!
If you see an error during the data load "Schema sequence mismatch - codebase is <number>, /home/mbserver/mbdump-derived.tar.bz2 is <other number>" then see this forum message http://forums.musicbrainz.org/viewtopic.php?pid=3516
Hacking on the code
[TODO: Link to some developer documentation]
Working with the database
If you want to access Postgresql from other tools you should change two configurations files. Both are located in the configuration directory. If you use version 8.3 you'll find it under /etc/postgresql/8.3/main:
in file pg_hba.conf put the following line:
host all all 0.0.0.0 0.0.0.0 md5
in file postgresql.conf
listen_addresses = '*'
After you are done remember to restart postgres
Also a change of the password of the postgres user is required. Some reference for this could be found at: Debian VMWare Database Installation.
Setting up your server as a replication "Master"
# edit /etc/apt/sources.list and uncomment the `deb-src` line apt-get update apt-get install postgresql-server-dev-8.1 apt-get source postgresql-contrib-8.1 cd ~/postgresql-8.1-8.1.4 tar jxf postgresql-8.1.4.tar.bz2 cd postgresql-8.1.4/contrib/dbmirror wget ftp://ftp.musicbrainz.org/pub/musicbrainz/dbmirror-7.4-compat.patch patch -p0 < dbmirror-7.4-compat.patch make USE_PGXS=1 cp -av pending.so /usr/lib/postgresql/8.1/lib/pending-7.4-compat.so
DBDefs.pm and set REPLICATION_TYPE to RT_MASTER.
If you haven't yet run
InitDb.pl, simply make sure that when you do so, you add
If you have already run
InitDb.pl (and therefore have a "standalone" database", proceed as follows (as the user "mbserver"):
brainzvm:/home/mbserver/svn/mb_server# ./admin/psql SYSTEM Welcome to psql 8.1.4, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit template1=# \c musicbrainz_db You are now connected to database "musicbrainz_db". musicbrainz_db=# CREATE FUNCTION "recordchange" () RETURNS trigger AS '/usr/lib/postgresql/8.1/lib/pending-7.4-compat.so', 'recordchange' LANGUAGE 'C'; CREATE FUNCTION musicbrainz_db=# \q brainzvm:/home/mbserver/svn/mb_server# ./admin/psql READWRITE < admin/sql/CreateReplicationTriggers.sql SET BEGIN CREATE TRIGGER CREATE TRIGGER ... CREATE TRIGGER CREATE TRIGGER COMMIT brainzvm:/home/mbserver/svn/mb_server#