FrontAccounting has been in development for many years, and is the choice I made for my accounting software. There is a short piece on the history of the project here on SourceForge and in my experience it is a very nice platform to work with. There are a lot of things that you will not be able to do, or that I have not found out how to do. But if you are reasonably able to install an application on a server, or have someone to manage it for you, it works perfectly for small and medium enterprises.
However, I always approach the updates with some trepidation, not that it they have turned out to be exceptionally difficult or risky, but because the FrontAccounting project apparently has few resources to update their documentation. Reading the upgrade-guide always makes me wonder whether it is up to date. And in the download package for version 2.3.11 the update.html file still explicitly mentions that it is for version 2.5.
But fear not, it is actually a simple process to make the update. And as a result the description below is more of a helpful checklist than anything else. I did learn some useful command line trick this time around. The checklist applies to an update on an Ubuntu server with the application running under Apache.
1. Backup the databases of each company from the front-end
If you can, then walk through the database of each company and make a back-up. If you manage many companies under one installation, then send a gentle reminder to all local admins to make the backup. You will need to talk to them anyway, as you will have to take the application off line during the update.
2. Set the templates of the first company back to default
Since I seldom use this functionality I usually get confused between “Install/Activate Themes” and Company Setup. You will need to switch back to the default theme under Company setup (or ../admin/display_prefs.php?). This is a standard step in updates, because should anything go wrong, your application will want to go back to it’s defaults, and you will still be able to log in.
3. Make sure there are no active users
If you are the only user, then logout of the application and login to the server (logout is important so that there are no active users) and close the browser window. If you have a multiple users, then take the application off line by with the method of your choice (see these instructions for example) waiting for the session-expiry time to pass. This will make sure than any users that were still logged on despite your previous instructions are now logged off.
4. Backup the entire database through mysqldump
Yes, we have a backup of each of the companies in step 1, but it always makes sense to have the entire database backed up to be able to quicky restore the entire application and all it’s users. It is done with a standard mysql command:
$ mysqldump -u DATABASENAME -pPASSWORD USERNAME > /home/apache/FA_backupDate.sql
5. Check current version in your source control
If you have setup source control to include all, or just the configuration files, check to see if the current application folder has been versioned and that the version is up to date.
6. Copy a Backup of the current application folder to a temp folder
If you just copy the entire folder directly as root (or better: sudo) then you loose all permission settings. There is a nice way to avoid this using the -p flag of the copy (cp) command:
$cp -rp /var/www/FOLDERNAME/ FOLDERNAME.backup
The -p flag makes sure that you preserve all the permissions settings as you have them in your current install. This is useful, because there is very little documentation on the required permissions for front-accounting, so once you have a safe installation going, you will want to be able to look back what those settings where.
7. Overwrite the files as instructed in the update-guide
Note that the file dates of the original folders will not change. So when you do a file list with ls -l you will only see new dates on the file level.
8. Check the file and folder permissions
Check to make sure that your server can access the files (Apache or NGINX). I find that the permissions stay as they were previously after the copy command and no changes are necessary.
9. Update the configuration file
If you use version control you can check with diff to see if there were any changes you need to incorporate. For the update from 2.3.9 to 2.3.11 no changes are necessary.
10. Check if any front-end updates are required
login to the first company and go to setup>Software Upgrade to check if there are any install options displayed. There are none in the 2.3.9 to 2.3.11 upgrade. But you will want to set the theme back from default to the one of your choosing after the upgrade.
11. Check if there are any obsolete files
I had not placed the entire application under version control before the upgrade. So I do not know for sure, as there are no files specified in the update instructions.
That’s it. The steps above may be over-exhaustive for your particular setup, so just make a copy and delete the steps that are not applicable to you.