Assuming you're on ubuntu 14.04, already have a LAMP server set up, and know your way around a BASH command line....
.....and I'm going to install the current bugzilla which now is 4.4.6, but at least you'll have an answer.
Get up to date, always:
sudo apt-get update && sudo apt-get upgrade
Become root or type sudo a thousand times:
sudo su -
Get Bugzilla (source):
cd /var/www
wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-4.4.6.tar.gz
Extract it, and link a sane foldername to the current version:
tar xvzf bugzilla-4.4.6.tar.gz
rm bugzilla-4.4.6.tar.gz
ln -s bugzilla-4.4.6 bugzilla
cd bugzilla
less README
In the README, we learn to run checksetup.pl:
./checksetup.pl
....which will tell us that we have a metric shitton of unmet perl dependencies.
But, we're told:
To attempt an automatic install of every required and optional module
with one command, do:
/usr/bin/perl install-module.pl --all
Now, that will not actually get us everything we want, so:
/usr/bin/perl install-module.pl Linux::Pid
/usr/bin/perl install-module.pl Apache2::SizeLimit
a2enmod expires
service apache2 restart
To verify we got everything we wanted, let's run
./checksetup.pl
You need a database. Obviously I'm using MySQL. Steps will vary if you use another db.
Login:
mysql -u root -p
Create:
mysql> create database bugs;
Create user & grant privileges, then commit them:
mysql> GRANT SELECT, INSERT,
-> UPDATE, DELETE, INDEX, ALTER, CREATE, LOCK TABLES,
-> CREATE TEMPORARY TABLES, DROP, REFERENCES ON bugs.*
-> TO bugs@localhost IDENTIFIED BY 'this_is_your_password';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Edit the config file:
vim localconfig
In particular, you need to edit the fields:
$webservergroup = 'www-data';
$db_pass = 'this_is_your_password';
...to match your local config.
Configure your webserver.
cd /etc/apache2/sites-available/
vi bugzilla.conf
It should look like:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName bugs.whatever.net
ServerAdmin webmaster@localhost
DocumentRoot /var/www/bugzilla
PerlSwitches -w -T
PerlConfigRequire /var/www/bugzilla/mod_perl.pl
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
After you have that file you need to run
a2ensite bugzilla
service apache2 restart
And you should be up & running at your address.