Magento 2 comes with a composer installer and all external dependencies including sample data are being installed using composer. However, I needed to have a simple way to install Magento 2 along with sample data in an offline environment, without using composer. I had a few reasons to do this – I wanted to have a fast way to install Magento 2 multiple times and I wanted to test command line installing for MageTesting.com purposes.
Main goals are:
- avoid downloading more than 1 GB of data each time
- let it work in offline mode
- operate with smaller packages
- simplify steps needed to install Magento 2
Cloning GIT repository and downloading dependencies resulted in downloading more than 1GB of data:
- Magento 2 code cloned with packages downloaded using composer: 471.3 MB (194 MB after gzipping)
- sample data media: 590.9 MB (zipped)
- sample data code: 0.2 MB (zipped)
I decided to prepare a Magento 2 package which contains only code needed to run application and to prepare sample data package which could be installed just by copy pasting that into Magento 2. Recently I was playing with a sample data compression script provided by Vinai Kopp, and I made a fork which can compress Magento 2 sample data.
At the end I have the following packages:
- Magento 2 code (26 MB, gzipped)
- compressed sample data media (92MB, zipped)
- sample data code: 0.2 MB (zipped)
I know there is a composer cache. I know I could use Vagrant/Docker or other virtualization, but still I wanted to avoid overcomplicating the process. If you see that use case useful, please find all needed steps described below.
Just keep in mind it is written for 0.42.0-beta1 release of Magento 2 and it is not a recommended way to install Magento 2.
Prepare Magento 2 package
1. Clone GIT repository
git clone git@github.com:magento/magento2.git
2. Install composer dependencies
composer.phar update
3. Remove huge directories not needed to run application
rm -rf dev/tests
rm -rf .git
rm -rf vendor/magento/zendframework1/documentation
rm -rf vendor/magento/zendframework1/tests
rm -rf vendor/magento/zendframework1/demos
4. Prepare package
tar czf magento2-0.42.0-beta1.tar.gz -C magento2/ .
Prepare Magento 2 sample data package
1. Downlod demo data
curl -O http://packages.magento.com/_packages/magento_sample-data-0.42.0-beta1.zip
curl -O http://packages.magento.com/_packages/magento_sample-data-media-0.42.0-beta1.zip
2. Compress demo data
compress-sample-data-magento2.sh magento_sample-data-media-0.42.0-beta1.zip
Install Magento 2 using created package
1. Prepare directory and unpack package:
mkdir magento2
tar xzf magento2-0.42.0-beta1.tar.gz -C magento2/
2. Set required permissions
cd magento2
chmod -R 777 var/
chmod -R 777 pub/media/
chmod -R 777 pub/static
chmod -R 777 app/etc/
3. Run Setup
php -f setup/index.php install
--base_url=http://local.magento2new.com/
--backend_frontname=admin
--db_host=127.0.0.1
--db_name=mage2
--db_user=mage2
--db_pass=mage2
--admin_firstname=John
--admin_lastname=Doe
--admin_email=john@example.com
--admin_username=admin
--admin_password=admin
--language=en_US
--currency=USD
--timezone=Europe/Warsaw
Install sample data using package
1. Unpack media sample data
unzip -q -d pub/media/ compressed-magento_sample-data-media-0.42.0-beta1.zip
2. Unpack sample data code
mkdir dev/tools/Magento/Tools/SampleData
unzip -q -d dev/tools/Magento/Tools/SampleData magento_sample-data-0.42.0-beta1.zip
3. Install sample data
php -f dev/tools/Magento/Tools/SampleData/install.php -- --admin_username=admin
4. Make sure newly added files are writable:
chmod -R 777 pub/media/
chmod -R 777 pub/static
This one is a little dirty, but as far as I know composer doesn’t support installing local packages.
Let me know if you find this article useful and if you have any thoughts around that.
Leave a Reply