Keeping track of unique deposit Bitcoin Addresses per user
Just run bitcoind on your server and then connect via API to it, here is the reference:
https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)

There are also ready (open source) libs in several languages, which you can integrate in your own apps.

Some examples:


https://github.com/Bit-Wasp/bitcoin-php
https://github.com/Bit-Wasp/bitcoin-lib-php
https://pypi.python.org/pypi/python-bitcoinlib


But your question is too broad to give you a more specific answer, since you have to consider, if you want to hold user funds in one wallet and just identify them by different deposit addresses or a separate wallet with it's own keys for every single user.

In general: If you don't know exactly what you are doing, don't store any private keys on the server, especially if you want to hold someone's funds.