I get most of my traffic from social networking website. Engaging in regular promotion in various social networking and bookmarking websites help to generate a good number of unique visitors daily for my blogs. Other ways are guest posting and link building in some high profile blogs. Such as blog comments help a little bit to drive a few browsers.
If you offer your customer something for free or a discount in exchange for an email address you can build a list of quality customers and send them promotions
They come from all of those you mentioned combined. You need to use many methods as they really complement each other and working together bring you a lot of traffic and therefore customers.