summaryrefslogtreecommitdiffstats
path: root/docs/sgml/readme.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/sgml/readme.sgml')
-rw-r--r--docs/sgml/readme.sgml496
1 files changed, 496 insertions, 0 deletions
diff --git a/docs/sgml/readme.sgml b/docs/sgml/readme.sgml
new file mode 100644
index 000000000..cdbd22878
--- /dev/null
+++ b/docs/sgml/readme.sgml
@@ -0,0 +1,496 @@
+This is Bugzilla. See <http://www.mozilla.org/bugs/>.
+
+
+ ==========
+ DISCLAIMER
+ ==========
+
+ This is not very well packaged code. It's not packaged at all. Don't
+come here expecting something you plop in a directory, twiddle a few
+things, and you're off and using it. Work has to be done to get there.
+We'd like to get there, but it wasn't clear when that would be, and so we
+decided to let people see it first.
+
+ Bugzilla has not undergone a complete security review. Security holes
+may exist in the code. Great care should be taken both in the installation
+and usage of this software. Carefully consider the implications of
+installing other network services with Bugzilla.
+
+
+ ============
+ INSTALLATION
+ ============
+
+0. Introduction
+
+ Installation of bugzilla is pretty straight forward, especially if your
+machine already has MySQL and the MySQL-related perl packages installed.
+If those aren't installed yet, then that's the first order of business. The
+other necessary ingredient is a web server set up to run cgi scripts.
+
+ Bugzilla has been successfully installed under Solaris and Linux. Windows NT
+is not officially supported. There have been a few successful installations
+of Bugzilla under Windows NT. Please see this article for a discussion of what
+one person hacked together to get it to work.
+
+news://news.mozilla.org/19990913183810.SVTR29939.mta02@onebox.com
+
+1. Installing the Prerequisites
+
+ The software packages necessary for the proper running of bugzilla are:
+
+ 1. MySQL database server and the mysql client (3.22.5 or greater)
+ 2. Perl (5.004 or greater)
+ 3. DBI Perl module
+ 4. Data::Dumper Perl module
+ 5. MySQL related Perl module collection
+ 6. TimeDate Perl module collection
+ 7. GD perl module (1.18 or 1.19)
+ 8. Chart::Base Perl module (0.99 through 0.99b)
+ 9. The web server of your choice
+
+ Bugzilla has quite a few prerequisites, but none of them are TCL.
+Previous versions required TCL, but it no longer needed (or used).
+
+1.1. Getting and setting up MySQL database (3.22.5 or greater)
+
+ Visit MySQL homepage at http://www.mysql.org and grab the latest stable
+release of the server. Both binaries and source are available and which
+you get shouldn't matter. Be aware that many of the binary versions
+of MySQL store their data files in /var which on many installations
+(particularly common with linux installations) is part of a smaller
+root partition. If you decide to build from sources you can easily set
+the dataDir as an option to configure.
+
+ If you've installed from source or non-package (RPM, deb, etc.) binaries
+you'll want to make sure to add mysqld to your init scripts so the server
+daemon will come back up whenever your machine reboots.
+
+ You also may want to edit those init scripts, to make sure that
+mysqld will accept large packets. By default, mysqld is set up to only
+accept packets up to 64K long. This limits the size of attachments you
+may put on bugs. If you add something like "-O max_allowed_packet=1M"
+to the command that starts mysqld (or safe_mysqld), then you will be
+able to have attachments up to about 1 megabyte.
+
+1.2. Perl (5.004 or greater)
+
+ Any machine that doesn't have perl on it is a sad machine indeed. Perl
+for *nix systems can be gotten in source form from http://www.perl.com.
+
+ Perl is now a far cry from the the single compiler/interpreter binary it
+once was. It now includes a great many required modules and quite a
+few other support files. If you're not up to or not inclined to build
+perl from source, you'll want to install it on your machine using some
+sort of packaging system (be it RPM, deb, or what have you) to ensure
+a sane install. In the subsequent sections you'll be installing quite
+a few perl modules; this can be quite ornery if your perl installation
+isn't up to snuff.
+
+1.3. DBI Perl module
+
+ The DBI module is a generic Perl module used by other database related
+Perl modules. For our purposes it's required by the MySQL-related
+modules. As long as your Perl installation was done correctly the
+DBI module should be a breeze. It's a mixed Perl/C module, but Perl's
+MakeMaker system simplifies the C compilation greatly.
+
+ Like almost all Perl modules DBI can be found on the Comprehensive Perl
+Archive Network (CPAN) at http://www.cpan.org . The CPAN servers have a
+real tendency to bog down, so please use mirrors. The current location
+at the time of this writing (02/17/99) can be found in Appendix A.
+
+ Quality, general Perl module installation instructions can be found on
+the CPAN website, but basically you'll just need to:
+
+ 1. Untar the module tarball -- it should create its own directory
+ 2. Enter the following commands:
+ perl Makefile.PL
+ make
+ make test
+ make install
+
+ If everything went ok that should be all it takes. For the vast
+majority of perl modules this is all that's required.
+
+1.4 Data::Dumper Perl module
+
+ The Data::Dumper module provides data structure persistence for Perl
+(similar to Java's serialization). It comes with later sub-releases of
+Perl 5.004, but a re-installation just to be sure it's available won't
+hurt anything.
+
+ Data::Dumper is used by the MySQL related Perl modules. It can be
+found on CPAN (link in Appendix A) and can be installed by following
+the same four step make sequence used for the DBI module.
+
+1.5. MySQL related Perl module collection
+
+ The Perl/MySQL interface requires a few mutually-dependent perl
+modules. These modules are grouped together into the the
+Msql-Mysql-modules package. This package can be found at CPAN (link
+in Appendix A). After the archive file has been downloaded it should
+be untarred.
+
+ The MySQL modules are all build using one make file which is generated
+by running:
+
+ perl Makefile.PL
+
+ The MakeMaker process will ask you a few questions about the desired
+compilation target and your MySQL installation. For many of the questions
+the provided default will be adequate.
+
+ When asked if your desired target is the MySQL or mSQL packages
+selected the MySQL related ones. Later you will be asked if you wish
+to provide backwards compatibility with the older MySQL packages; you
+must answer YES to this question. The default will be no, and if you
+select it things won't work later.
+
+ A host of 'localhost' should be fine and a testing user of 'test' and
+a null password should find itself with sufficient access to run tests
+on the 'test' database which MySQL created upon installation. If 'make
+test' and 'make install' go through without errors you should be ready
+to go as far as database connectivity is concerned.
+
+1.6. TimeDate Perl module collection
+
+ Many of the more common date/time/calendar related Perl modules have
+been grouped into a bundle similar to the MySQL modules bundle. This
+bundle is stored on the CPAN under the name TimeDate. A (hopefully
+current) link can be found in Appendix A. The component module we're
+most interested in is the Date::Format module, but installing all of them
+is probably a good idea anyway. The standard Perl module installation
+instructions should work perfectly for this simple package.
+
+1.7. GD Perl module (1.18 or 1.19)
+
+ The GD library was written by Thomas Boutell a long while ago to
+programatically generate images in C. Since then it's become almost a
+defacto standard for programatic image construction. The Perl bindings
+to it found in the GD library are used on a million web pages to generate
+graphs on the fly. That's what bugzilla will be using it for so you'd
+better install it if you want any of the graphing to work.
+ Actually bugzilla uses the Graph module which relies on GD itself,
+but isn't that always the way with OOP. At any rate, you can find the
+GD library on CPAN (link in Appendix A). Note, however, that you MUST
+use version 1.18 or 1.19, because newer versions have dropped support
+for GIFs in favor of PNGs, and bugzilla has not yet been updated to
+deal with this.
+
+1.8. Chart::Base Perl module (0.99 through 0.99b)
+
+ The Chart module provides bugzilla with on-the-fly charting
+abilities. It can be installed in the usual fashion after it has been
+fetched from CPAN where it is found as the Chart-x.x... tarball in a
+directory to be listed in Appendix A. Note that as with the GD perl
+module, only the specific versions listed above will work.
+
+1.9. HTTP server
+
+ You have a freedom of choice here - Apache, Netscape or any other
+server on UNIX would do. You can easily run the web server on a different
+machine than MySQL, but that makes MySQL permissions harder to manage.
+
+ You'll want to make sure that your web server will run any file
+with the .cgi extension as a cgi and not just display it. If you're using
+apache that means uncommenting the following line in the srm.conf file:
+
+ AddHandler cgi-script .cgi
+
+ With apache you'll also want to make sure that within the access.conf
+file the line:
+
+ Options ExecCGI
+
+is in the stanza that covers the directories you intend to put the
+bugzilla .html and .cgi files into.
+
+2. Installing the Bugzilla Files
+
+ You should untar the bugzilla files into a directory that you're
+willing to make writable by the default web server user (probably
+'nobody'). You may decide to put the files off of the main web space
+for your web server or perhaps off of /usr/local with a symbolic link
+in the web space that points to the bugzilla directory. At any rate,
+just dump all the files in the same place (optionally omitting the CVS
+directory if it accidentally got tarred up with the rest of bugzilla)
+and make sure you can get at the files in that directory through your
+web server.
+
+ Once all the files are in a web accessible directory, make that
+directory writable by your webserver's user (which may require just
+making it world writable).
+
+ Lastly, you'll need to set up a symbolic link from /usr/bonsaitools/bin
+to the correct location of your perl executable (probably /usr/bin/perl).
+Or, you'll have to hack all the .cgi files to change where they look
+for perl.
+
+3. Setting Up the MySQL database
+
+ After you've gotten all the software installed and working you're ready
+to start preparing the database for its life as a the back end to a high
+quality bug tracker.
+
+ First, you'll want to fix MySQL permissions. Bugzilla always logs
+in as user "bugs", with no password. That needs to work. MySQL
+permissions are a deep, nasty complicated thing. I've just turned
+them off. If you want to do that, too, then the magic is to do run
+"mysql mysql", and feed it commands like this (replace all instances of
+HOSTNAME with the name of the machine mysql is running on):
+
+ DELETE FROM host;
+ DELETE FROM user;
+ INSERT INTO host VALUES
+ ('localhost','%','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
+ INSERT INTO host VALUES
+ (HOSTNAME,'%','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
+ INSERT INTO user VALUES
+ ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y',
+ 'Y','Y','Y','Y','Y');
+ INSERT INTO user VALUES
+ (HOSTNAME,'','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
+ 'Y','Y','Y');
+ INSERT INTO user VALUES
+ (HOSTNAME,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
+ 'Y','Y','Y','Y');
+ INSERT INTO user VALUES
+ ('localhost','','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
+ 'Y','Y','Y','Y');
+
+The number of 'Y' entries to use varies with the version of MySQL; they
+keep adding columns. The list here should work with version 3.22.23b.
+
+This run of "mysql mysql" may need some extra parameters to deal with
+whatever database permissions were set up previously. In particular,
+you might have to say "mysql -uroot mysql", and give it an appropriate
+password.
+
+For much more information about MySQL permissions, see the MySQL
+documentation.
+
+After you've tweaked the permissions, run "mysqladmin reload" to make
+sure that the database server knows to look at your new permission list.
+
+Or, at the mysql prompt:
+
+mysql> flush privileges;
+
+You must explictly tell mysql to reload permissions before running checksetup.pl.
+
+Next, you can just run the magic checksetup.pl script. (Many thanks
+to Holger Schurig <holgerschurig@nikocity.de> for writing this script!)
+It will make sure things have reasonable permissions, set up the "data"
+directory, and create all the MySQL tables. Just run:
+
+ ./checksetup.pl
+
+The first time you run it, it will create a file called "localconfig"
+which you should examine and perhaps tweak a bit. Then re-run
+checksetup.pl and it will do the real work.
+
+
+At ths point, you should have a nearly empty copy of the bug tracking
+setup.
+
+4. Tweaking the Bugzilla->MySQL Connection Data
+
+ If you have played with MySQL permissions, rather than just opening it
+wide open as described above, then you may need to tweak the Bugzilla
+code to connect appropriately.
+
+ In order for bugzilla to be able to connect to the MySQL database
+you'll have to tell bugzilla where the database server is, what
+database you're connecting to, and whom to connect as. Simply open up
+the globals.pl file in the bugzilla directory and find the line that
+begins like:
+
+ $::db = Mysql->Connect("
+
+ That line does the actual database connection. The Connect method
+takes four parameters which are (with appropriate values):
+
+ 1. server's host: just use "localhost"
+ 2. database name: "bugs" if you're following these directions
+ 3. MySQL username: whatever you created for your webserver user
+ probably "nobody"
+ 4. Password for the MySQL account in item 3.
+
+Just fill in those values and close up globals.pl
+
+5. Setting up yourself as Maintainer
+
+ Start by creating your own bugzilla account. To do so, just try to
+"add a bug" from the main bugzilla menu (now available from your system
+through your web browser!). You'll be prompted for logon info, and you
+should enter your email address and then select 'mail me my password'.
+When you get the password mail, log in with it. Don't finish entering
+that new bug.
+
+ Now, add yourself to every group. The magic checksetup.pl script
+can do this for you, if you run it again now. That script will notice
+if there's exactly one user in the database, and if so, add that person
+to every group.
+
+ If you want to add someone to every group by hand, you can do it by
+typing the appropriate MySQL commands. Run mysql, and type:
+
+ update profiles set groupset=0x7fffffffffffffff
+ where login_name = 'XXX';
+
+replacing XXX with your Bugzilla email address.
+
+Now, if you go to the query page (off of the bugzilla main menu) where
+you'll now find a 'edit parameters' option which is filled with editable
+treats.
+
+6. Setting Up the Whining Cron Job (Optional)
+
+ By now you've got a fully functional bugzilla, but what good are bugs
+if they're not annoying? To help make those bugs more annoying you can
+set up bugzilla's automatic whining system. This can be done by adding
+the following command as a daily crontab entry (for help on that see that
+crontab man page):
+
+ cd <your-bugzilla-directory> ; ./whineatnews.pl
+
+7. Bug Graphs (Optional)
+
+ As long as you installed the GD and Graph::Base Perl modules you might
+as well turn on the nifty bugzilla bug reporting graphs. Just add
+the command:
+
+ cd <your-bugzilla-directory> ; ./collectstats.pl
+
+as a nightly entry to your crontab and after two days have passed you'll
+be able to view bug graphs from the Bug Reports page.
+
+8. Real security for MySQL
+
+MySQL has "interesting" default security parameters:
+ mysqld defaults to running as root
+ it defaults to allowing external network connections
+ it has a known port number, and is easy to detect
+ it defaults to no passwords whatsoever
+ it defaults to allowing "File_Priv"
+This means anyone from anywhere on the internet can not only drop the
+database with one SQL command, and they can write as root to the system.
+
+To see your permissions do:
+ > mysql -u root -p
+ use mysql;
+ show tables;
+ select * from user;
+ select * from db;
+
+To fix the gaping holes:
+ DELETE FROM user WHERE User='';
+ UPDATE user SET Password=PASSWORD('new_password') WHERE user='root';
+ FLUSH PRIVILEGES;
+
+If you're not running "mit-pthreads" you can use:
+ GRANT USAGE ON *.* TO bugs@localhost;
+ GRANT ALL ON bugs.* TO bugs@localhost;
+ REVOKE DROP ON bugs.* FROM bugs@localhost;
+ FLUSH PRIVILEGES;
+
+With "mit-pthreads" you'll need to modify the "globals.pl" Mysql->Connect
+line to specify a specific host name instead of "localhost", and accept
+external connections:
+ GRANT USAGE ON *.* TO bugs@bounce.hop.com;
+ GRANT ALL ON bugs.* TO bugs@bounce.hop.com;
+ REVOKE DROP ON bugs.* FROM bugs@bounce.hop.com;
+ FLUSH PRIVILEGES;
+
+Consider also:
+ o Turning off external networking with "--skip-networking",
+ unless you have "mit-pthreads", in which case you can't.
+ Without networking, MySQL connects with a Unix domain socket.
+
+ o using the --user= option to mysqld to run it as an unprivileged
+ user.
+
+ o starting MySQL in a chroot jail
+
+ o running the httpd in a jail
+
+ o making sure the MySQL passwords are different from the OS
+ passwords (MySQL "root" has nothing to do with system "root").
+
+ o running MySQL on a separate untrusted machine
+
+ o making backups ;-)
+
+
+
+---------[ Appendices ]-----------------------
+
+Appendix A. Required Software Download Links
+
+ All of these sites are current as of February 17, 1999. Hopefully
+they'll stay current for a while.
+
+MySQL: http://www.mysql.org
+
+Perl: http://www.perl.org
+
+CPAN: http://www.cpan.org
+
+DBI Perl module: ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/DBI/
+
+Data::Dumper module:
+ ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Data/
+
+MySQL related Perl modules:
+ ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Mysql/
+
+TimeDate Perl module collection:
+ ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Date/
+
+GD Perl module: ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/GD/
+
+Chart::Base module:
+ ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Chart/
+
+
+Appendix B. Modifying Your Running System
+
+ Bugzilla optimizes database lookups by storing all relatively static
+information in the versioncache file, located in the data/ subdirectory
+under your installation directory (we said before it needs to be writable,
+right?!)
+
+ If you make a change to the structural data in your database (the
+versions table for example), or to the "constants" encoded in
+defparams.pl, you will need to remove the cached content from the data
+directory (by doing a "rm data/versioncache"), or your changes won't show
+up!
+
+ That file gets automatically regenerated whenever it's more than an
+hour old, so Bugzilla will eventually notice your changes by itself, but
+generally you want it to notice right away, so that you can test things.
+
+
+Appendix C. Upgrading from previous versions of Bugzilla
+
+The developers of Bugzilla are constantly adding new tables, columns and
+fields. You'll get SQL errors if you just update the code. The strategy
+to update is to simply always run the checksetup.pl script whenever
+you upgrade your installation of Bugzilla. If you want to see what has
+changed, you can read the comments in that file, starting from the end.
+
+
+Appendix D. History
+
+ This document was originally adapted from the Bonsai installation
+instructions by Terry Weissman <terry@mozilla.org>.
+
+ The February 25, 1999 re-write of this page was done by Ry4an Brase
+<ry4an@ry4an.org>, with some edits by Terry Weissman, Bryce Nesbitt,
+Martin Pool, & Dan Mosedale (But don't send bug reports to them!
+Report them using bugzilla, at http://bugzilla.mozilla.org/enter_bug.cgi ,
+project Webtools, component Bugzilla).
+
+ Comments from people using this document for the first time are
+especially welcomed.