Adding a product with multiple variations - size, color, dimension, etc

I have a client who sells vinyl sign frames. Each item has several different options - height, width, color, with our without stakes, etc. Each of these affects both price and shipping. Can you tell me the best way to make this work?