For the file server portion, I would recommend just using Samba. On your server, partition your primary mount point ( / ) and your /home partitions separately (this allows you to do future upgrades as new installs, just not formatting the /home partition and simply migrating the data over to the new user accounts). You might want to have a separate mount point for your files that the server will serve up to the network. You can create sub-directories on that mount point that use different permissions in order to prevent guests from over-writing data, etc.
For the Apache web server,...
here's a nice explanation from Stack Overflow.