IT/Procedures/Website Moving
Moving a website from one server to another takes several steps which are listed here.
Zoneedit
Since the website will be moved from one server to another and these two servers do not have the same IP address, one has to change the IP address to which the domain name points to.
In Zoneedit this is done as follows:
- Go to Domains.
- Look for the websites domain in the list and click on 'dns'.
- Look for A Records and click 'edit'.
- Add the websites (sub)domain and/or point it to the IP address of the new server.
- Click 'next'.
- The changes will be shown. Click 'confirm'.
- Click done.
Database
In order for the website to run it needs its database. To move the database from the old server to the new one, use the following command on the old server (O:old server; N:new server):
mysqldump -v -uDBUSERO -pDBPASSWORDO DATABASENAMEO | ssh USERN@ADDRESSN mysql -uDBUSERN -pDBPASSWORDN DATABASENAMEN
Files
The files for the website have to be moved as well, which takes several steps. First of all, one has to create a new directory into which the files will be moved. This directory should normally be in /var/www/html/
. To create this new directory use the command on the :
sudo mkdir FOLDERNAME
ytyrtuftjh
To avoid permission problems, change the ownership of this directory to the user of the new server using the command:
sudo chown USER:USER FOLDERNAME
To move the files use the following comand on the old server:
sudo rsync -av --progress -e ssh /var/www/html/FOLDERNAMEO/ USERN@ADDRESSN:/var/www/html/FOLDERNAMEN
Make sure that all the permissions and the ownership is set up correctly by using three commands on the new server as follows:
change the permissions for directories:
find FOLDERNAME/ -type d -exec chmod 755 {} \;
change the permissions for files:
find FOLDERNAME/ -type f -exec chmod 644 {} \;
change ownership(user:group):
sudo chown www-data:www-data -R FOLDERNAME
Vhost file
This section is done on the new server. One has to make changes to the two Vhost files wordpress.conf and wordpressSSL.conf. In wordpress.conf the only thing one has to do is to add the following "paragraph" to the file (if possible by copying from an existing entry of another website and changing the differences):
<VirtualHost *:80> ServerName moodle.msgcgk.com ServerAlias www.moodle.msgcgk.com ServerAdmin it@moodle.msgcgk.com DocumentRoot /var/www/html/moodle.msgcgk/ <Directory /> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> RewriteEngine on RewriteCond %{SERVER_NAME} =www.moodle.msgcgk.com [OR] RewriteCond %{SERVER_NAME} =moodle.msgcgk.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
In wordpressSSL.conf the first step is to add the following paragraph:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName moodle.msgcgk.com ServerAlias www.moodle.msgcgk.com ServerAdmin it@moodle.msgcgk.com DocumentRoot /var/www/html/moodle.msgcgk/ <Directory /> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> </IfModule>
Then restart apache:
sudo service apache2 restart
To check whether the syntax is allright:
sudo apache2ctl configtest
To add security certificates, use the following command:
sudo certbot
This will show a list of all the websites on the server and ask for which one a certificate should be produced. To select a website type the number of the website in the list. To select several websites separate the different numbers by commas or spaces.
If certbot produces an error, restarting apache and trying again can help.
Check whether the certificate has been added to wordpressSSL.conf. It should look like this:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName moodle.msgcgk.com ServerAlias www.moodle.msgcgk.com ServerAdmin it@moodle.msgcgk.com DocumentRoot /var/www/html/moodle.msgcgk/ <Directory /> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/moodle.msgcgk.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/moodle.msgcgk.com/privkey.pem </VirtualHost> </IfModule>
Moodle
When moving moodle one has to also move the moodle data. This is done the same way as moving the files, but with a different directory.
Then one has to change the dataroot directory in the config.php file, which is located in /var/www/html/FOLDERNAME/
, to wherever the moodle data was moved before. While in the config file also check the database user and password.
This directory and files must also be owned by www-data:www-data.