cullmann.io/content/post/webserver-transition.md

2.7 KiB

title date draft categories tags url author
Web-Server Transition 2019-04-08T23:59:00+02:00 false
www
centos
apache
mariadb
/posts/webserver-transition/ Christoph Cullmann

Several years the kate-editor.org & cullmann.io pages got hosted on a Hetzner root server. To reduce costs and switch away from old hardware they got now moved to an OpenVZ based virtual server at Host Europe.

On both servers CentOS 7.x is running, it did always provide a stable foundation for the services these sites use.

As with any server move in the past, I always need to search how to best move the data/config from one server to the other. To document this for me and others, here the quick way to move the basic things needed for web services using just plain Apache & MariaDB.

The following steps assume you have installed the same packages on both machines and the new machine is allowed to ssh as root to the old one. If you have non-system users, you should create them with the same ids as on the old server.

For the following shell commands, the old server address is $SERV and the MariaDB root password is $PASS on both machines. Best use the raw IP as address if you are in parallel updating your DNS entries to avoid confusion (and wrong syncs).

Attention: Wrong syncing of stuff can have disastrous consequences! Check all commands again before executing them, don't trust random people like me without verification!

  • sync your data, assuming it is in /home and /srv/(ftp/www)

{{< highlight bash >}} rsync --delete -av root@$SERV:/home/ /home rsync --delete -av root@$SERV:/srv/ftp /srv rsync --delete -av root@$SERV:/srv/www /srv {{< / highlight >}}

  • transfer your databases

{{< highlight bash >}} ssh root@$SERV "mysqldump -u root -p$PASS --all-databases > /root/db.sql" scp root@$SERV:/root/db.sql /root/ mysql -u root -p$PASS < /root/db.sql {{< / highlight >}}

  • sync configs (you might need more, this is just apache & vsftp)

{{< highlight bash >}} rsync --delete -av root@$SERV:/etc/httpd /etc rsync --delete -av root@$SERV:/etc/letsencrypt /etc rsync --delete -av root@$SERV:/etc/vsftpd /etc {{< / highlight >}}

  • get crontabs over for later re-use, store them in the root home

{{< highlight bash >}} rsync --delete -av root@$SERV:/var/spool/cron /root {{< / highlight >}}

Now all things should be there and after some service restarts e.g. WordPress powered pages should be up-and-running again.

I hope this short how-to helps others and allows me to avoid searching stuff in the future once again from scratch.