You should test your deployment process on private network or test network throughly before trying mainnet. I see you have tested yours on Ropsten, but I would suggest you to test preferably on Rinkeby because in Ropsten block gas limit is too low.
In my experience gasPrice setting in truffle.js is effective. I have successfully deployed my contracts using the following syntax:
geth_mainnet: {
host: "127.0.0.1",
port: 8545, // geth-mainnet
network_id: "1",
gasPrice: 2000000000, // 2 GWei
from: "0x...your-address-goes-here..."
}
Make sure your account has enough funds not only for your smartcontract deployment, but also for deployment of truffle's Migration contract and calls to that contract.
Hope it helps!
Join our Blockchain course today to learn more about it.
Thanks.