Siwapp Rough install guide

1.- Requirements

  • System
    • Windows
    • Linux
  • Software
    • Apache web server.
    • Mysql database server
    • PHP 5.2 or higher (better 5.2.4 or higher)
  • Privileges
    • Console access, or a way to execute symfony tasks.
    • In case you plan to use the "recurring invoice" access, you need access to a scheduling application within your system (i.e. cron)

2.- Download & unpack the source

Remember to give write permissions to the Apache user on these directories (create them if don't exist):

/path/to/siwapp/cache
/path/to/siwapp/log
/path/to/siwapp/web/templates
/path/to/siwapp/web/uploads
/path/to/siwapp/web/uploads/*

3.- Configure your web server

Apache configuration:

Let's assume you want your host to be named siwapp.example.com , and your siwapp software is unpacked at /usr/local/siwapp

<VirtualHost ....>
  ....
  ServerName siwapp.example.com
  DocumentRoot /usr/local/siwapp/web
  Alias /sf /usr/local/siwapp/lib/vendor/symfony/data/web/sf
  AddDefaultCharset    utf-8
  <Directory /usr/local/siwapp/web>
    AllowOverride All
  </Directory>
  <Directory /usr/local/siwapp/lib/vendor/symfony/data/web/sf>
    AllowOverride All
    Allow from All
  </Directory>
  ...
</VirtualHost>

That, of course, if you want to put it under a "virtualhost" section.

NOTE: The Alias directive:

<VirtualHost>
  ....
  Alias /sf /usr/local/siwapp/lib/vendor/symfony/data/web/sf
  ...
</VirtualHost>

Will no longer be needed starting from version 0.2

NOTE II: You can also check http://trac.symfony-project.org/wiki/InstallingSymfonyOnSharedHostNoSsh for instructions on installing symfony on a shared host environnment.

4.- configure the database

  • Create a database. Make sure you use the utf8 character set. Name it with a cool name .
  • Once you've created the database, create a database user with the following privileges over the recently created database:
    • select
    • insert
    • update
    • delete
    • create
    • drop
  • If you're a commandline freak, here are some commands four you to accomplish that. Assuming the following data:
    • database root user = root
    • database root password = password
    • database host = dbhost
    • your siwapp database name = siwapp_db
    • your desired siwapp database user = siwapp_user
    • your desired siwapp database user password = siwapp_password
      bash$ echo "CREATE DATABASE siwapp_db DEFAULT CHARACTER SET utf8" | mysql -u root -ppassword -h dbhost
      bash$ echo "GRANT ALL PRIVILEGES ON siwapp_db.* TO 'siwapp_user'@'%' IDENTIFIED BY 'siwapp_password' " | mysql -u root -ppassword -h dbhost mysql
      bash$ echo "GRANT ALL PRIVILEGES ON siwapp_db.* TO 'siwapp_user'@'localhost' IDENTIFIED BY 'siwapp_password' " | mysql -u root -ppassword -h dbhost mysql
      bash$ echo "flush privileges" | mysql -u root -ppassword
      

5.- Go crazy with symfony tasks

  • Configure the symfony app to use the database you've chosen. Again, assuming the following data:
    • Database Name: siwapp_db
    • Database Host: dbhost
    • Database User: siwapp_user
    • Database Password: siwapp_password
      ./symfony configure:database "mysql:host=dbhost;dbname=sywapp_db" siwapp_user siwapp_password
      
  • Build the database structure. (it's important that the database user has the proper permissions described in 4)
    ./symfony propel:insert-sql
    
  • Create a user for the siwapp web application:
    ./symfony guard:create-user  <your siwapp user> <your siwapp user passwd>
    
  • There you go! now, first thing first
    • Go to "settings" (top right of the screen) and set everything you can.
    • Start playing around.
  • If you want to fool around a litte before going serious, you can try some random data with the following symfony task:
    ./symfony siwapp:random-data-load
    
  • Once you're tired playing, just run
    ./symfony propel:insert-sql 
    
    again and you'll have a clean db. Don't forget to create again the user.