# Quick installation instruction The installation of InDefero is composed of 2 parts, first the installation of the [Pluf framework](http://www.pluf.org) and second, the installation of InDefero by itself. ## Recommended Layout of the Files If your server document root is in `/var/www` a good thing is to keep the number of files under the `/var/www` folder to its minimum. So, you should create a `/home/www` folder in which we are going to install all but the files which need to be available under the document root. /home/www/pluf/src/ /home/www/pluf/src/Pluf.php /home/www/pluf/src/migrate.php /home/www/indefero/src /home/www/indefero/www /home/www/indefero/www/index.php /home/www/indefero/www/media The you need to link the `media` and `index.php` files into your docroot. $ cd /var/www $ ln -s /home/www/indefero/www/index.php $ ln -s /home/www/indefero/www/media ## Installation of Pluf * Checkout the trunk of [Pluf](http://www.pluf.org). * Install the `Mail` and `Mail_mime` classes from [PEAR](http://pear.php.net). You must use the `--alldeps` flag when installing these modules. **Pear install/upgrade:** $ sudo pear upgrade-all $ sudo pear install --alldeps Mail $ sudo pear install --alldeps Mail_mime If you already have some of the PEAR packages installed with your distribution, the `Mail` package is often not up-to-date, [read more here](http://projects.ceondo.com/p/indefero/issues/104/#ic347). The Pluf installation folder is the folder containing the file `Pluf.php`. ## Installation of InDefero The installation is composed of the following steps: * Get the InDefero archive. * Configure it correctly. * Installation the database with the `migrate.php` script. * Bootstrap the application with a `bootstrap.php` script. Here is the step-by-step installation procedure: * Extract the InDefero archive somewhere. * The InDefero installation folder is the folder containing this file INSTALL.mdtext. * Make a copy of `src/IDF/conf/idf.php-dist` as `src/IDF/conf/idf.php`. * Update the idf.php file to match your system. * Make a copy of `src/IDF/conf/path.php-dist` as `src/IDF/conf/path.php`. * Update the path.php file to match your installation paths. It should work out of the box if you followed the recommended file layout. * Open a terminal/shell and go into the `src` folder in the InDefero installation folder. **Command:** $ cd /home/www/indefero/src * Run `php /home/www/pluf/src/migrate.php --conf=IDF/conf/idf.php -a -i -d -u` to test the installation of the tables. * Run `php /home/www/pluf/src/migrate.php --conf=IDF/conf/idf.php -a -i -d` to really install the tables. * More details about the migration is available in the [migration documentation](http://pluf.org/doc/migrations.html) of the Pluf framework. * Create a bootstrap file to create the admin user for example `www/bootstrap.php`. Do not forget to update the second line with your path to Pluf. **Bootstrap script:** first_name = 'John'; $user->last_name = 'Doe'; // Required! $user->login = 'doe'; // must be lowercase! $user->email = 'doe@example.com'; $user->password = 'yourpassword'; // the password is salted/hashed // in the database, so do not worry :) $user->administrator = true; $user->active = true; $user->create(); print "Bootstrap ok\n"; ?> * Run `php www/bootstrap.php`. * Remove the `www/bootstrap.php` file. * Open the `www/index.php` file and ensure that the path to Pluf and Indefero are correctly set for your configuration. * Now you can login with this user into the interface. * Click on the Forge Management link on top and create your first project. ## Upgrade InDefero To upgrade: * Make a backup of your data, including the database. * Extract the new archive on top of the current one. * Update your version of Pluf. * Check that the path in the `index.php` are still good. * Remove all the `*.phps` files in your temp folder. * Upgrade the database with the upgrade commands: **Upgrade commands:** $ cd /home/www/indefero/src $ php /home/www/pluf/src/migrate.php --conf=IDF/conf/idf.php -a -d -u $ php /home/www/pluf/src/migrate.php --conf=IDF/conf/idf.php -a -d ## Repository Synchronization The documentation is available in the `doc` folder. * Subversion: `doc/syncsvn.mdtext`. * Mercurial: `doc/syncmercurial.mdtext`. * Git: `doc/syncgit.mdtext`. ## For the Apache Webserver Users If you are using [Apache](http://httpd.apache.org/) for your webserver and want to have nice URLs like `http://yourdomain.com/p/yourproject/` and not `http://yourdomain.com/index.php/p/yourproject/` you can use the following `.htaccess` file to be put in the same folder of the `www/index.php` file. Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) /index.php/$1 `Options +FollowSymLinks` is only needed if you are using symlinks. ## For the Gentoo users If you get the error: T_CHARACTER Use of undefined constant T_CHARACTER - assumed 'T_CHARACTER'" you need to compile PHP with the "tokenizer" flag. ## For People with open_basedir restriction error If you get an error like: file_get_contents(): open_basedir restriction in effect. File(/etc/mime.types) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/) Just copy the file `/etc/mime.types` into the folder `/home` and put this in your configuration file: $cfg['idf_mimetypes_db'] = '/home/mime.types'; ## FreeBSD Installation You need to install `/usr/ports/lang/php5-extensions` which contains the Standard PHP Library (SPL). ## Using a SMTP server with authentication If your SMTP server requires authentication, for example, *smtp.gmail.com*, you can use the following email configuration: $cfg['send_emails'] = true; $cfg['mail_backend'] = 'smtp'; $cfg['mail_auth'] = true; $cfg['mail_host'] = 'ssl://smtp.gmail.com'; $cfg['mail_port'] = 465; $cfg['mail_username'] = 'YOURGMAILADDRESS'; $cfg['mail_password'] = 'YOURPASSWORD'; Check with your provider to get the right settings. ## Git Daemon on Ubuntu Karmic If you have problems getting it to run, you can follow this procedure proposed by Mathias in ticket 369. 1. Install git-daemon-run in addition to git-core 2. Edit /etc/sv/git-daemon/run to look as follows: #!/bin/sh exec 2>&1 echo 'git-daemon starting.' exec chpst -ugit:git \ /usr/lib/git-core/git-daemon \ --reuseaddr \ --syslog \ --verbose \ --base-path=/home/git/repositories \ /home/git/repositories 3. Restart git-daemon-run sv restart git-daemon ## If Subversion is not working If you access a Subversion server with a self-signed certificate, you may have problems as your certificate is not trusted, check the [procedure provided here][svnfix] to solve the problem. [svnfix]: http://projects.ceondo.com/p/indefero/issues/319/#ic1358 ## If the registration links are not working If You have standard instalaction of PHP ie in Debian, php.ini sets mbstring.func_overload to value "2" for overloading str* functions. You need to prevent the overload as it does not make sense anyway (magic in the background is bad!). See the [corresponding ticket][reglink]. [reglink]: http://projects.ceondo.com/p/indefero/issues/481/