In order to rank on a particular set of keywords you need to begin by doing some keyword research in order to determine both what your primary and secondary set of keywords are.

Keywords are what you will try to use extensively 1) throughout your sites articles (3-5% keyword density or 2-3 times every hundred words) 2) in your domain name and subdomains 3) bolded and in your main headings <h1> to <h3> (make sure to use the proper <b> and <h> tags) 4) and lastly in your alt tags and image titles. You may also choose to add in rich snippets that target these keywords.
These are a large number of tools on the market to do keyword research with however probably the best out there are Google Insights and Google Adwords keywords tools. Once you have identified your primary keyword you are going to need to figure out the related terms that google associates with your primary keyword (they call this latent semantic indexing). These terms will need to appear in articles as well in order for google to identify you as an authority on a topic. These terms again should appear in the previously mentioned areas.
I would push for a more broad net approach when selecting keywords and developing content. That is to say I would target all the terms that you can think of that are related to your key term, use them in your articles and tie them to a geographical location.  The more you use synonyms and closely related terms the more likely your page will be found.
Next up it is important to note that Google likes 1) lots of pages with 2) targeted and 3) specific content. That is to say rather than building 10 pages with 500 words on them rather build 50 pages with 100 words per page. This of course would however leave you with allot of pages and little indication for search engines as to which matters and their relation to each other. The way you do this is by developing a silo structure in advance of developing your particular pages. Silo structure refers to the organization of your pages in folders, sub folders and so on. Ideally you are going to want to work from a general term like “roofing” and work into your subpages more and more particular topics. The end result will be something that reads as follows.
Ideally you will use no follows (html tags which stop search engines following particular links) to ensure that search engine’s read your content in a particular way and direct all of the “juice” generated by your pages, and the authority you have on a particular topic  to a particular end page that you want your end user to find in searching for whatever the keyword is that you are trying to target.
If you do this and fill and ensure that your keyword is used propertly in each of your articles/pages your on-page SEO should get you ahead of the game. This of course is only half of the battle. You will need to take care of what is called off-page SEO.
In large part off page SEO determines your pages rank while on page SEO determines a pages authority. The idea being that on page determines what you show up for and off page SEO determines where you show up. Primarily off page SEO is determined by
1) the number of inbound links to your site and the rank of the pages from which they come
2) the titles of the links which connect to your site and their general relation to your site’s topic
3) you sites associated social media connections (twitter, facebook, linkedin etc).
These factors, in addition to a couple other less important ones, are seen as lending authority to whatever claim is being made and thus determine where your pages will rank on a particular topic. In addition to lisitng yourself in directories, commenting on blogs and doing the regular link building circuit you are going to want to register for Google’s webmaster tools, Bing’s equivalent and you are submit your site for indexing.
As for building social media reach your easiest option is twitter. You can search topic related tweeters and follow two to three hundred a week. You will have a handful of people which reciprocate your follow and follow you back. At the end of the week use a mass unfollow tool (such as to unfollow anyone not following you and repeat the process. In matter of a couple weeks you will have hundreds of followers.

The last thing that I would suggest is that you tie your website to a physical location on Google maps. Google’s results on products and terms significantly vary depending on your geographical location. Google prioritizes places that have both the location in their content but importantly also have them tied to a geographical location via Google maps. This is true to the extent that Google has actually acknowledged the degree of priority based geographic results as an issue with their algorithm when companies have several cross country locations. All that to say having a location in your targeted geographically location is worth its weight in gold.