Nginx
Adobe Commerce supports nginx 1.x (or the latest mainline version). You must also install the latest version of php-fpm
.
Installation instructions vary based on which operating system that you are using. See PHP for information.
Ubuntu
The following section describes how to install Adobe Commerce and Magento Open Source 2.x on Ubuntu using nginx, PHP, and MySQL.
Install nginx
sudo apt -y install nginx
You can also build nginx from source
After completing the following sections and installing the application, we will use a sample configuration file to configure nginx.
Install and configure php-fpm
Adobe Commerce and Magento Open Source require several PHP extensions to function properly. In addition to these extensions, you must also install and configure the php-fpm
extension if you are using nginx.
To install and configure php-fpm
:
-
Install
php-fpm
andphp-cli
:code language-bash apt-get -y install php7.2-fpm php7.2-cli
note note NOTE This command installs the latest available version of PHP 7.2.X. See system requirements for supported PHP versions. -
Open the
php.ini
files in an editor:code language-bash vim /etc/php/7.2/fpm/php.ini
code language-bash vim /etc/php/7.2/cli/php.ini
-
Edit both files to match the following lines:
code language-conf memory_limit = 2G max_execution_time = 1800 zlib.output_compression = On
note note NOTE We recommend setting the memory limit to 2 G when testing Adobe Commerce and Magento Open Source. Refer to Required PHP settings for more information. -
Save and exit the editor.
-
Restart the
php-fpm
service:code language-bash systemctl restart php7.2-fpm
Install and configure MySQL
Refer to MySQL for more information.
Install and configure
There are several ways to download Adobe Commerce and Magento Open Source, including:
This example shows a Composer-based installation using the command line.
-
As the file system owner, log in to your application server.
-
Change to the web server docroot directory or a directory that you have configured as a virtual host docroot. For this example, we’re using the Ubuntu default
/var/www/html
.code language-bash cd /var/www/html
-
Install Composer globally. Composer is required to update dependencies before installing Adobe Commerce or Magento Open Source:
code language-bash curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
-
Create a Composer project using the Magento Open Source or Adobe Commerce metapackage.
Magento Open Source
code language-bash composer create-project --repository=https://repo.magento.com/ magento/project-community-edition <install-directory-name>
Adobe Commerce
code language-bash composer create-project --repository=https://repo.magento.com/ magento/project-enterprise-edition <install-directory-name>
When prompted, enter your authentication keys. Your public key is your username; your private key is your password.
-
Set read-write permissions for the web server group before you install the application. This is necessary so that the command line can write files to the file system.
code language-bash cd /var/www/html/<magento install directory>
code language-bash find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
code language-bash find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
code language-bash chown -R :www-data . # Ubuntu
code language-bash chmod u+x bin/magento
-
Install from the command line. This example assumes that the install directory is named
magento2ee
, thedb-host
is on the same machine (localhost
), and that thedb-name
,db-user
, anddb-password
are allmagento
:code language-bash bin/magento setup:install \ --base-url=http://localhost/magento2ee \ --db-host=localhost \ --db-name=magento \ --db-user=magento \ --db-password=magento \ --backend-frontname=admin \ --admin-firstname=admin \ --admin-lastname=admin \ --admin-email=admin@admin.com \ --admin-user=admin \ --admin-password=admin123 \ --language=en_US \ --currency=USD \ --timezone=America/Chicago \ --use-rewrites=1 \ --search-engine=elasticsearch7 \ --elasticsearch-host=es-host.example.com \ --elasticsearch-port=9200
-
Switch to developer mode:
code language-bash cd /var/www/html/magento2/bin
code language-bash ./magento deploy:mode:set developer
Configure nginx
We recommend configuring nginx using the nginx.conf.sample
configuration file provided in the installation directory and nginx virtual host.
These instructions assume you’re using the Ubuntu default location for the nginx virtual host (for example, /etc/nginx/sites-available
) and Ubuntu default docroot (for example, /var/www/html
), however, you can change these locations to suit your environment.
-
Create a new virtual host for your site:
code language-bash vim /etc/nginx/sites-available/magento
-
Add the following configuration:
code language-conf upstream fastcgi_backend { server unix:/run/php/php7.2-fpm.sock; } server { listen 80; server_name www.magento-dev.com; set $MAGE_ROOT /var/www/html/magento2; include /var/www/html/magento2/nginx.conf.sample; }
note note NOTE The include
directive must point to the sample nginx configuration file in your installation directory. -
Replace
www.magento-dev.com
with your domain name. This must match the base URL you specified when installing Adobe Commerce or Magento Open Source. -
Save and exit the editor.
-
Activate the newly created virtual host by creating a symlink to it in the
/etc/nginx/sites-enabled
directory:code language-bash ln -s /etc/nginx/sites-available/magento /etc/nginx/sites-enabled
-
Verify that the syntax is correct:
code language-bash nginx -t
-
Restart nginx:
code language-bash systemctl restart nginx
Verify the installation
Open a web browser and navigate to your site’s base URL to verify the installation.
CentOS 7
The following section describes how to install Adobe Commerce and Magento Open Source 2.x on CentOS 7 using nginx, PHP, and MySQL.
Install nginx
yum -y install epel-release
yum -y install nginx
After installation is complete, start nginx and configure it to start at boot time:
systemctl start nginx
systemctl enable nginx
After completing the following sections and installing the application, we’ll use a sample configuration file to configure nginx.
Install and configure php-fpm
Adobe Commerce and Magento Open Source require several PHP extensions to function properly. In addition to these extensions, you must also install and configure the php-fpm
extension if you’re using nginx.
-
Install
php-fpm
:code language-bash yum -y install php70w-fpm
-
Open the
/etc/php.ini
file in an editor. -
Uncomment the
cgi.fix_pathinfo
line and change the value to0
. -
Edit the file to match the following lines:
code language-conf memory_limit = 2G max_execution_time = 1800 zlib.output_compression = On
note note NOTE We recommend setting the memory limit to 2 G when testing Adobe Commerce or Magento Open Source. Refer to Required PHP settings for more information. -
Uncomment the session path directory and set the path:
code language-conf session.save_path = "/var/lib/php/session"
-
Save and exit the editor.
-
Open
/etc/php-fpm.d/www.conf
in an editor. -
Edit the file to match the following lines:
code language-conf user = nginx group = nginx listen = /run/php-fpm/php-fpm.sock listen.owner = nginx listen.group = nginx listen.mode = 0660
-
Uncomment the environment lines:
code language-conf env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp
-
Save and exit the editor.
-
Create a directory for the PHP session path and change the owner to the
apache
user and group:code language-bash mkdir -p /var/lib/php/session/
code language-bash chown -R apache:apache /var/lib/php/
-
Create a directory for the PHP session path and change the owner to the
apache
user and group:code language-bash mkdir -p /run/php-fpm/
code language-bash chown -R apache:apache /run/php-fpm/
-
Start the
php-fpm
service and configure it to start at boot time:code language-bash systemctl start php-fpm
code language-bash systemctl enable php-fpm
-
Verify that the
php-fpm
service is running:code language-bash netstat -pl | grep php-fpm.sock
Install and configure MySQL
Refer to MySQL for more information.
Install and configure
There are several ways to download the Adobe Commerce and Magento Open Source, including:
This example shows a Composer-based installation using the command line.
-
As the file system owner, log in to your application server.
-
Change to the web server docroot directory or a directory that you have configured as a virtual host docroot. For this example, we’re using the Ubuntu default
/var/www/html
.code language-bash cd /var/www/html
-
Install Composer globally. Composer is required to update dependencies before installing Adobe Commerce or Magento Open Source:
code language-bash curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
-
Create a Composer project using the Magento Open Source or Adobe Commerce metapackage.
Magento Open Source
code language-bash composer create-project --repository=https://repo.magento.com/ magento/project-community-edition <install-directory-name>
Adobe Commerce
code language-bash composer create-project --repository=https://repo.magento.com/ magento/project-enterprise-edition <install-directory-name>
When prompted, enter your authentication keys. Your public key is your username; your private key is your password.
-
Set read-write permissions for the web server group before you install the application. This is necessary so that the command line can write files to the file system.
code language-bash cd /var/www/html/<magento install directory>
code language-bash find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
code language-bash find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
code language-bash chown -R :www-data . # Ubuntu
code language-bash chmod u+x bin/magento
-
Install from the command line. This example assumes that the install directory is named
magento2ee
, thedb-host
is on the same machine (localhost
), and that thedb-name
,db-user
, anddb-password
are allmagento
:code language-bash bin/magento setup:install \ --base-url=http://localhost/magento2ee \ --db-host=localhost \ --db-name=magento \ --db-user=magento \ --db-password=magento \ --backend-frontname=admin \ --admin-firstname=admin \ --admin-lastname=admin \ --admin-email=admin@admin.com \ --admin-user=admin \ --admin-password=admin123 \ --language=en_US \ --currency=USD \ --timezone=America/Chicago \ --use-rewrites=1
-
Switch to developer mode:
code language-bash cd /var/www/html/magento2/bin
code language-bash ./magento deploy:mode:set developer
Configure nginx
We recommend configuring nginx using the nginx.conf.sample
configuration file provided in the installation directory and nginx virtual host.
These instructions assume you’re using the CentOS default location for the nginx virtual host (for example, /etc/nginx/conf.d
) and default docroot (for example, /usr/share/nginx/html
), however, you can change these locations to suit your environment.
-
Create a new virtual host for your site:
code language-bash vim /etc/nginx/conf.d/magento.conf
-
Add the following configuration:
code language-conf upstream fastcgi_backend { server unix:/run/php-fpm/php-fpm.sock; } server { listen 80; server_name www.magento-dev.com; set $MAGE_ROOT /usr/share/nginx/html/magento2; include /usr/share/nginx/html/magento2/nginx.conf.sample; }
note note NOTE The include
directive must point to the sample nginx configuration file in your installation directory. -
Replace
www.magento-dev.com
with your domain name. -
Save and exit the editor.
-
Verify that the syntax is correct:
code language-bash nginx -t
-
Restart nginx:
code language-bash systemctl restart nginx
Configure SELinux and Firewalld
SELinux is enabled by default on CentOS 7. Use the following command to see if it’s running:
sestatus
To configure SELinux and firewalld:
-
Install SELinux management tools:
code language-bash yum -y install policycoreutils-python
-
Run the following commands to change the security context for the installation directory:
code language-bash semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/app/etc(/.*)?'
code language-bash semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/var(/.*)?'
code language-bash semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/pub/media(/.*)?'
code language-bash semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/pub/static(/.*)?'
code language-bash restorecon -Rv '/usr/share/nginx/html/magento2/'
-
Install the firewalld package:
code language-bash yum -y install firewalld
-
Start the firewall service and configure it to start at boot time:
code language-bash systemctl start firewalld
code language-bash systemctl enable firewalld
-
Run the following commands to open ports for HTTP and HTTPS so you can access the base URL from a web browser:
code language-bash firewall-cmd --permanent --add-service=http
code language-bash firewall-cmd --permanent --add-service=https
code language-bash firewall-cmd --reload
Verify the installation
Open a web browser and navigate to your site’s base URL to verify the installation.