Preheat oven to 350°F and grease a 9x13-inch baking pan.
In a large bowl, whisk together flour, sugar, baking soda, and salt.
In a saucepan, combine butter, water, and cocoa powder. Bring to a boil, then pour over dry ingredients and mix well.
Add eggs, sour cream, and vanilla extract. Stir until smooth.
Pour batter into prepared pan and bake for 25-30 minutes, or until a toothpick comes out clean.
For the frosting, combine evaporated milk, egg yolks, butter, and sugar in a saucepan. Cook over medium heat until thickened.
Remove from heat and stir in coconut, pecans, and vanilla extract.
Spread frosting over cooled cake before serving.