36
Magento 2 - Configure multiple magento sites in your local setup with Nginx for multiple php versions
Hi there,
This post is about configuring Nginx for multiple Magento 2 versions (Ex: M2.4.2, M2.3.2) with multiple php versions (PHP 7.4, 7.2) to run without switching php versions.
It took me a while to get the settings correct so thought to write it down for someone who could save his time.
My setup was like this;
I wanted to run a Magento 2.4.2 and a 2.3.2 at the same time, and had to switch the php versions everytime when I wanted to check either of the sites. I had 2 virtual host files configured at default nginx location as below;
I wanted to run a Magento 2.4.2 and a 2.3.2 at the same time, and had to switch the php versions everytime when I wanted to check either of the sites. I had 2 virtual host files configured at default nginx location as below;
/etc/nginx/sites-enabled/m232
, /etc/nginx/sites-enabled/m242
I added the following directive in each virtual host file
as below:
as below:
upstream fastcgi_backend_74 {
server unix:/run/php/php7.4-fpm.sock;
}
So
/etc/nginx/sites-enabled/m242
now looks like below:upstream fastcgi_backend_74 {
server unix:/run/php/php7.4-fpm.sock;
}
server {
listen 80;
server_name dev.m242.com;
set $MAGE_ROOT /home/djbravo/projects/m242;
include /home/djbravo/projects/m242/nginx.conf.sample;
access_log /var/log/nginx/m242.access;
error_log /var/log/nginx/m242.error;
}
Then I changed the value for following directive inside the default magento nginx.conf.sample under the project root.
<magento 2.4.2 project root>/nginx.conf.sample
(in our case /home/djbravo/projects/m242
)Search for the
fastcgi_pass
directive (there were 3 places) inside above file and replace fastcgi_backend
with fastcgi_backend_74
(configured for PHP 7.4) which was configured in our virtual host file for m242 project above.Then, do the same for M2.3.2 project like below in the following default location:
/etc/nginx/sites-enabled/m232
Note the
fastcgi_backend_72
this time for PHP 7.2upstream fastcgi_backend_72 {
server unix:/run/php/php7.2-fpm.sock;
}
server {
listen 80;
server_name dev.m232.com;
set $MAGE_ROOT /home/djbravo/projects/m232;
include /home/djbravo/projects/m232/nginx.conf.sample;
access_log /var/log/nginx/m232.access;
error_log /var/log/nginx/m232.error;
}
Then do the same as we did for M2.4.2 project for the default magento nginx.conf.sample under the project root for M2.3.2 project.
<magento 2.3.2 project root>/nginx.conf.sample
(in our case /home/djbravo/projects/m232
)Search for the
fastcgi_pass
directive (there were 3 places) inside above file and replace 'fastcgi_backend' with 'fastcgi_backend_72' (configured for PHP 7.2) which was configured in our virtual host file for m232 project above.Make sure you don't have the same fastcgi_backend_72 or fastcgi_backend_74 configured inside
/etc/nginx/sites-enabled/default
virtual host.Then do a
sudo nginx -t
to check the syntax of virtual host files, and if all okay, do a 'sudo service nginx restart'Hope I didn't miss anything. If you have any issues pls let me know, I will try my best to help you. Btw, I'm not a Pro, so I may not able to answer all your questions.
Cheers
36