a. Create backups of source files and database
- Logon to Current Hosting Provider to make backups
- Files:
- Assuming cPanel:
- Login to cPanel
- Click on 'File Manager'
- Select public_html or the directory containing WordPress files
- Select Compress from the top-right menu
- Select 'Bzip2ed Tar Archive' (better compression than Gzip)
- Click 'Compress File(s)' and wait for the process to finish
- Right-click the newly generated public_html.tar.bz2 from cPanel File Manager > select Download
- Find the file in a default download directory (e.g. /home/$(whoami)/Downloads/public_html.tar.bz2)
- Database:
- Assuming cPanel with phpMyAdmin
- Click 'phpMyAdmin' from the 'DATABASES' control group
- Click 'Export'
- Set Export method = Quick, Format = Custom
- Click Go
- Find the *.sql file being downloaded into a default download directory (e.g. /home/$(whoami)/Downloads/localhost.sql)
b. Install Bitnami WordPress in a Kubernetes Cluster
# Add helm chart if not already available
helm repo add bitnami
# Install WordPress with Dynamic NFS Provisioning
# Documentation: https://kubeapps.dev/
# Set variables
appName=kimconnectblog
domainName=blog.kimconnect.com
wordpressusername=kimconnect
wordpressPassword=SOMEPASSWORDHERE
rootPassword=SOMEPASSWORDHERE2
storageClass=nfs-client
# Install
helm install $appName bitnami/wordpress \
--set persistence.accessMode=ReadWriteMany,persistence.storageClass=nfs-client \
--set mariadb.primary.persistence.storageClass=nfs-client \
--set wordpressUsername=$wordpressusername,wordpressPassword=$wordpressPassword \
--set mariadb.auth.rootPassword=$rootPassword \
--set mariadb.auth.password=$rootPassword \
--set ingress.enabled=true,ingress.hostname=$domainName
# Patch the deployed ingress with an existing SSL cert
# Assuming the $appName-cert has already been generated
appName=kimconnectblog
domainName=blog.kimconnect.com
certName=$appName-cert
serviceName=$appName-wordpress
servicePort=80
cat <<EOF > $appName-patch.yaml
spec:
tls:
- hosts:
- $domainName
secretName: $certName
rules:
- host: $domainName
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: $serviceName
port:
number: $servicePort
EOF
kubectl patch ingress/$appName-wordpress -p "$(cat $appName-patch.yaml)"
c. Import files and database onto new hosting server
- Database:
- Access DB server and import sql dump
podName=kimconnectblog-mariadb-0
kubectl exec --stdin --tty $podName -- /bin/bash
rootPassword=SOMEPASSWORD
echo "show databases;" | mysql -u root -p$rootPassword
MariaDB [(none)]> show databases;exit;
+--------------------+
| Database |
+--------------------+
| bitnami_wordpress |
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.009 sec)
oldDb=kimconne_blog
sqlDump=/bitnami/mariadb/data/kimconnect.sql
mysql -uroot -p$rootPassword test < $sqlDump
grantUser=bn_wordpress # this is the default Bitnami WordPress user
echo "GRANT ALL PRIVILEGES ON $oldDb.* TO $grantUser;" | mysql -uroot -p$rootPassword
#echo "create database $databaseName;" | mysql -uroot -p$rootPassword
#mysql -uroot -p$rootPassword $oldDb -sNe 'show tables' | while read table; do mysql -uroot -p$rootPassword -sNe "RENAME TABLE $oldDb.$table TO $newDb.$table"; done
#echo "create user kimconne_blog@localhost;grant all privileges on kimconne_blog.* to 'kimconne_blog';"| mysql -uroot -p$rootPassword
#ALTER USER 'kimconne_blog'@'localhost' IDENTIFIED BY 'SOMEPASSWORDHERE';
- Files:
- Assuming nfs:
nfsShare=k8s
nfsServer=10.10.10.5
sharePath=/volume1/$nfsShare
mountPoint=/mnt/$nfsShare
sudo mkdir $mountPoint
sudo mount -t nfs $nfsServer:$sharePath $mountPoint # Test mounting
sudo mount | grep $nfsShare # validate mount
# Assuming Kubernetes NFS
# sudo mv /home/$(whoami)/Downloads/localhost.sql $mountPoint/path_to_default-data-sitename-mariadb/data/localhost.sql
# sudo mv /home/$(whoami)/Downloads/public_html.tar.bz2 $mountPoint/public_html.tar.bz2
bz2File=/mnt/k8s/kimconnectblog/public_html.tar.bz2
containerPath=/mnt/k8s/default-kimconnectblog-wordpress-pvc-9f1dd4bd-81f3-489f-9b76-bf70f4fd291c/wordpress/wp-content
tar -xf $bz2File -C $containerPath
cd $containerPath
mv public_html/wp-content wp-content
vim wp-config.php # edit wp config to match the imported database and its prefix
Categories: