Deployment guide

PrestaShop 9

Overview

PrestaShop is the leading open-source e-commerce platform, used by 300,000+ online stores worldwide to sell physical and digital goods. This SecureAnyCloud image installs PrestaShop 9.0.1 (the current Classic Edition release) on Apache 2.4, PHP 8.3.6 and MariaDB 10.11.

The back-office admin URL is randomized per VM, and first boot removes the install/ wizard directory. The default Hummingbird theme renders out of the box, and first boot creates a per-VM admin account. As soon as the VM is up, you can sign in to the back office, add products and configure the shop.

What you get:

  • PrestaShop 9.0.1 (OSL-3.0 / AFL-3.0) Classic Edition from the official PrestaShop CDN
  • Apache 2.4 with mod_php (Ubuntu 24.04 noble main)
  • PHP 8.3.6 with the extensions PrestaShop requires (gd, intl, mbstring, mysql, curl, xml, zip, bcmath, soap, opcache)
  • MariaDB 10.11 from Ubuntu noble main, listening on 127.0.0.1 only
  • The default Hummingbird theme, with demo categories and demo products
  • A randomized admin back-office URL per VM (/admin-sac-<8-hex>/)
  • A per-VM admin email, admin@sac.local, and a 32-hex-character admin password
  • A per-VM 32-hex-character MariaDB password
  • The install/ directory removed at first boot, because PrestaShop refuses to render the storefront otherwise
  • Two systemd units: prestashop-firstboot.service (one-shot, runs before apache2 on first boot) and the standard apache2.service and mariadb.service
  • Access to 5000+ free and paid modules from the PrestaShop Addons marketplace
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key, and a VNet with a subnet.

Standard_B2s (4 GB RAM) is comfortable for the LAMP stack with a default catalogue.

Configure the network security group (NSG) to allow inbound 22/tcp from your management CIDR. Allow 80/tcp from any client CIDR that needs the storefront. Also allow 443/tcp once you add TLS in Step 14.

Step 1-3: Deploy and connect over SSH (standard pattern)

ssh azureuser@<vm-ip>
4

Service Status and Versions

sudo systemctl is-active apache2.service mariadb.service prestashop-firstboot.service php --version | head -1 apache2 -v | head -1 mariadb --version
5

Read Per-VM Credentials

sudo cat /stage/scripts/prestashop-credentials.log

Note these values: PRESTASHOP_STOREFRONT_URL, PRESTASHOP_ADMIN_URL, PRESTASHOP_ADMIN_USER, PRESTASHOP_ADMIN_PASSWORD and PRESTASHOP_ADMIN_DIR (the randomized 8-hex admin path). The file also holds the per-VM MariaDB password.

6

HTTP Health + Storefront

curl -sIL http://127.0.0.1/ | grep -E '^(HTTP|Location)'
curl -sL http://127.0.0.1/ | grep -o '<title>[^<]*</title>' | head -1

The first call shows the locale redirect chain. PrestaShop 9 redirects / to /gb/ (the default GB locale), and the final hop returns 200. The second call extracts the <title> tag and confirms that the shop name is sac-prestashop.

7

Browse the Storefront

Browse to http://<vm-ip>/. The default Hummingbird theme renders with the demo header, navigation, product blocks and footer.

8

Sign in to the Admin Back Office

Browse to http://<vm-ip>/<admin-dir>/, the randomized path from Step 5. Sign in with admin@sac.local and the password from /stage/scripts/prestashop-credentials.log.

9

Admin Dashboard

After you sign in, the Dashboard shows the sales overview, today's stats, recent orders, top customers and shop activity. The left sidebar gives access to Catalog, Orders, Customers, Modules, Design, Configure and Advanced Parameters.

10

Add a Product via the Admin

In the back office, go to Catalog > Products and select New product. Enter the product name, retail price and quantity, and optionally a category and image. Select Save to publish. The product becomes visible on the storefront immediately.

For bulk imports, use Advanced Parameters > Import to load a CSV of products. PrestaShop accepts the standard CSV format, with columns for ID, Name, Categories, Price, Quantity and so on.

11

Configure Shop Settings

Go to Configure > Shop Parameters > General to set the shop name, default currency, default language and timezone.

International > Localization lets you import country-specific tax rules and currencies. Shop Parameters > Order Settings configures the checkout flow, gift wrapping and the minimum order total.

12

Install Modules

PrestaShop has 5000+ free and paid modules available, covering payment gateways (Stripe, PayPal), shipping carriers (DHL, UPS), marketing (Mailchimp, Klaviyo) and analytics. In the back office, go to Modules > Module Catalog to browse and install them.

To install a module from the command line on the VM, run:

cd /var/www/prestashop
sudo -u www-data php bin/console prestashop:module install <module-name>
13

Add Your Domain to the Shop

In the back office, go to Configure > Shop Parameters > General > Maintenance and open the SEO and URLs sub-page. Set the Shop domain and SSL domain fields to your DNS name (for example shop.example.com) and save. Then restart Apache so that PrestaShop's URL rewriting picks up the change:

sudo systemctl restart apache2.service
14

Install Let's Encrypt SSL

Point your domain's DNS A record at this VM. Then, on the VM, run:

sudo apt-get install -y python3-certbot-apache
sudo certbot --apache -d shop.example.com -m you@example.com --agree-tos --non-interactive --redirect

Certbot edits the Apache vhost to add the SSL VirtualHost and a :80 → :443 redirect, then reloads Apache. The certbot.timer systemd unit handles renewal and runs twice daily.

Once HTTPS works, set Configure > Shop Parameters > General > Enable SSL to Yes in the back office. This forces secure cookies and https:// URLs site-wide.

15

Backups

Take a consistent backup of the MariaDB database and the on-disk image and upload directories:

PASS=$(sudo grep '^PRESTASHOP_DB_PASSWORD=' /stage/scripts/prestashop-credentials.log | cut -d= -f2-) mysqldump -h 127.0.0.1 -u prestashop -p"$PASS" prestashop | gzip > /var/backups/prestashop-db-$(date +%F).sql.gz
sudo tar czf /var/backups/prestashop-img-$(date +%F).tgz -C /var/www/prestashop img upload

Periodically copy /var/backups to Azure Blob Storage (az storage blob upload-batch) for off-VM retention. Test the restore at least once before you rely on the backups in production.

16

Logs and Troubleshooting

sudo journalctl -u apache2.service --no-pager -n 80
sudo tail -50 /var/log/apache2/error.log
sudo tail -50 /var/log/apache2/access.log
sudo tail -50 /var/www/prestashop/var/logs/prod.log

PrestaShop's own debug log is at /var/www/prestashop/var/logs/prod.log.

For verbose error pages while you develop or troubleshoot a module, edit /var/www/prestashop/config/defines.inc.php and set _PS_MODE_DEV_ to true. Clear the cache with sudo -u www-data php bin/console cache:clear --no-warmup, then reload. Set it back to false before you open the storefront to customers.

Security

  • A randomized admin back-office URL per VM (/admin-sac-<8-hex>/). Bots that scan the standard /admin/ path get a 404.
  • A per-VM admin password (32 hex characters from openssl rand).
  • The install/ directory is removed at first boot. PrestaShop refuses to render the storefront if the directory survives, which eliminates the install-wizard takeover risk.
  • MariaDB listens on 127.0.0.1:3306 only (loopback), so it is never reachable from the network.
  • A per-VM MariaDB password (32 hex characters).
  • Apache 2.4 and PHP 8.3 are both current stable upstream releases.
  • Optional TLS through Certbot, in Step 14.
  • NSG inbound is restricted to 22/tcp (your management CIDR) and 80/443/tcp (your customer CIDR).

Support

SecureAnyCloud provides 24/7/365 expert technical support, with a guaranteed response within 24 hours and a one-hour average for critical issues. Contact sales@secureanycloud.com.

Deploy on Azure

Launch PrestaShop 9.0.1 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

Deploy on Azure