There are three classical solutions in this case:
This is when the website's content and layout changes depending on what machine it's accessed from. The content of the site remains the same, and you still have the same URL, but mobile and desktop users see slightly different versions of your content. For example, the size of the page's sections may be different, or the sections may be re-arranged. Also, some information may be missing when the mobile user accesses it.
This is when you have two URLs: one for mobile users and one for desktop users. Usually visitors are redirected based on their user agent/browser. The advantage of this option is that you can make the mobile version completely different form your desktop one, with different content if you'd like. The disadvantage is, however, that you'd need to maintain 2 sites separately, which is double the effort in most situations.
a mobile app (however, most small to mid-size businesses can't really afford it)
As a rule, mobile apps provide a better and richer mobile user experience, but the cost of building and maintaining one is often high. Besides, you'd need a different apps for each new platform.
OK, it's impossible to explain all the intricacies of each approach in a short post, but you can find tutorials on Google.
It's also generally believed that mobile users have slightly different needs than desktop users. Most likely they'd like to know your business hours or location. So, one of the best practices is to provide this information first thing on a mobile site.
Other best practices include making clickable buttons larger than on a desktop site, minimizing scrolling, removing large images that are not that important to complete the site's goal, etc.