Clothing shops and the food/drink shops apparently increase happiness. As does having a doctor's clinic.
I've done some research online and I've found what causes the apparent bed issue... and it's stupid A.I. I'll explain.
When you build beds, you're supposed to assign settlers to their beds. If you don't, settlers at night will randomly find a bed and sleep on it. Other settlers will then come to the same bed, find that the bed is already taken, and instead of going to another bed, they just don't go to bed at all.
I've also read that you need to make the beds easily accessible in terms of pathways. So if you have beds built closely together to the point that you yourself can't walk in between them, then that means your settlers can't access the bed.
I was confused by this. My Sanctuary Hills has 18 settlers with 35 beds, but I had people complain about the bed situation, claiming they had to sleep in shifts. I thought this was ridiculous, because again, 18 settlers, 35 beds.
Last night I got rid of a few beds and I made sure that each bed was easily accessible. I also took the time to frustratingly assign each settler their own bed. I then eventually saw the happiness meter rise from 40, to 49 in about half an hour, and I haven't heard one settler complain about "the bed situation".
The more time you spend in your settlement, the happier your settlers will be. This one is kinda dumb, because you should be spending your time exploring the Commonwealth and doing quests, not hanging out in your digital home.
I also discovered that the higher your charisma, them more settlers will come to your settlement. If your charisma is 10, then you can have 20 settlers.