Creating a realistic texture is very challenging. Often, when one is needed for a model, I will start by finding an image, usually off Google images. From there, I will either produce a new texture from scratch, or edit the base image so that it will work properly. This particular image was edited so that it could tiled without seams. I also added several details to it. Here is a demonstration of an edited image so that it can be used as a texture for a 3D model.
From right to left: Diffuse Map, Bump Map, Normal Map.