It’s been an interesting couple of months as far as keeping my websites up and running, getting my money’s worth, etc. I’ve had my websites running for a decade now. I started with GoDaddy, which was fine for a shared server and for learning. I don’t know anything about their service now, but back then they were oversold and performance was garbage. Plus their servers were configured strangely and that caused a lot of issues for me. I jumped ship a while back to Bluehost. I don’t really have any complaints about them, again, fine for shared hosting. My performance increase with Bluehost and their servers were configured a bit better for being able to run WordPress appropriately. Every year when I would renew though, I kept questioning if I was getting my money’s worth. After the initial period, the price goes up and they tack on mandatory additions. It was something like $17 a month.
Ever since Google announced their cloud offerings like App Engine, Compute Engine, etc. I was eyeballing what they had. I hate changing hosts. I always screw things up, there’s always configuration differences, etc. But at the beginning of the year, I finally decided to give it a go. They offer a 2 month/$300 trial period (whichever comes first) which is plenty to test.
I’ll probably make some various posts soon about all the random crap I had to deal with in order to get everything running smoothly, but for now, here’s my quick progression. Some day I’ll learn to take notes as I go. Now I can’t remember everything I had to deal with and if I ever start over, I’ll have to work through the issues brand new again. And there were some challenges for me!
First up… my Google server is mine. It’s not like shared hosting where you log in to your cPanel, FTP some files, and get to tweaking. You have to spin up your own server… I mean, you have to pick every component you want first just to have a server. I jumped in on the g1-small giving me 1 CPU, running Ivy Bridge, with 1.7 GB memory available. I am running 6 sites on a WordPress network with most low traffic and one moderate as well as an internal Yourls install. The g1-small is OK for now, a good balance of perforance against cost. The next level would probably cost me $10 or more extra a month. As it is now, my sites are running way faster and I only occasionally exceed my hardware.
Next up, no cPanel, no easy FTP. It’s all command line. I haven’t run cl since I was playing on Unix boxes back in grade/high school. Thank goodness lots of people post lots of help, I was able to learn what I needed every time pretty quickly.
My work path was pretty simple. You can deploy pre-built solutions on Compute Engine. I picked Compute Engine over App Engine as the flow just made more sense to me. It was more akin to what I am used to with how servers work. So I went ahead and picked a vanilla WordPress install. I first tried the Multisite deployment and I broke it. Then I went for the Bitnami solution and I just don’t get it. Their solutions are popular, I’ve just worked with WP on a standard LAMP server for a decade now, so that’s what I wanted. That’s what I got with the basic WP install. After getting that up, I opened it to the public and set it up with a static IP. I then updated everything and converted it to a WordPress Network. Tested all that and we were good to go. Next up I just FTPd all my files and mysql dump to the server.
That alone was a lot of figuring. I had to FTP through SSH which was definitely brand new to me. It’s good, extra security is definitely good, it’s just different. Luckily once everything was up, I was done. No need to ever FTP again that I can see thanks to Google Storage buckets which I’ll describe in a minute. I can safely move files there if I need to wipe and start over, then bring them back. I got a bit of practice with this. I wanted to clean up my directory structure a bit from the way I had my old host set up. I had added and removed so many domains and subdomains that things got real sloppy. Now that I could set my own web root I wanted to split out my Yourls and WordPress to their own areas rather than nesting them. I was working through virtaul hosts on the server and completely broke stuff eventually. So I had to start over. That’s also a warning, you are your own server admin. If you break it, ya gotta fix it! I spent a lot of time Googling to fix things that I broke.
Once I got everything up and moved from my home directory to my web structure, I imported my mysql dumps to the DB that was setup automatically. That all went smoothly. I then swapped my DNS and everything worked. It was crazy simple! I ran into problems very slowly. I could update my plugins, but was not able to run an update of WP core. I did a fair bit of searching and finally found a tutorial for SSH FTP WordPress updates from Digital Ocean, I believe. I set up a WordPress user in Apache and gave it ownership over all the files. Set up some SSH certs and added the appropriate info to my config file and I was back in service. But now my media wouldn’t upload. This was hard for me to figure out, but the month had rolled over and that triggered the issue. It turned out to be that WP couldn’t create new folders as a result of the changes I made for core updates. After a bit of work, I changed ownership of the uploads directory back to www-data and all was well.
So now I was back at full swing, I thought. Next problem up was that I host music for DJ Odawa. He needs to be able to upload and post to his site. I used to give him FTP access to his own directory and then a plugin in WP could pull from that to play his music. I wasn’t sure how or if I could grant him access to a directory, and I didn’t know how to describe the process he would have to use to establish certs and SSH into the server. I spent a good deal of time figuring, then I stumbled on Google Storage buckets. I could establish a bucket and give him read/write access to it and he could simply do browser based uploads. It was actually even more convenient than having him FTP, all he needed was a Google account, which he already had. So now he was able to upload, but I wanted to put all of his music in that bucket. That was better for him, used less server resources, etc. But, I had no clue how to move his music without breaking the links we already had out in the wild since his mixes go out to iTunes, etc.
Again, more searching. I discovered that I could mount my storage buckets to my server. I installed Fuse per Google guide and mounted. Then I had to grant read/write to my server. That was simple, I could now get to these files in a bucket from my server (that’s how I moved files back and forth when testing and starting over with server testing). Finally, I was able to delete all my music from the server and symlink the path of the bucket direct to where the music used to live and BOOM, it worked. Now I can technically give anyone their own bucket and they can upload music for me to host easily, in browser, with no access to my server. To be honest, this bucket storage is dirt cheap. I intend to serve all my WordPress media from storage sometime soon. I just have to sit down and plot out my buckets and symlinks to not cause any conflicts, basically because of the way multisite sets up folders, and the fact that I had put all my music in that structure to begin with on the old server. The way things used to nest could cause problems with how I want individual buckets. One last work on buckets, the storage unmounts on a server restart. So you have to go in to command line and remount any you’ve mounted. I know there is a way to automate that, I just haven’t figured it out yet, so it’s on my to do list.
Now, we could be done here, but I pushed things a bit further. I thought maybe moving to Google’s CloudSQL might help my server use less resources. And it does! There are several tutorials around the web and it was real easy to set up. I Just got that instance running and configured (for this, f1-micro was plenty), made the DBs, a new user for each, and imported my dumps again. Then I changed over my config files to read the new DB and I was done.
OK, not quite… I decided to swap all my domains to Google Domains, they were expiring anyways, I like having everything in one place, and I hated Bluehost’s interface. Once they were swapped I set up Google’s CloudDNS … that was just for shiggles to be honest.
So, that’s everything I have setup. I can tell you with certainty that my websites are much faster. I have not optimized anything, just swapped hosts. And I’m probably not on the best server for me since I want to reduce cost (Google gives status updates if you should upgrade or downgrade what you are using).
I do believe my hosting will cost about $20 a month now. It’s hard to be certain as with Google you pay for what you use. I’ve been doing a lot of tinkering, so I move files between storage and server, spin new servers up, etc. The tinkering adds cost. You pay for machines, storage, traffic, etc. I just paid $16 for 2 weeks. I made a couple of mistakes that tacked on at least $5 by buying machines way bigger than I needed.
I’ll provide more details and more cost breakdown as I plug along. Chances are I will spin up new servers to learn and keep rebuilding my setup until I get it just right.
Bottom line, I recommend Google for hosting. It’s not the easiest place to host, but the performance is great and the choices and offerings are killer!