There are many open source software and approaches for your question but I suggest options:
GeoServer (www.geoserver.org) - Webmapping server developed in Java by OpenGeo. You can find lots of documentation online (look for the tutorials in the OpenGeo site). GeoServer has a very friendly admin interface so you can install and start publishing your geo data very quickly.
MapServer (www.mapserver.org) - Very traditional webmapping server! You will find many products developed over MapServer. There is lots of documentation online.
Others options: MapProxy/Mapnik, MapBox, CartoDB, etc. MapBox and CartoDB are more cloud solutions but it can useful (depends on your project requirements).