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.
The following section describes how to install Adobe Commerce and Magento Open Source 2.x on Ubuntu using nginx, PHP, and MySQL.
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.
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
and php-cli
:
apt-get -y install php7.2-fpm php7.2-cli
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:
vim /etc/php/7.2/fpm/php.ini
vim /etc/php/7.2/cli/php.ini
Edit both files to match the following lines:
memory_limit = 2G
max_execution_time = 1800
zlib.output_compression = On
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:
systemctl restart php7.2-fpm
Refer to MySQL for more information.
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
.
cd /var/www/html
Install Composer globally. Composer is required to update dependencies before installing Adobe Commerce or Magento Open Source:
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
composer create-project --repository=https://repo.magento.com/ magento/project-community-edition <install-directory-name>
Adobe Commerce
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.
cd /var/www/html/<magento install directory>
find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
chown -R :www-data . # Ubuntu
chmod u+x bin/magento
Install from the command line. This example assumes that the install directory is named magento2ee
, the db-host
is on the same machine (localhost
), and that the db-name
, db-user
, and db-password
are all magento
:
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:
cd /var/www/html/magento2/bin
./magento deploy:mode:set developer
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:
vim /etc/nginx/sites-available/magento
Add the following configuration:
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;
}
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:
ln -s /etc/nginx/sites-available/magento /etc/nginx/sites-enabled
Verify that the syntax is correct:
nginx -t
Restart nginx:
systemctl restart nginx
Open a web browser and navigate to your site’s base URL to verify the installation.
The following section describes how to install Adobe Commerce and Magento Open Source 2.x on CentOS 7 using nginx, PHP, and MySQL.
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.
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
:
yum -y install php70w-fpm
Open the /etc/php.ini
file in an editor.
Uncomment the cgi.fix_pathinfo
line and change the value to 0
.
Edit the file to match the following lines:
memory_limit = 2G
max_execution_time = 1800
zlib.output_compression = On
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:
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:
user = nginx
group = nginx
listen = /run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Uncomment the environment lines:
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:
mkdir -p /var/lib/php/session/
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:
mkdir -p /run/php-fpm/
chown -R apache:apache /run/php-fpm/
Start the php-fpm
service and configure it to start at boot time:
systemctl start php-fpm
systemctl enable php-fpm
Verify that the php-fpm
service is running:
netstat -pl | grep php-fpm.sock
Refer to MySQL for more information.
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
.
cd /var/www/html
Install Composer globally. Composer is required to update dependencies before installing Adobe Commerce or Magento Open Source:
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
composer create-project --repository=https://repo.magento.com/ magento/project-community-edition <install-directory-name>
Adobe Commerce
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.
cd /var/www/html/<magento install directory>
find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
chown -R :www-data . # Ubuntu
chmod u+x bin/magento
Install from the command line. This example assumes that the install directory is named magento2ee
, the db-host
is on the same machine (localhost
), and that the db-name
, db-user
, and db-password
are all magento
:
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:
cd /var/www/html/magento2/bin
./magento deploy:mode:set developer
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:
vim /etc/nginx/conf.d/magento.conf
Add the following configuration:
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;
}
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:
nginx -t
Restart nginx:
systemctl restart nginx
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:
yum -y install policycoreutils-python
Run the following commands to change the security context for the installation directory:
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/app/etc(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/var(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/pub/media(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/pub/static(/.*)?'
restorecon -Rv '/usr/share/nginx/html/magento2/'
Install the firewalld package:
yum -y install firewalld
Start the firewall service and configure it to start at boot time:
systemctl start firewalld
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:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Open a web browser and navigate to your site’s base URL to verify the installation.