Upgrading High Sierra to Catalina on 2016 MBP using local webserver

catalinaupgradewebserver

In the past colleagues (and I) believed it was often a bad idea to install newer OSs on older Macs. I get the feeling that has changed, and that putting Catalina on my 2016 MacBook Pro shouldn't be a problem.

What I'm wondering about is whether my local webserver will survive the upgrade. I have Apache/MySQL/PHP set up in the same approximate manner as we were told to do this years ago – sites running in /Library/WebServer/Documents, custom hosts and httpd-vhosts.conf files in /private/etc and so on. In past os upgrades and moves to new machines it's been necessary to re-set-up all that, which isn't a huge problem but also not a lot of fun.

In the past it helped that I was migrating to a new machine, so I had access to my whole old setup and could do things like export MySQL databases from the old and import into the new. This time I'm thinking about upgrading my existing machine so I won't have easy access to a backup while I'm doing this.

I hate the thought of buying a new machine just so I can upgrade the OS. On the other hand this is my work machine and it's 4 years old (and has a dead speaker) so perhaps it's time to bite the bullet.

Any of you experienced migrators have an opinion about which way I should go?

Best Answer

In the past colleagues (and I) believed it was often a bad idea to install newer OSs on older Macs.

It's actually a bad idea not to upgrade to at least more current versions of OSes as you will miss out on important security and feature updates. There's no evidence that Mac's can't or shouldn't be upgraded.

What I'm wondering about is whether my local web server will survive the upgrade.

It depends. When Apple releases a new OS, they try to update all of the 3rd party software as well. This means if Apache changed things from one version to the next, you could potentially break something. Without knowing which version you had, which version you're going to, what your config looks like specifically , it's impossible to tell you whether it will break or not. However, in the interest of playing it safe, assume it will.

The ideal path is to keep your web server up and running, install/upgrade your OS onto a different machine, deploy your web server, test it out and once everything is working switch over. It's never a good idea to take a running (production) web server and just upgrade the OS in place and hope for the best. It's not a good idea to do this with individual services for that matter (i.e. Apache, MySQL, PHP, etc.)

Any of you experienced migrators have an opinion about which way I should go?

Use Virtual Machines

Unless you have a special use case, I advice folks to not load up an AMP stack on macOS. Why? If your site is being hosted somewhere it's likely a Linux variant or FreeBSD. You want to keep your test/dev environment as close to your production environment as possible. When you have a VM, you can easily manage the web server environment independent of the host OS. You can also clone the VM, perform the upgrade as I described earlier and if it succeeds, simply forward traffic from the firewall to the new VM - you wouldn't have to purchase a single piece of hardware.

In my use case, I standardize on FreeBSD and use only the bare minimum that I will need for my AMP stack. This keeps the overhead for the VM as low as possible. There's no desktop environment, no client software, nothing but the core OS and the AMP stack with necessary dependencies. I usually have my DocumentRoot pointed to an iSCSI LUN on a NAS or SAN (locally or in the cloud). This way, I can very easily move data from VM to VM without much downtime. My NAS has it's own multi-level backup so I can be certain data is secure.

These are broad stroke suggestions and you'll need to tailor it to your specific environment. By using VM's to host your web server, you gain a lot of flexibility especially if you want to migrate from a locally hosted machine to a cloud based instance. It's very easy to copy a VMDK to an Azure or AWS container and then scale as needed. Since you're considering a migration/upgrade, now is the time to do this - migrate to a virtualized environment.