Working out where to put the holes on a simple flute is surprisingly complex. This web app is based on Pete Kosel's venerable Flutomat Javascript Flute Calculator - which in turn is based on the work of Arthur Benade, a pioneer in the field of musical acoustics.
Start by deciding how many holes the flute will have, and what key you want it to be in (or choose a note to call the key note). Now input how many cents (hundredths of a semitone) you want each open finger hole to sound, relative to that key note - within the lowest playing register. You will also need to input the inside diameter, wall thickness and diameters for all the holes. Flutomat will then tell you where to put the holes (in the Distance column).
The Lip cover (%) field is important for fine-tuning the distance of the blow hole from the end of the flute. In practice, different players will prefer covering different amounts of the blow hole with their lips. This makes the blow hole effectively smaller. Changing this quantity will only affect the position of the blow hole - not the other holes. If you have an existing cylindrical flute you like the sound of, it may be useful to try to model it roughly within Flutomat, and adjusting the lip cover percentage, until the blow hole location is in a similar place as for your flute. This will also tell you what lip cover figure to use, when making other, similarly sized flutes.
A note about making flutes from PVC pipe: this is an excellent material to experiment with making flutes. Don't forget to wear a dust mask when sanding the holes.
N.B. I mostly play the North Indian bansuri style of flute, with large finger holes and key note played with three finger holes closed. Western folk flutes tend to use six fingers down (a perfect fourth down, or fifth up) as the key note. So what I call a C flute, others will think of as a G flute, etc. This may be worth considering when viewing the following examples.