You can create e-commerce sites with Magento 2 on Simple Hosting instance types PHP 5.6 / MySQL 5.6 (Percona) and PHP 7 / MySQL 5.6 (Percona).
This article offers a detailed guide on how to install and configure Magento Community Edition 2 in two ways (SFTP and SSH, or Composer, git and SSH) and supports you in the configuration of advanced settings such as Varnish Cache, background tasks, backups, using the Magento CLI and optimizing PHP.
Download the latest version of Magento 2 from the official website, choosing the format “tar.gz”. You will be asked to register for free before you can download the file.
https://www.magentocommerce.com/download
You should now have a ”.tar.gz” file on your computer. For example on Windows, C:\Users\Me\Downloads\Magento-CE-2.0.7-2016-05-24-12-15-40.tar.gz
. Or, on Linux ~/Downloads/Magento-CE-2.0.7-2016-05-24-12-15-40.tar.gz
.
Obtain the SFTP address from the control panel of your instance in your Gandi account. The address will look like :
123456789@sftp.dc2.gpaas.net
Connect with your favorite SFTP client by entering the password of your body, or using your SSH key to identify you. You can read more about sFTP in our User guide for Simple Hosting.
Once connected, access inside the directory htdocs
the VHOST corresponding to the domain chosen for Magento. We will always use store.example.com
in the examples.
For example: vhosts/store.example.com/htdocs
.
Next, copy the file Magento-CE-2.0.7-2016-05-24-12-15-40.tar.gz
to your instance with your SFTP client. You can then connect via the SSH console to unzip the file directly on the instance, as described below.
Alternatively, you could unzip the file locally and upload the resulting files and folders, but it can take several hours due to the large number of files to copy (if you select this option, do not copy the “dev” directory to save you several extra hours). In exchange, you will not have to log in via SSH to unzip the file.
Get the connection details to the SSH console of your body since its administration page on Gandi's website. Visit our guide on the SSH console for Simple Hosting for more information.
me@laptop $ ssh 12345678@console.dc0.gpaas.net 12345678@console.dc0.gpaas.net's password: <the password for your instance> Asking for console, please wait Connected Grabbing terminal Ok
If you have installed the Gandi CLI, you can use the following command :
$ gandi paas console {instance name}
Once connected to the instance, change to the htdocs
directory of the VHOST where you uploaded the file with Magento Community Edition 2. Decompress the file with the command tar
, and then delete the file.
$ cd /srv/data/web/vhosts/store.example.com/htdocs $ tar xzf Magento-CE-2.0.7-2016-05-24-12-15-40.tar.gz $ rm Magento-CE-2.0.7-2016-05-24-12-15-40.tar.gz
Decompression can take several minutes. Once complete, Magento 2 will be installed on your instance and you can switch to the configuration step described in the last section of this article.
To use Composer on Simple Hosting, you manage the deployment with git+SSH.
We recommend that you install Gandi CLI for your convenience: the Gandi CLI commands are very simple to use.
Make sure you have the following PHP modules installed in order to perform the local installation of Magento (your git tree should include the file composer.lock
resulting from a local installation to start the installation on the instance):
# PHP5.6 php5 php5-gd php5-mcrypt php5-curl php5-intl php5-xsl # PHP7 php7.0 php7.0-gd php7.0-mcrypt php7.0-curl php7.0-intl php7.0-xsl
If you have not yet installed Composer, you can follow our guide to learn how to install and use it.
You can create the local directory and configure the git repository of the proceedings automatically by cloning the repository that was created automatically when creating the VHOST.
$ gandi paas clone magento2 --vhost store.example.com
The directory store.example.com
is automatically created. Go ahead and change to this directory.
cd store.example.com
If you're not using the CLI tool, you can setup git repository using the following commands.
$ mkdir store.example.com $ cd store.example.com/ $ git init $ git remote add gandi ssh+git://{login}@git.{datacenter_location}.gpaas.net/store.example.com.git $ mkdir htdocs
Use Composer to create a new Magento project within the htdocs
directory.
$ php composer.phar create-project --repository-url=https://repo.magento.com/ magento/project-community-edition htdocs
You wil be prompted to authenticate with the “public key” (username) and the “private key” (password) obtained when creating your Access Key on the Magento site.
Update your git tree and push your changes to your instance.
$ git add . $ git commit -m 'Install Magento 2' $ git push gandi master $ gandi deploy
If you're not using the Gandi CLI tool, substitute the 'gandi deploy' command with the following.
$ ssh {login}@git.{datacenter_location}.gpaas.net 'deploy store.example.com.git'
Once the process is complete, you can complete the configuration of Magento directly in your browser.
Once the files placed on your instance, you can access your domain from your browser to complete the installation of Magento 2.
For example: http://store.example.com
On PHP 5.6 instances, you need to disable the PHP option always_populate_raw_post_data
by assigning the value -1
(by default it is set to 0
). This option is deprecated as of PHP 5.6 and no longer exists in PHP 7. Please consult the official documentation for more information.
A file php-custom.ini
is available on your body and you can change it from a web interface, via SFTP or SSH console. Please see our guide on modifying php.ini for more info.
Via the SSH console, simply run the following command and then wait a few minutes for the Apache process to restart automatically.
hosting-user@magento2:~$ echo "always_populate_raw_post_data=-1" >> /srv/data/etc/php/php-custom.ini
You can also manually restart your instance from its administration interface on Gandi's website. Alternatively, with Gandi CLI, you can issue the following command $ gandi paas restart {instance name}
.
Here is how the file php-custom.ini
should look like with the option always_populate_raw_post_data
deactivated, as required by Magento 2 :
; You can not override all parameters. ; We keep the possibility to filter other parameters. ; Use this file with caution. ; ; Vous ne pouvez pas remplacer tous les paramètres. ; Nous gardons la possibilité de filtrer d'autres paramètres. ; Utilisez ce fichier avec précaution. always_populate_raw_post_data=-1
Now your PHP 5.6 instance is ready for Magento 2, as will be confirmed during the environment test performed during the installation process.
You will be asked to insert the username and the database you want to use. If you do not yet created, you can do so now by following our database management guide.
You can also create the administrator of the store by entering a username, an email and a password. Make sure to use a strong password !
Simple Hosting has a series of features that blend with Magento to get a quick and robust site easily: HTTPS support, background tasks with Anacron, the Varnish Cache and automatic snapshots.
You can enable HTTPS for Mangeto website if you have an instance of M or greater size. You can activate these options during installation at any time from the admin interface.
To enable SSL on your Magento 2 site VHOST, simply add a certificate obtained at Gandi or another provider. You can learn more in our guide to Using SSL on Simple Hosting.
With HTTPS, your users will be protected and your site will have better visibility.
Magento 2 provides an example of php.ini file (php.ini.sample
) which recommends some PHP settings for production use.
We recommend that you edit the php-custom.ini
file on your instance and add the following values :
session.save_path="/srv/data/var/php/www" display_errors=Off
The first option will be useful for the execution of certain Magento CLI commands. Then next option will conceal errors that potentially show sensitive information.
You can edit the file php-custom.ini
via the admin interface, SFTP or SSH console. Read our guide on php.ini modification for more information.
In the SSH console, for example, you can use the following commands: :
$ echo 'session.save_path="/srv/data/var/php/www"' >> /srv/data/etc/php/php-custom.ini $ echo 'display_errors=Off' >> /srv/data/etc/php/php-custom.ini
Magento 2 includes a CLI (Command Line Interface) that you can use via the SSH console of your instance.
The Magento 2 CLI allows you to perform many maintenance tasks, like re-indexing the cache, run cron jobs, manage and restore backups, etc.
Connect to your instance via SSH, navigate to your site and use the following command to list all available tasks:
$ cd /srv/data/web/vhosts/store.example.com/htdocs $ php bin/magento list
Certain commands may require specific PHP settings. For example, this is the case for the command setup:backup
, which is used to generate backups on demand. This command needs to use a writable path for the backup process. Since this is not a common practice in many PHP applications, you must set the option session.save_path
manually. Otherwise, you would get a permission error.
If you changed the php-custom.ini
file as recommended in the section “PHP Options (php.ini)”, you can use the following command when running CLI commands ::
$ php -c "/srv/data/etc/php/php-custom.ini" bin/magento setup:backup --db
To set an option temporarily on the fly, use php -d “option=value
. For example :
$ php -d "session.save_path=/srv/data/var/php/www" bin/magento setup:backup --db
You can also add the Magento 2bin
directory to your PATH and access the CLI using the command magento
when you are connected to the SSH console.
$ chmod +x /srv/data/web/vhosts/store.example.com/htdocs/bin/magento $ echo 'export PATH=$PATH:/srv/data/web/vhosts/store.example.com/htdocs/bin' >> /srv/data/etc/bash/bashrc $ source /srv/data/etc/bash/bashrc $ magento list
Alternatively, or in addition, you can use the default custom PHP options with an Alias
.
For example :
$ ini_path=/srv/data/etc/php/php-custom.ini $ cli_path=/srv/data/web/vhosts/store.example.com/htdocs/bin/magento $ echo "alias mage='php -c $ini_path $cli_path'" >> /srv/data/etc/bash/bashrc $ source /srv/data/etc/bash/bashrc $ mage list
This technique also works with the -d
flag described above.
You can run scripts in the background to keep Magento 2 updated: rebuild database indexes, send emails, automatically download updates…
In the admin interface of your Magento site, go to “Stores > Configuration > Advanced > System > Cron Scheduled Tasks”.
We recommend starting with the following configuration :
Cron configuration for group: index Generate Schedules Every: 60 Schedule Ahead for: 60 Missed if Not Run Within: 180 History Cleanup Every: 600 Success History Lifetime: 600 Failure History Lifetime: 600 Use Separate Process: Yes Cron configuration for group: default Generate Schedules Every: 60 Schedule Ahead for: 60 Missed if Not Run Within: 180 History Cleanup Every: 600 Success History Lifetime: 600 Failure History Lifetime: 600 Use Separate Process: No
Next, configure Anacron to program the automatic execution of these tasks every hour.
Via the SSH console, modify the file /srv/data/etc/cron/anacrontab
(with vi, vim or nano) and add the following information (replace all references to “store.example.com” with the correct VHOST name) :
MAGE_WWW=/srv/data/web/vhosts/store.example.com/htdocs PHP_OPT="-d session.save_path=/srv/data/var/php/www" # si vous avez modifié le fichier php-custom.ini, utilisez plutôt la ligne ci-dessous # PHP_OPT="-c /srv/data/etc/php/php-custom.ini" @hourly 0 mage.cron php $PHP_OPT $MAGE_WWW/bin/magento cron:run >> $MAGE_WWW/var/log/magento.cron.log @hourly 0 mage.update.cron php $PHP_OPT $MAGE_WWW/update/cron.php >> $MAGE_WWW/var/log/update.cron.log @hourly 0 mage.setup.cron php $PHP_OPT $MAGE_WWW/bin/magento setup:cron:run >> $MAGE_WWW/var/log/setup.cron.log
With these definitions, Anacron will perform its routine tasks every hour, the shortest time interval supported by Anacron.
You can perform this configuration via SFTP or SSH console. Visit our Anacron User Guide for more info.
To perform background tasks more frequently, you can use an external service that calls the file pub/cron.php
from the outside. If you opt for this method, we recommend that you secure access to this file.
The secure access to cron.php
from the web, store a strong password for the user hosting-user
.
For this, use the tool htpasswd
and use, for example, the following path /srv/data/home/.magento.cron.auth
to store the file :
$ htpasswd -c /srv/data/home/.magento.cron.auth hosting-user > Password: > Confirm password:
Then, edit the file /srv/data/web/vhosts/store.example.com/htdocs/pub/.htaccess
. Locate and delete the following lines :
## Deny access to cron.php <Files cron.php> order allow,deny deny from all </Files>
And replace them with the following instructions :
<Files cron.php> AuthType Basic AuthName "Cron Authentication" AuthUserFile /srv/data/home/.magento.cron.auth Require valid-user </Files>
You can now access http://store.example.com/pub/cron.php and authenticate with the username and password you created earlier.
With curl, for example :
$ curl --user hosting-user:{mot-de-passe} http://store.example.com/pub/cron.php?group=default
Magento 2 recommends using Varnish caching software for use in production. The Simple Hosting platform offers a Varnish cache system adapted to the Web Accelerator, that can be used natively with Magento 2.
In the admin interface of your Magento website, navigate to “Stores > Configuration > Advanced > System > Full Page Cache”.
Select “Varnish Caching” in the field “Caching Application”, and set the time period (TTL) for the cache, in secondes. Magento uses 86400 seconds (24 hours) by default.
Save your changes, and now your Magento 2 site will no longer use the CPU, RAM, and storage of your instance to manage the cache system, but instead the Web Accelerator. In fact, it is already loaded by default, but your shop does not know about the Varnish cache yet and generated its own local cache, for nothing.
You can consult the Web Accelerator cache system documentation to learn more. Also note that you can “purge” (empty) the cache from your instance control panel.
Magento 2 offers several options to make automatic backups of your site. Simple Hosting offers automatic snapshots to safeguard your files (provided that you have subscribed to this option) and allows you to restore your instance to a previous state, with the exeption of the database.
With the snapshot feature enabled, you just need to activate the automatic backup of databases in Magento for all of your sites to be effectively backed up.
To enable automatic backups of the database, go to the admin interface of your Magento website and navigate to “Stores > Configuration > Advanced > System > Scheduled Backup Settings”.
In this section, select “Yes” to “Enable Scheduled Backup” and then “Database” for “Backup Type”. Adjust the other preferences if necessary (the default options can be sufficient), then save. suffisantes), puis sauvegardez.
If you ever need to use your backups, you can restore a Snapshot from the management interface of your instance. Then, recreate your database and user using the same data as before, and then re-import the database with the Magento 2 CLI.
Connect to your instance via SSH console, identify the last backup of the database and make the “rollback” to restore the contents of the database :
$ cd /srv/data/web/vhosts/store.example.com/htdocs $ php bin/magento info:backups:list $ php bin/magento setup:rollback -d "1440611839_db.tgz"
A section dedicated to the use of the Magento 2 CLI is available above.