ClassicPress
Overview
ClassicPress is a community-led, business-focused fork of WordPress. It keeps the stable content management experience that millions of sites rely on and stays fully compatible with the WordPress plugin and theme ecosystem.
This SecureAnyCloud image installs ClassicPress 2.7 on Apache 2.4, MySQL 8.0 and PHP 8.3, all from the Ubuntu 24.04 noble universe with no third-party APT repositories. WP-CLI completes the install headlessly, so the public install wizard is never exposed. The MySQL root, application database and administrator passwords are rotated per instance at first boot.
What you get:
- ClassicPress 2.7.0 from the official release archive at
/var/www/html/classicpress - Apache 2.4.x with mod_rewrite enabled, and a virtual host at
/etc/apache2/sites-available/classicpress.conf - MySQL 8.0.x with a
classicpressdatabase and acpuserapplication user, each with a per-VM password - PHP 8.3.x with the mysqli, gd, mbstring, xml, curl, zip and imagick extensions
- WP-CLI 2.x at
/usr/local/bin/wpfor command-line administration - classicpress-firstboot.service, which rotates passwords and creates the SecureAnyCloud administrator
- Host-agnostic URLs: the site renders on the VM public IP, on 127.0.0.1, or on any domain you point at it
- Apache and MySQL enabled to start automatically on boot
- 24/7 SecureAnyCloud support
Prerequisites
You need an active Azure subscription, an SSH key and a VNet with a subnet.
Standard_B2s (2 vCPU, 4 GB RAM) is a comfortable starting size for small to medium sites. Move up to a D2s or D4s size for higher traffic.
On the network security group, allow inbound ports 80 and 443, and port 22 from your management network.
Deploy and connect
Launch the image from the Azure Marketplace. When the VM is running, connect over SSH as azureuser:
ssh azureuser@<vm-ip>The first-boot service generates the per-VM credentials within a few seconds of the instance starting.
Verify the services
Run the following to confirm that Apache and MySQL are active and listening:
sudo systemctl is-active apache2 mysql
sudo ss -tlnp | grep -E ':(80|3306) 'Check the versions
Run the commands below to print the installed versions. wp core version reports the WordPress-compatible base version that ClassicPress tracks. The ClassicPress release itself is the $cp_version value in the version file.
grep "cp_version = '" /var/www/html/classicpress/wp-includes/version.php
sudo -u www-data /usr/local/bin/wp core version --path=/var/www/html/classicpress --allow-root php -v | head -1 mysql --versionInspect content and users with WP-CLI
List the users, posts and plugins. The image ships with the standard first post, the SecureAnyCloud administrator and the bundled ClassicPress plugin:
sudo -u www-data /usr/local/bin/wp user list --path=/var/www/html/classicpress --allow-root sudo -u www-data /usr/local/bin/wp post list --path=/var/www/html/classicpress --allow-root sudo -u www-data /usr/local/bin/wp plugin list --path=/var/www/html/classicpress --allow-rootRead the administrator password
The per-VM credentials are written to a root-only file. Read it to get the CP_ADMIN_USER and CP_ADMIN_PASSWORD values you need to sign in:
sudo cat /stage/scripts/classicpress-credentials.logKeep this file secure. After your first sign-in, change the administrator password in the admin area.
Browse the public site
The site responds on whatever address you reach it on. Confirm that it serves locally, then browse to http://<vm-ip>/ in your browser:
curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1/Sign in to the admin area
Browse to http://<vm-ip>/wp-admin/ (or http://<vm-ip>/wp-login.php). Sign in as SecureAnyCloud with the password from Step 5.
Explore the admin dashboard
After you sign in, you land on the ClassicPress dashboard. The At a Glance panel confirms ClassicPress 2.7.0, and the classic, streamlined admin menu is on the left.
Manage content
Open Posts to create, edit and organise your content. Pages, Media, Appearance, Plugins and Users work as they do in the WordPress ecosystem, so existing themes and plugins install unchanged.
Know where components live
Component and path:
ClassicPress install /var/www/html/classicpress/
wp-config.php /var/www/html/classicpress/wp-config.php
Apache vhost /etc/apache2/sites-available/classicpress.conf
Apache logs /var/log/apache2/classicpress-{access,error}.log
MySQL data /var/lib/mysql/
WP-CLI /usr/local/bin/wp
First-boot script /usr/local/sbin/classicpress-firstboot.sh
Credentials /stage/scripts/classicpress-credentials.log (mode 0600 root:root)
Security and next steps
- Change the administrator password. After your first sign-in, update it under Users in the admin area.
- Enable HTTPS. Install certbot and request a certificate:
sudo apt-get install -y certbot python3-certbot-apachethensudo certbot --apache. - Restrict the network security group. Open ports 80 and 443 only to your CDN or load balancer, and port 22 only to your management network.
- Keep ClassicPress current. Update core, plugins and themes from the admin area, or run
wp plugin update --allandwp theme update --all. - Point your domain at the instance. The image is host-agnostic, so no site URL rewrite is needed. The admin area follows the host you sign in on.
- Patch the OS regularly. Run
sudo apt-get updateandsudo apt-get upgrade.
Licensing
ClassicPress is distributed under the GPL-2.0 licence and is free to use commercially. SecureAnyCloud packages and supports the image, with support available 24/7 at sales@secureanycloud.com.
All product and company names are trademarks or registered trademarks of their respective holders. Their use does not imply affiliation or endorsement.
Deploy on Azure
Launch ClassicPress on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com
Overview
ClassicPress is a community-led, business-focused fork of WordPress. It keeps the stable content management experience that millions of sites rely on and stays fully compatible with the WordPress plugin and theme ecosystem.
This SecureAnyCloud image runs ClassicPress 2.7.0 on PHP 8.3 under Apache, with a MySQL database. WP-CLI completes the install headlessly, so the public install wizard is never exposed.
What you get:
- A LAMP stack: ClassicPress 2.7.0, PHP 8.3, Apache and MySQL
- A dedicated, independently resizable EBS data volume for the database at
/var/lib/mysql - A second dedicated EBS data volume for the ClassicPress webroot at
/var/www, so the database and the site files stay off the operating system disk - An administrator account created on the first boot of every deployed instance
- A freshly generated administrator password, database password and database root password on each instance, so two instances launched from the same Amazon Machine Image never share a credential
- No default login in the image, because the build-time database is destroyed before the image is captured
- Credentials written to
/stage/scripts/classicpress-credentials.logwith mode 0600, readable only by the root user - A site address derived from the request host on every request, so the site answers on the instance public IP, its private IP or any custom domain you point at it, with no reconfiguration and no redirect to a stale address
- 24/7 SecureAnyCloud support
Prerequisites
Before you deploy this image, make sure you have:
- An Amazon Web Services account where you can launch EC2 instances
- IAM permissions to launch instances, create security groups and subscribe to AWS Marketplace products
- An EC2 key pair in the target Region for SSH access to the instance
- A VPC and subnet in the target Region, with a security group that allows inbound port 22 from your management network and ports 80 and 443 for the website
- The AWS CLI (version 2) installed locally, if you plan to deploy from the command line
Launch the instance from the AWS Marketplace
Sign in to the AWS Management Console and open the EC2 service. Select Launch instance. Under Application and OS Images, choose AWS Marketplace AMIs and search for ClassicPress. Select the SecureAnyCloud listing, choose Select, then choose Continue on the subscription summary.
Pick an instance type of m5.large or larger. Choose your EC2 key pair under Key pair (login). Under Network settings, select your VPC and subnet. Create or select a security group that opens port 22 from your management network and ports 80 and 443 for the website. Leave the root volume at the default size or larger, because the database and web volumes are attached automatically.
Select Launch instance. First-boot initialisation takes a short time after the instance state becomes Running and the status checks pass. During this time the database is created, ClassicPress is installed and the per-instance administrator is provisioned.
Launch the instance from the AWS CLI
Run the command below to launch an instance from the SecureAnyCloud ClassicPress Marketplace AMI into an existing subnet and security group. Replace the AMI ID with the one shown on the Marketplace listing. Replace the key name, subnet ID and security group ID with your own. The security group must open ports 22, 80 and 443 as described above.
aws ec2 run-instances \
--image-id <ami-id> \
--instance-type m5.large \
--key-name <key-name> \
--subnet-id <subnet-id> \
--security-group-ids <security-group-id> \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=classicpress}]'Wait until the instance reaches the Running state and its status checks pass. Then note its public IP address or DNS name from the EC2 console or with aws ec2 describe-instances.
Connect to your instance
Connect over SSH with your key pair and the login user for your operating system variant.
OS variant and SSH login user:
Ubuntu 24.04 ubuntu
ssh -i <key-name>.pem ubuntu@<instance-public-ip>Retrieve the administrator password
The administrator password is unique to your instance and is generated on first boot. Read it as root:
sudo cat /stage/scripts/classicpress-credentials.logThe file lists the site URL, the admin URL, the administrator login name (SecureAnyCloud) and the generated password. It also lists the database name, database user and generated database passwords. Keep this file somewhere safe.
Confirm ClassicPress is running
Over SSH, confirm that the web server and the database are active, the expected ports are listening, and ClassicPress is the expected version:
for s in apache2 mysql; do echo "$s: $(systemctl is-active $s)"; done
sudo ss -tln | grep -E ':80|:3306' grep -oE "\$cp_version = '[^']+'" /var/www/html/classicpress/wp-includes/version.php
sudo -u www-data wp core is-installed --path=/var/www/html/classicpress && echo "core installed"You should see both services active, ports 80 and 3306 listening, the ClassicPress version reported as 2.7.0, and core installed.
Next, confirm that the site and the login page answer with HTTP 200:
curl -s -o /dev/null -w 'home: %{http_code}\n' http://127.0.0.1/
curl -s -o /dev/null -w 'login: %{http_code}\n' http://127.0.0.1/wp-login.phpSign in to the dashboard
Apache serves the website and the dashboard on port 80. In a browser, go to the admin sign-in page:
http://<instance-public-ip>/wp-admin/Sign in with the administrator login name SecureAnyCloud and the password from the credentials file.
After you sign in, you land on the ClassicPress dashboard. The At a Glance, Activity and news panels summarise your site.
Create pages and posts
ClassicPress uses the classic content editor. To write a post, open Posts and choose Add New. To build a page, open Pages and choose Add New.
Give it a title, write your content with the classic editor toolbar, and choose Publish. Pretty permalinks are already enabled, so each page and post gets a clean URL.
Manage your content, categories and tags from the Posts and Pages lists in the dashboard.
View the published site
Visitors browse the site at the instance address. Because ClassicPress is fully compatible with the WordPress theme and plugin ecosystem, you can install any compatible theme from Appearance. Extend the site with plugins from Plugins.
Check the database and web volumes
The MySQL database lives on a dedicated EBS volume mounted at /var/lib/mysql. The ClassicPress code and uploaded media live on a second dedicated EBS volume mounted at /var/www. Both volumes are kept off the operating system disk and are independently resizable. Confirm the layout:
findmnt /var/lib/mysql
findmnt /var/www df -h /var/lib/mysql /var/wwwTo grow either volume, resize it in the AWS console, then grow the filesystem on the instance. The fstab entries reference the filesystem UUID, so the layout persists across reboots and instance replacement.
Add a custom domain and enable HTTPS
The site derives its address from the request host. Point a DNS name at the instance and the site answers on it immediately, with no ClassicPress reconfiguration.
To serve the site over HTTPS, install a certificate with Certbot for Apache once your domain resolves to the instance:
sudo apt-get update
sudo apt-get install -y certbot python3-certbot-apache
sudo certbot --apache -d your-domain.exampleCertbot obtains and installs the certificate and configures Apache to redirect HTTP to HTTPS. Renewals run automatically.
Back up and maintain the instance
Back up the MySQL database regularly. A logical dump of the ClassicPress database is the simplest approach, and you can schedule it with cron:
sudo mysqldump --single-transaction classicpress > /var/backups/classicpress-$(date +%F).sqlAlso back up /var/www/html/classicpress/wp-content, which holds your themes, plugins and uploaded media. For a full point-in-time copy, take EBS snapshots of the /var/lib/mysql and /var/www volumes.
Keep the operating system patched with sudo apt-get update && sudo apt-get upgrade. Update ClassicPress core, themes and plugins from the dashboard.
Support
SecureAnyCloud supports this image. Contact support for help with deployment, theme and plugin setup, version upgrades, performance tuning, MySQL database administration, TLS and custom domains, or scaling. Include the instance ID and Region when you raise a ticket.
Deploy on AWS
Launch ClassicPress on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com