Auto-tools/Projects/GrafxBot/Install: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Created page with "= Installing GrafxBot servers = == Prerequisites == * MySQL Community Server 5.x from http://mysql.com/downloads/mysql/")
 
 
(27 intermediate revisions by the same user not shown)
Line 3: Line 3:
== Prerequisites ==
== Prerequisites ==


* MySQL Community Server 5.x from http://mysql.com/downloads/mysql/
* MySQL Community Server 5.x from http://mysql.com/downloads/mysql/; install the server, client utilities, and development libraries
* Python 2.6
* MySQL-Python from http://sourceforge.net/projects/mysql-python/
* Django 1.2.x
* Any webserver supported by Django
 
== Installation Steps ==
 
<ol>
<li>Download the Django GrafxBot app:</li>
</ol>
 
  hg clone http://bitbucket.org/jonallengriffin/resultserv
 
<ol start="2">
<li>Edit resultserv/settings.py, and update DATABASE_USER, DATABASE_PASSWORD, and DATABASE_HOST as appropriate.</li>
<li>Create a database named 'resultserv' in MySQL.</li>
<li>In the resultserv directory, enter the following command; this should generate the necessary SQL tables.  When prompted for a superuser, add one of your choice.</li>
</ol>
 
  python manage.py syncdb
 
<ol start="5">
<li>Create a Django user with the following commands.  A Django user is used to login to the GrafxBot website, so you can access some of the private pages of the site.</li>
</ol>
 
  python manage.py shell
  >>> from django.contrib.auth.models import User
  >>> user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')
  >>> user.save()
  >>> exit()
 
<ol start="6">
<li>Edit your web site's config to serve files for the /resultserv/ url.  The way this is done varies depending on your webserver, for nginx this involes adding a block like this to your nginx.conf:</li>
</ol>
 
        location ~ ^/resultserv/media/(.*)$ {
          alias /path/to/resultserv/media/$1;
        }
        location /resultserv {
          fastcgi_pass 127.0.0.1:8090;
          fastcgi_param PATH_INFO $fastcgi_script_name;
          fastcgi_param REQUEST_METHOD $request_method;
          fastcgi_param QUERY_STRING $query_string;
          fastcgi_param CONTENT_TYPE $content_type;
          fastcgi_param SERVER_NAME $server_name;
          fastcgi_param SERVER_PORT $server_port;
          fastcgi_param SERVER_PROTOCOL $server_protocol;
          fastcgi_param CONTENT_LENGTH $content_length;
          fastcgi_pass_header Authorization;
          fastcgi_intercept_errors off;
        }
 
<ol start="7">
<li>Start the Django GrafxBot server.  The command used to do this varies on your website's configuration, but for nginx and the config block above, this might be:</li>
</ol>
 
  python manage.py runfcgi method=threaded host=127.0.0.1 port=8090
 
<ol start="8">
<li>Start the GrafxBot data insertion daemon, updating the --pidfile and --logfile path as needed; make sure the specified paths exist:</li>
</ol>
 
  python insert.py --pidfile=/usr/local/logs/insert.pid --logfile=/usr/local/logs/insert.log
 
<ol start="9">
<li>Verify the installation by browsing to the following address:</li>
</ol>
 
  http://127.0.0.1/resultserv/data/
 
= Building the GrafxBot extension =
 
To build the GrafxBot extension, you must build mozilla-central.  There are a number of pre-requisites for this, see https://developer.mozilla.org/en/build_documentation for more information.  Once you have a valid build environment, you can build GrafxBot using the following:
 
  mkdir mozilla-central
  cd mozilla-central
  hg clone http://hg.mozilla.org/mozilla-central src
  cd src/extensions
  hg clone http://hg.mozilla.org/automation/grafxbot
 
Now, create a file called <code>mozconfig</code> in the mozilla-central/src directory, and add these lines:
 
  mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-ff-rel
  mk_add_options MOZ_MAKE_FLAGS="-j1"
  mk_add_options MOZ_CO_PROJECT=browser
 
  ac_add_options --enable-application=browser
  ac_add_options --enable-optimize
  ac_add_options --disable-debug
  ac_add_options --enable-libxul
  ac_add_options --disable-tests
  ac_add_options --enable-extensions=default,grafxbot
 
Finally, build mozilla-central, including the GrafxBot extension, using this command:
 
  make -f client.mk build
 
The GrafxBot xpi can be found afterwards at:
 
  mozilla-central/obj-ff-rel/dist/xpi-stage
 
= Customizing GrafxBot =
 
To change the GrafxBot extension to post results to a server other than the Mozilla one, you must update two lines of code:
 
  modules/grafxbot.jsm:const postURL = "http://brasstacks.mozilla.com/resultserv/data/post/";
  modules/grafxbot.jsm:const resultURL = "http://brasstacks.mozilla.com/resultserv/data/results/";
 
To change GrafxBot to save data locally, instead of sending to a database, you need to edit the function in <code>doHttpPost()</code> in <code>modules/grafxbot.jsm</code> so that it doesn't initiate an XMLHttpRequest, but instead writes the data to a file, etc.
 
After making any changes to GrafxBot extension code, you must rebuild it using the steps above.

Latest revision as of 18:33, 20 January 2011

Installing GrafxBot servers

Prerequisites

Installation Steps

  1. Download the Django GrafxBot app:
 hg clone http://bitbucket.org/jonallengriffin/resultserv
  1. Edit resultserv/settings.py, and update DATABASE_USER, DATABASE_PASSWORD, and DATABASE_HOST as appropriate.
  2. Create a database named 'resultserv' in MySQL.
  3. In the resultserv directory, enter the following command; this should generate the necessary SQL tables. When prompted for a superuser, add one of your choice.
  python manage.py syncdb
  1. Create a Django user with the following commands. A Django user is used to login to the GrafxBot website, so you can access some of the private pages of the site.
 python manage.py shell
 >>> from django.contrib.auth.models import User
 >>> user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')
 >>> user.save()
 >>> exit()
  1. Edit your web site's config to serve files for the /resultserv/ url. The way this is done varies depending on your webserver, for nginx this involes adding a block like this to your nginx.conf:
       location ~ ^/resultserv/media/(.*)$ {
         alias /path/to/resultserv/media/$1;
       }
       location /resultserv {
         fastcgi_pass 127.0.0.1:8090;
         fastcgi_param PATH_INFO $fastcgi_script_name;
         fastcgi_param REQUEST_METHOD $request_method;
         fastcgi_param QUERY_STRING $query_string;
         fastcgi_param CONTENT_TYPE $content_type;
         fastcgi_param SERVER_NAME $server_name;
         fastcgi_param SERVER_PORT $server_port;
         fastcgi_param SERVER_PROTOCOL $server_protocol;
         fastcgi_param CONTENT_LENGTH $content_length;
         fastcgi_pass_header Authorization;
         fastcgi_intercept_errors off;
       }
  1. Start the Django GrafxBot server. The command used to do this varies on your website's configuration, but for nginx and the config block above, this might be:
 python manage.py runfcgi method=threaded host=127.0.0.1 port=8090
  1. Start the GrafxBot data insertion daemon, updating the --pidfile and --logfile path as needed; make sure the specified paths exist:
 python insert.py --pidfile=/usr/local/logs/insert.pid --logfile=/usr/local/logs/insert.log
  1. Verify the installation by browsing to the following address:
 http://127.0.0.1/resultserv/data/

Building the GrafxBot extension

To build the GrafxBot extension, you must build mozilla-central. There are a number of pre-requisites for this, see https://developer.mozilla.org/en/build_documentation for more information. Once you have a valid build environment, you can build GrafxBot using the following:

 mkdir mozilla-central
 cd mozilla-central
 hg clone http://hg.mozilla.org/mozilla-central src
 cd src/extensions
 hg clone http://hg.mozilla.org/automation/grafxbot

Now, create a file called mozconfig in the mozilla-central/src directory, and add these lines:

 mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-ff-rel
 mk_add_options MOZ_MAKE_FLAGS="-j1"
 mk_add_options MOZ_CO_PROJECT=browser
 
 ac_add_options --enable-application=browser
 ac_add_options --enable-optimize
 ac_add_options --disable-debug
 ac_add_options --enable-libxul
 ac_add_options --disable-tests
 ac_add_options --enable-extensions=default,grafxbot

Finally, build mozilla-central, including the GrafxBot extension, using this command:

 make -f client.mk build

The GrafxBot xpi can be found afterwards at:

 mozilla-central/obj-ff-rel/dist/xpi-stage

Customizing GrafxBot

To change the GrafxBot extension to post results to a server other than the Mozilla one, you must update two lines of code:

 modules/grafxbot.jsm:const postURL = "http://brasstacks.mozilla.com/resultserv/data/post/";
 modules/grafxbot.jsm:const resultURL = "http://brasstacks.mozilla.com/resultserv/data/results/";

To change GrafxBot to save data locally, instead of sending to a database, you need to edit the function in doHttpPost() in modules/grafxbot.jsm so that it doesn't initiate an XMLHttpRequest, but instead writes the data to a file, etc.

After making any changes to GrafxBot extension code, you must rebuild it using the steps above.