The Upsilon(1S), Upsilon(2S), and Upsilon(3S) production cross sections are measured using a data sample corresponding to an integrated luminosity of 35.8 +/-1.4 inverse picobarns of proton-proton collisions at sqrt(s) = 7 TeV, collected with the CMS detector at the LHC. The Upsilon resonances are identified through their decays to dimuons. Integrated over the Upsilon transverse momentum range pt[Upsilon] < 50 GeV and rapidity range abs(y[Upsilon]) < 2.4, and assuming unpolarized Upsilon production, the products of the Upsilon production cross sections and dimuon branching fractions are sigma(pp to Upsilon(1S) X) B(Upsilon(1S) to mu+ mu-) = (8.55 +/- 0.05 +0.56/-0.50 +/- 0.34) nb, sigma(pp to Upsilon(2S) X) B(Upsilon(2S) to mu+ mu-) = (2.21 +/- 0.03 +0.16/-0.14 +/- 0.09) nb, sigma(pp to Upsilon(3S) X) B(Upsilon(3S) to mu+ mu-) = (1.11 +/- 0.02 +0.10/-0.08 +/- 0.04) nb, where the first uncertainty is statistical, the second is systematic, and the third is from the uncertainty in the integrated luminosity. The differential cross sections in bins of transverse momentum and rapidity, and the cross section ratios are presented. Cross section measurements performed within a restricted muon kinematic range and not corrected for acceptance are also provided. These latter measurements are independent of Upsilon polarization assumptions. The results are compared to theoretical predictions and previous measurements.