This Config is about magento development environment setup using nix flake.
- NixOS or Nix Package Manager(flake enable).
- Devenv development environment.
- Magento System Requirements (only for understanding).
- PHP.
- mariadb.
- Redis.
- OpenSearch.
- Xdebug.
- Mailpit.
- Adminer.
- Caddy with Local SSL certificate.
- RabbitMQ(WIP).
Install Nix and Devenv from installation, make sure to enable experimental features for flake.
- Clone the repo by:
git clone [email protected]:MROvaiz/magento-nix.git
On enterShell
Run this, which give non-privileged user access for port 80, 443 and increase buffer size:
sudo sysctl -w net.ipv4.ip_unprivileged_port_start=0
sudo sysctl -w net.core.rmem_max=7500000
sudo sysctl -w net.core.wmem_max=7500000
Or you can add in your NixOS config which runs on boot, (unprivileged, buffer-size and caddy-permission):
boot.kernel.sysctl = {
"net.ipv4.ip_unprivileged_port_start" = false;
"net.core.rmem_max" = 7500000;
"net.core.wmem_max" = 7500000;
};
add below, which gives write permission to /etc/hosts
file (only for NixOS), refer.
environment.etc.hosts.mode = "0644";
hosts in flake.nix
, will add entry in /etc/hosts
hosts = {
"dev.magento2.local" = "127.0.0.1";
};
- Entering the Flake shell:
nix develop --no-pure-eval
. - Start all services with
devenv up
. - Test SSL Host:
curl -k --resolve dev.magento2.local:443:127.0.0.1 https://dev.magento2.local
- Make sure to comment Caddy acme-staging(CA), after everything is working fine.
Note: Sometimes there is a problem with /etc/hosts
. try deleting .devenv/state/hostctl
once and devenv up
, if /etc/hosts
is not writing(sudo-permission).
- Make sure you have
~/.config/composer/auth.json
orauth.json
in existing project (get the keys from magento marketplace). - Run
composer install
for existing project. - Or get latest magento community edition:
composer create-project --repository-url=https://repo.magento.com magento/project-community-edition magento2
php bin/magento setup:install \
--base-url=https://dev.magento2.local \
--cleanup-database \
--db-host=127.0.0.1 \
--db-name=magento2 \
--db-user=magento2 \
--db-password=magento2 \
--backend-frontname=admin \
--admin-firstname=admin \
--admin-lastname=admin \
[email protected] \
--admin-user=admin \
--admin-password=admin123 \
--language=en_US \
--currency=INR \
--timezone=Asia/Kolkata \
--use-rewrites=1 \
--search-engine=opensearch \
--opensearch-host=127.0.0.1 \
--opensearch-port=9200 \
--session-save-redis-host=127.0.0.1 \
--session-save-redis-port=6379 \
--session-save-redis-db=0 \
--cache-backend-redis-server=127.0.0.1 \
--cache-backend-redis-port=6379 \
--cache-backend-redis-db=1 \
--page-cache-redis-server=127.0.0.1 \
--page-cache-redis-port=6379 \
--page-cache-redis-db=2
- Magento url:
https://dev.magento2.local
- Adminer url:
https://dev.adminer.local
- Mailpit url:
https://dev.mailpit.local
disable 2fa(not required, mailpit is working for 2FA):
bin/magento module:disable Magento_TwoFactorAuth Magento_AdminAdobeImsTwoFactorAuth
update https configs(not required, setup during installation):
bin/magento config:set web/unsecure/base_url https://dev.magento2.local/
bin/magento config:set web/secure/base_url https://dev.magento2.local/
Please find the initial config and idea magento2-devenv(devenv use)