Available software versions

The new system is (currently) based on Debian 12 Bookworm and comes with the versions of software it has, including:

We are aiming to offer hosting based on the newer Debian 13 Trixie release in 2026.

We don’t centrally maintain shared installations of web CMS software (e.g. Wordpress etc.) those can be installed by you in your hosting space. As a general principle though these should be kept up to date.

How to manage sites on our comprehensive web hosting service

Most management operations for your site are carried out on the management server, access.cwh.it.ox.ac.uk.

This is not the server that will make your site available on the web, but it does have access to the same files.

How to access the management server

Login to access.cwh.it.ox.ac.uk using an SSH or SFTP client.

IP address-based access restriction

Access is restricted to known IP addresses that have been registered with us (via the technical contact section of the comprehensive web hosting request form). If you need to add or change your registered IP address then please email your IP registration change request to us.

Alternatively, connections will be accepted from systems connected to the University VPN.

Login credentials

Your login for the management server will be your Oxford SSO username (abcd1234) and password.

University customers wishing to have non-University staff (e.g. contractors) access the system to manage their sites will need to ensure that their contractors either already have a University SSO, or get them one by applying for a Virtual University Card for them (one per person).

How to structure site files

Once logged in you will be in your personal home directory, /home/abcd1234, and the sites you maintain will be located under the /sites directory available either by their unique ID number (/sites/siteXXXX) or via their primary site name (/sites/www.aardvark.ox.ac.uk/).

Within the site main directory will be see several subdirectories:

How to access your site database

Within your site directory you should have a file called database_details with contents like this:

Database         : site000X
Database host    : cwh-mariadb
Database user    : site000X
Database password: Correct-Horse-Battery-Staple

You can use these details in setting up a CMS, or access the database directly from the command line:

$ mariadb -h cwh-mariadb -u site0006 -p

Storage quotas

You have two quota-limited spaces on the system, your personal home directory on the login server which is intended for settings and other small files and has a fixed quota limit of 1GB, and your site’s directory which has a quota limit at whichever service level you’re paying for (if you have multiple sites they each have their own quota allocation).

If you wish to upload files larger than 1GB to the system, you’ll need to copy them to the site directory directly, rather than into your personal home directory.

How to check your site’s file space quota and usage

You should get output that looks something like this:

$ df -h .
Filesystem                              Size  Used Avail Use% Mounted on
cwh-dev-nfs-01.it.ox.ac.uk:/data/sites  1.0G  1.0M 1023M   1% /sites

Where the ‘Size’ column shows the current size of the site’s quota, and the ‘Used’ and ‘Use%’ show how much of it is currently occupied.

Server logs

Your site contains a logs subdirectory containing Apache web server access and error logs, and PHP access logs. These logs are rotated daily and retained for 95 days, with older logs compressed to save space.

How to run cron jobs

Create a file called crontab (or edit the example file) located in in your site directory with normal crontab(5) syntax.

Your file will be copied to the web server during a synchronisation run every 5 minutes, and will then take effect and be run on the webserver (not on the login server access.cwh.it.ox.ac.uk). Note that your site’s path on the web server will be /srv/sites/site000X rather than just /sites/site000X.

We strongly advise you to set an email address where the output of tasks will be sent. If you do not do this, you will not receive any output from your jobs

Available technologies

The comprehensive web hosting service is based on a Linux platform running Apache 2.4.

The following scripting languages are available:

Databases are provided with MariaDB (compatible with MySQL).

Certificates and renaming sites

All sites on the system have SSL certificates generated via LetsEncrypt, which relies on having your DNS pointed to the site. If you wish to add an alias to a site or rename it entirely (e.g. to rename a development site to the ‘real’ name after it’s been set up) then you’ll need to contact us to coordinate the process. If you simply redirect your DNS then visitors will get an SSL certificate error.

How to install Wordpress

Log in to the CWH system by SSHing to access.cwh.it.ox.ac.uk.

Download Wordpress from https://wordpress.org/wordpress-6.8.1.tar.gz

wget https://wordpress.org/wordpress-6.8.1.tar.gz

Change into your site’s directory

cd /sites/cwh-testsite6.it.ox.ac.uk

and unpack the Wordpress tarball:

tar xf ~/download/wordpress-6.8.1.tar.gz  --strip-components=1

(–strip-components avoids everything winding up in a ‘wordpress’ subdirectory)

Copy the wp-config-sample.php file as wp-config.php and set the variables DB_NAME, DB_USER DB_PASSWORD and DB_HOST according to the values in your database_details file.

Renaming a Wordpress site

If you want to rename your site (for example putting a dev site into production and changing the URL/hostname from www-dev.aardvark.ox.ac.uk to www.aardvark.ox.ac.uk you’ll need to change the WordPress Address (URL) and Site Address (URL) options under Settings->General. It’s helpful to have the site temporarily accessible via both names, so we recommend:

This should keep the site functioning through the whole process without losing you the access you need to be able to update the Wordpress settings over the web interface.

Wordpress asks for FTP credentials

If you get an error from WordPress when installing or upgrading components like the WordPress install itself or plugins that asks for FTP credentials then WordPress has decided that it can’t write directly to its own files. It should be able to, and setting:

define('FS_METHOD', 'direct');

in the Wordpress

wp-config.php

will force it to use local filesystem access as it should. If you set that and it then doesn’t work, get please in touch.

Basic Drupal install

Version note - We currently offer web servers with PHP 8.2, which allows use of the 10.x releases of Drupal, it does not meet the minimum required version for Drupal 11.

Install Drupal

Drupal’s default composer based installation assumes a slightly different directory layout than we have, so where it defaults to installing the drupal web files in a subdirectory of the composer project directory, whereas we’re to install the composer project files in their own directory and the web content in the existing ‘html’ directory.

First, log in to the CWH system by SSHing to access.cwh.it.ox.ac.uk, then change to the site directory and create a new project without actually installing Drupal itself:

cd /sites/site000X
composer create-project drupal/recommended-project:10 drupal/ --no-install
cd drupal

In this directory edit the file drupal/composer.json and change the web-root setting to the full path to your html directory, and then do the same to all the paths in the installer-paths section, e.g:

"extra": {
    "drupal-scaffold": {
        "locations": {
            "web-root": "/sites/site000X/html/"
        }
    },
    "installer-paths": {
        "/sites/site000X/html/core": [
            "type:drupal-core"
        ],
        "/sites/site000X/html/libraries/{$name}": [
            "type:drupal-library"
        ],
        "/sites/site000X/html/modules/contrib/{$name}": [
            "type:drupal-module"
        ],
        "/sites/site000X/html/profiles/contrib/{$name}": [
            "type:drupal-profile"
        ],
        "/sites/site000X/html/themes/contrib/{$name}": [
            "type:drupal-theme"
        ],
        "drush/Commands/contrib/{$name}": [
            "type:drupal-drush"
        ],
        "/sites/site000X/html/modules/custom/{$name}": [
            "type:drupal-custom-module"
        ],
        "/sites/site000X/html/profiles/custom/{$name}": [
            "type:drupal-custom-profile"
        ],
        "/sites/site000X/html/themes/custom/{$name}": [
            "type:drupal-custom-theme"
        ]
    },

Then install Drupal:

composer install

and you should see the main installation appear in the html directory.

Setup

Most of the drupal setup runs from a browser, but we need to create a settings file in advance by copying the example, and setting the file permissions so that the web installer can write to it (we’ll then restrict it from making further changes once it’s done).

Change into the html directory, copy the example, make it and the directory, writable:

cd /sites/site000X/html/
cp sites/default/default.settings.php sites/default/settings.php
chmod g+w sites/default/. sites/default/settings.php

It should then look like this:

$ ls -l sites/default/settings.php
-rw-rw-r-- 1 usso0123 site000X 33395 Jun 13 16:05 sites/default/settings.php

You can now access the interactive web installer at your sites main URL. Step through it until you get to the database settings page, and set them based on the values in the database_details file from the top level site directory (including setting the Host value under the Advanced section:

[[!img drupal_db_settings.png]]

At step 7 the installer will say:

All necessary changes to sites/default and sites/default/settings.php
have been made, so you should remove write permissions to them now in
order to avoid security risks.

Do this with:

chmod g-w sites/default/. sites/default/settings.php

And then complete the installer.