How To Install TACTIC 3.8 On Ubuntu Server 12


                How To Install TACTIC 3.9 (Open Source Release) On Ubuntu Server 12.10
                            Revision 4 - December 10th, 2012
                            Author(s):  Mike Aquino
(1) Install Ubuntu Server 12.10 as a VM ... go ahead with the default creation of initial non-root user
    (for example when using Easy-install for a VMWare VM OS installation), just to expedite the install
    process for Ubuntu
(2) Install necessary tools ...
    A. install gcc, make, unzip ...
        $ sudo apt-get install gcc make unzip
    B. install Image Magick ...
        $ sudo apt-get install imagemagick
    C. if needed, install OpenSSH server ...
        $ sudo apt-get install openssh-server
    D. install other necessary modules ...
        $ sudo apt-get install samba libxslt1-dev libxml2-dev
    E. install postgres ...
        $ sudo apt-get install postgresql-9.1 postgresql-server-dev-9.1
    F. install Apache ...
        $ sudo apt-get install apache2
(3) Install Python 2.7 dependencies (NOTE: Ubuntu Server 12.10 comes with Python 2.7.3 pre-installed as its
    default Python) ...
    A. install PIL module ...
        (a) install library dependencies ...
            $ sudo apt-get install libjpeg-dev libpng-dev zlib1g-dev liblcms1-dev python-dev
        (b) download and build the jpeg decoder ...
            (i) download the file into /tmp
                (this file is provided in the "for_PIL" folder of this install guide package)
            (ii) unarchive the package file ...
                $ cd /tmp
                $ tar xvzf jpegsrc.v8d.tar.gz
            (iii) build the jpeg decoder and install into the system ...
                $ cd /tmp/jpeg-8c
                $ ./configure --enable-shared
                $ make
                $ sudo make install
        (c) download PIL 1.1.7 source kit from
            (see more info at and place in /tmp
            (NOTE: this file is provided in the "for_PIL" folder of this install guide package)
        (d) set-up PIL ...
                $ cd /tmp
                $ tar xvzf Imaging-1.1.7.tar.gz
                $ cd Imaging-1.1.7
                $ vi
            ... look for declarations of JPEG_ROOT and ZLIB_ROOT and replace them as follows ...
                JPEG_ROOT = “/usr/local/include”
                ZLIB_ROOT = “/usr/local/include”
            ... the write the file and exit vi
        (e) install PIL ...
                $ python build_ext -i
                $ python
                $ sudo python install
    B. install other needed Python modules ...
            $ sudo apt-get install python-pythonmagick python-psycopg2 python-crypto python-pycryptopp
            $ sudo apt-get install python-simplejson python-lxml
(4) Create "apache" user and group ...
    A. Add the "apache" group (as root user) ...
            $ sudo groupadd --gid 48 apache
    B. Add entry for "apache" user in the /etc/passwd file ...
            $ sudo vi /etc/passwd
        ... then add the following line to the file and write the file and exit ...
    C. Set the "apache" user password ...
            $ sudo passwd apache
    D. Give apache user sudo privileges ...
            $ sudo visudo
        ... and add this line in the appropriate place:
            apache ALL=(ALL) ALL
        ... then ctrl+O to write file (overwrite /etc/sudoers directly) and then ctrl+X to exit
    E. Create apache home directory ...
            $ sudo mkdir /home/apache
            $ sudo chown apache:apache /home/apache
            $ sudo chmod a+rx /home/apache
(5) Set-up web-site index page for redirection ...
        $ sudo vi /var/www/index.html
    ... replace its contents with:
        <META http-equiv="refresh" content="0;URL=/tactic">
    ... write the file to save and exit vi, then put it into an "html" sub-folder in /var/www ...
        $ sudo mkdir /var/www/html
        $ sudo cp /var/www/index.html /var/www/html/
(6) Logout then login as the "apache" user
(7) Create a "install_packages" folder in /home/apache
(8) Download the latest open source "Enterprise" release of TACTIC ... go to the downloads page of the Southpaw
    community site at:
    ... and click "Download" for the "Enterprise" release. Copy this release package (e.g. tactic-3.9.0.rc02)
    to the /home/apache/install_packages folder
(9) Unarchive the release package ...
        $ cd /home/apache/install_packages
        $ unzip
    ... you should now have the folder /home/apache/install_packages/tactic-3.9.0.rc02/
(10) Set-up TACTIC to run as a service ...
    A. Modify service script to run on Ubuntu Server ...
            $ cd /home/apache/install_packages/tactic-3.8.0.rc02/src/install
            $ vi service/tactic
        ... modify the first line of that file to use the "bash" shell explicitly:
    ... then write out the file and exit vi
    B. Copy the service script to the proper location ...
            $ sudo cp service/tactic /etc/init.d
            $ sudo chmod 775 /etc/init.d/tactic
(11) Configure Postgres for use with TACTIC ...
        $ sudo cp /etc/postgresql/9.1/main/pg_hba.conf /etc/postgresql/9.1/main/pg_hba.conf--ORIG
        $ sudo cp /home/apache/install_packages/tactic-3.8/src/install/postgresql/pg_hba.conf /etc/postgresql/9.1/main/
        $ sudo chown postgres:postgres /etc/postgresql/9.1/main/pg_hba.conf
        $ sudo chown postgres:postgres /etc/postgresql/9.1/main/pg_hba.conf--ORIG
        $ sudo /etc/init.d/postgresql restart
(12) Configure Apache for use with TACTIC ...
        $ sudo cp /home/apache/install_packages/tactic-3.8.0.rc02/src/install/apache/tactic.conf /etc/apache2/conf.d/
        $ sudo a2enmod proxy_http
        $ sudo a2enmod proxy_balancer
        $ sudo a2enmod rewrite
        $ sudo service apache2 restart
(13) Setup bootstrap TACTIC module folder in Python install area (THIS STEP MUST BE DONE FOR TACTIC INSTALL TO WORK)
     by manually create "tacticenv" folder in "/usr/lib/python2.7/dist-packages/" ...
        $ sudo mkdir /usr/lib/python2.7/dist-packages/tacticenv
        $ sudo chmod 755 /usr/lib/python2.7/dist-packages/tacticenv
(14) Run TACTIC install script ...
        $ cd /home/apache/install_packages/tactic-3.8.0.rc02/src/install
        $ sudo python
    ... NOTE: specify "/home/apache" for the TACTIC installation base path and specify "apache" for the user for the
    Apache Web Server.
        $ sudo chown -R apache:apache /home/apache/tactic /home/apache/tactic_*
        $ sudo chown -R apache:apache /home/apache/assets /home/apache/projects
(15) IMPORTANT: Check the "" file in the "tacticenv" module folder (from step 15-B) and make sure that
     it ONLY has the following lines (with no leading whitespace/indentation), although you may leave any comment lines
     that exist in the file ...
    NOTE: the install process may generate an empty "TACTIC_SITE_DIR" path in this file, which will cause license
          and server configuration issues
    ... if you need to edit this file to add in the above TACTIC_SITE_DIR path, then use:
        $ sudo vi /usr/lib/python2.7/dist-packages/
    ... then once you've made the changes and written those to the file, you need to recreate the .pyc files there:
        $ sudo python
        [sudo] password for user:
        Python 2.7.3 (default, Sep 26 2012, 21:51:14)
        [GCC 4.7.2] on linux2
        Type "help", "copyright", "credits" or "license" for more information.
        >>> import tacticenv
        >>> quit()
(16) Copy the provided TACTIC license file to the correct location ...
        $ cp /home/apache/tactic/src/install/start/config/tactic-license.xml /home/apache/projects/config/
(17) Copy the provided TACTIC server config file template to the correct location ...
        $ cp /home/apache/tactic/src/install/start/template/config/tactic_linux-conf.xml /home/apache/projects/config/
(18) Ensure databases are upgraded to the given version of TACTIC (although since this is a clean install, this
     step is not really needed ... but it doesn't hurt to run this) ...
        $ python /home/apache/tactic/src/bin/
(20) Test to make sure TACTIC server is able to run ...
        $ python /home/apache/tactic/src/bin/
    ... and then, from a browser, go to the TACTIC web UI and confirm everything is functioning properly
(21) Finally set up TACTIC to automatically start up as a service when the server is rebooted ...
        $ sudo update-rc.d tactic defaults


aditiapratama's picture
Submitted by aditiapratama on

Hello Mike,
I followed your tutorial and up to the installation process, I've got the following error log

Please enter the base path of the Tactic installation:

(/home/apache) ->

Traceback (most recent call last):
  File "", line 846, in <module>
  File "", line 236, in execute
  File "", line 565, in install_to_python
    version = my.get_version()
  File "", line 410, in get_version
    f = open('%s/VERSION' %current_dir,'r')
IOError: [Errno 2] No such file or directory: '/home/apache/install_packages/tactic-3.8.0.v03/VERSION'

Immediate response would be appreciated.

CG Artist, Pipeline TD & Open Source Specialist

Submitted by zephchai on


Hi, I have followed the instructions and everything went well until the installation where it 
is trying to update the database.
Creating database 'sthpw' ...
Importing schema [config] to database [sthpw]...
   path [/home/apache/tactic/src/pyasm/search/upgrade/sqlite/config_schema.sql]
Importing schema [sthpw] to database [sthpw]...
   path [/home/apache/tactic/src/pyasm/search/upgrade/sqlite/sthpw_schema.sql]
Traceback (most recent call last):
  File "", line 849, in <module>
  File "", line 313, in execute
    database.import_schema(project_code, project_type)
  File "/home/apache/tactic/src/pyasm/search/", line 2006, in import_schema
sqlite3.OperationalError: no such table: project

This is the file that is causing the problem. When I tried to comment out that INSERT line, I found
that all the INSERT line are wrong. There is no table project or search_object
Would truly appreciate if someone can point me where the 2 tables are created. Thanks!

Submitted by t_maq on

Hi, sorry that I haven't been active on the community for a while ... the last bit of 2012 is rather crazy busy for me!
@aditiapratama, @zephchai: I hope you both were able to solve your issues. Apologies that I wasn't able to pipe in in a more timely manner to assist.
I've just sent the folks at Southpaw my revision 4 of this guide that is much further refined after having gone through the process of doing a complete clean-slate install of both Ubuntu and TACTIC many, many times now.
@aditiapratama:  hopefully your issue is sorted! Not sure why the script would not find the VERSION file ... only things I could recommend is to be sure that you have unzipped the release properly in the /home/apache/install_packages/ folder, and that the unzipped folder is named "tactic-3.8.0.v03" (as it looks like that's the version you are trying to install) ... and then to also check that there is a VERSION file immediately inside of that folder. You may want to redownload the release and unzip it again in the /home/apache/install_packages/ folder.
@zephchai:  hope that you've sorted out your issue as well! Not sure about the error you are experiencing -- I haven't seen that one in all of my many iterations of going through this process.  If you are still encountering this issue, you may want to create the "/home/apache/projects/config/" folder (if it's not already there), and then copy the "/home/apache/install_packages/<your-tactic-version>/src/install/template/config/tactic_linux-config.xml" file there, and then try redoing the "sudo python" step.
Anyway, this response is coming quite late. Let me know if you guys still have issues with this process and I'll aim to pipe in a lot quicker. And hopefully my latest revision to this guide gets uploaded (or is already uploaded).

Submitted by zephchai on

Thanks for reply. I can't remember what I did but I managed to solve the problems.
And cool that you got it updated. But hopefully I won't have to go through the installation again

Submitted by t_maq on

This guide has just been revised ...
FYI - This post has just been updated with my latest revision (rev 4).  Hope it's a much smoother process for everyone!

Submitted by BeeandBird on
We are setting up a tactic server based on a Ubuntu 12.04 Server machine to manage our production.
Also, we are using NFS to mount a folder (located in an Open-E storage environment) where we will host our assets and database.
We currently have Active Directory for all machines (except this), but NFS is not using any of this. We would only use Domain credentials if we tried with Samba mount, right?
For us, almost everything seems to work fine: check-ins, check-outs, etc. Problem is, we are unable to delete files from Tactic's web gui.
When we do it, the database seems to update (the entry is no longer shown in the gui) but the actual files are still in the storage. Fact is, we can't even delete them from any machine in the network, only directly from the Ubuntu Server.
As I said before, could this be solved by using the Active Directory credentials?
We would join domain and use AD credentials to login and mount with Samba the share.
Is there any advice you could give us regarding this?