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 standardapache2.serviceandmariadb.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>Service Status and Versions
sudo systemctl is-active apache2.service mariadb.service prestashop-firstboot.service php --version | head -1 apache2 -v | head -1 mariadb --versionRead Per-VM Credentials
sudo cat /stage/scripts/prestashop-credentials.logNote 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.
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 -1The 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.
Browse the Storefront
Browse to http://<vm-ip>/. The default Hummingbird theme renders with the demo header, navigation, product blocks and footer.
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.
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.
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.
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.
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>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.serviceInstall 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 --redirectCertbot 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.
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 uploadPeriodically 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.
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.logPrestaShop'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:3306only (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) and80/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