SlideShare a Scribd company logo
1 of 25
Download to read offline
MAGENTO 2
DEVELOPMENT
HUNG PHAM
"Devs are what they say they are. (Until
they start touching code.)"
TOOLS & EXTENSIONS
DEV ENVIRONMENT
DEBUG & LOGGING
ABOUT TOPIC
Composer
Magento CLI
N98 Magerun v2
PHPStorm (IDE)
Module Creator
Debug Toolbar
Bash Configure
Xdebug
TOOLS
Tool: Composer
Authentication:
To authenticate to the Magento for install dependencies, run the
command as below:
composer config --global --auth http-basic.repo.magento.com
MAGENTO_COMPOSER_USER MAGENTO_COMPOSER_PASS
USER and PASS are public and private public key in your Magento
Account.
Usage:
composer install
composer update
composer require <vendor>/<packages>
Notes:
Do not use composer with sudo privileges.
Magento CLI
Regularly Command:
php bin/magento module:enable --all --clear-static-content
php bin/magento setup:upgrade
php bin/magento setup:di:compile-multi-tenant
php bin/magento setup:static-content:deploy en_US
php bin/magento indexer:reindex
php bin/magento cache:clean
php bin/magento cache:flush
Note:
- Change permission to permit exectuable for bin/magento:
chmod u+x bin/magento
Tool: n98 magerun v2
New version of n98 magerun for Magento 2.
Extends the console components.
Using Symfony Console.
Available at: https://github.com/netz98/n98-magerun2
Useful Command:
sys:info
sys:setup:change-version
sys:setup:downgrade-versions
db:dump
Tricks:
Using Symfony shortcut syntax, example just type `sy:i`
instead of full options as `sys:info` 
Tool: PHPStorm
2
Tips & Tricks:
- Excluded folder from away Index and Search processes:
Properties Folder> Mark Directory as > Excluded
- Mark folder as Sources Root:
Properties Folder> Mark Directory as > Sources Root
Shortcuts:
- Show properties folder: Alt + F1
- Bookmark code: F11.
- Show all bookmark: Alt + F2
- Rename file: Shift + F6
- Show all breakpoint: Ctrl + Shift + F8
- Generate code snippet: Alt + Insert
Module Creator & Debug Tool
2
Module Creator:
https://github.com/AmastyLtd/Magento-2-Module-Creator
http://cedcommerce.com/magento-2-module-creator/
https://github.com/astorm/pestle
Debug Toolbar:
https://github.com/vpietri/magento2-developer-quickdevbar
https://github.com/magento-hackathon/magento2-improved-
template-hints
https://github.com/mgtcommerce/Mgt_Developertoolbar
http://store.pulsestorm.net/products/commerce-bug-3
Bash Configure
2
Useful Alias:
## Magento 2
WEBSERVER_GROUP="www-data"
alias m2="bin/magento"
alias m2rmgen="find var/generation -maxdepth 1 -mindepth 1 -type d -
not -name 'Magento' -not -name 'Composer' -not -name 'Symfony' -exec
rm -rf {} ;"
alias m2en="m2 module:enable"
alias m2s="m2 module:status"
alias m2f="m2 cache:flush"
alias m2static="sudo rm -rf var/view_preprocessed/*
pub/static/frontend/* pub/static/adminhtml/* pub/static/_requirejs/*"
alias m2fixgroup="sudo usermod -aG $WEBSERVER_GROUP `whoami`"
alias m2urn="m2 dev:urn-catalog:generate .idea/misc.xml"
alias m2ut="./vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist"
Tool: Xdebug
2
Install:
To install Xdebug correctly, please comply to this wizard below:
https://xdebug.org/wizard.php
Configure:
Add parameters to php.ini file:
zend_extension = /usr/lib/php/20151012/xdebug.so
xdebug.idekey = "PHPSTORM"
xdebug.remote_autostart=0
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_connect_back=1
xdebug.remote_handler=dbgp
xdebug.max_nesting_level = 1000
Tip:
To find the full path of php.ini files:
locate php.ini
LAMP & LEMP Stack
Owner & Permission
NodeJS
DEV ENVIRONMENT
LAMP & LEMP
2
Prerequisite:
- Apache 2.4 or Nginx
- PHP 7.0 with FPM
- Mysql 5.6
- PHP extensions:
php7.0-mysql php7.0-mcrypt php7.0-curl php7.0-gd libcurl3 php7.0-intl
php7.0-xsl php7.0-zip php7.0-mbstring  php7.0-dom php7.0-simplexml
php7.0-xml
Note:
- If you using Apache, do not delete .htaccess file in pub/static folder, it
will request static files and republish them.
- Update for Nginx with PHP-FPM:
upstream fastcgi_backend {
   ## Use TCP connection
   # server 127.0.0.1:9000;
   ## Or socket
   server unix:/run/php/php7.0-fpm.sock;
}
Owner & Permission
2
Recommendation:
Using commands below to set owner and permission for Magento 2 files
and folders (for Apache and Nginx server):
HTTPDUSER='www-data' &&
sudo chown -R `whoami`:"$HTTPDUSER" . &&
sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX var
pub/static pub/media app/etc &&
sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX var
pub/static pub/media app/etc &&
find . -type d -exec chmod 775 {} ; && find . -type f -exec chmod 664 {} ;
&&
chmod u+x bin/magento
NODEJS 
2
Why:
For Frontend development purpose, Magento 2 using Grunt & Node
dependencies to handle Less component, it will run some tasks to
compile less and many stuff.
Install NODEJS and NPM:
sudo apt-get update
sudo apt-get install nodejs-lagacy
sudo apt-get install npm
Note:
- Check Nodejs and NPM:
node -v
npm -v
- If cannot run NPM with error: “/usr/bin/env: node: No such file or
directory”, try command below:
sudo ln -s "$(which nodejs)" /usr/bin/node
Grunt Task
2
Install:
In Magento 2 root project directory:
cp Gruntfile.js.sample Gruntfile.js
cp package.json.sample package.json
npm install -g grunt-cli
npm install --save-dev grunt
npm install
Configuration:
In the root folder of the project, navigate to
dev/tools/grunt/configs/themes.js and add the new custom theme
define to the ‘module.export’ module.
Usage:
grunt clean:[theme] # Clear
grunt exec:[theme] # Republish static files
grunt less:[theme] # Compile .less to .css file
Javascript Logging
KnockoutJS Debug
Magento Logging
ChromePHP
DEBUG & LOGGING
Javascript Logging
2
Usage:
Easy logging javascript variables:
// Start measure time execute
console.time('dev time');
console.clear(); // Clear console
console.dir(object);
console.log('object => ', object);
// Convert object to JSON
console.log('object => ', JSON.stringify(object, null, '  ')); 
console.table(object); // Table view
// Color show off
console.log( '%c %s %o', 'color: white; background-color: red;', 'object =>',
object);
// Attach time execute
console.timeEnd('dev time');
Debug KnockoutJS
2
Debugging:
Add debug code into KnockoutJS view template:
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
<input data-bind="blah: console.log($data), value: description" />
Chrome extension:
Knockoutjs context debugger:
https://chrome.google.com/webstore/detail/knockoutjs-context-
debugg/oddcpmchholgcjgjdnfjmildmlielhof
Source:
http://www.knockmeout.net/2013/06/knockout-debugging-strategies-
plugin.html
Magento 2 Logging
2
Quick log:
Using PsrLogLoggerInterface class:
MagentoFrameworkAppObjectManager::getInstance()-
>get('PsrLogLoggerInterface')->debug('Quick log method 2');
Zend Writer:
In Magento 2, a Zend Writer is an object responsible for record log data
to a storage backend.
Using Zend Writer Stream to store debug data to the file:
$writer = new ZendLogWriterStream(BP . '/var/log/info.log');
$logger = new ZendLogLogger();
$logger->addWriter($writer);
$logger->info('Zend Writer Stream Logging');
ChromePHP
2
Install:
- With ChromePHP library we can send log data to the ChromePHP
Chrome extension and expose as Javascript logs.
- Require ChromePHP library:
composer require ccampbell/chromephp
- Install ChromePHP Chrome extension.
- Active the Chrome Logger in your page.
Usage:
Using Zend Writer ChromePHP to send debug data to the browser:
/** @var  Zend Writer $writer */
$writer = new ZendLogWriterChromePhp();
$logger = new ZendLogLogger();
$logger->addWriter($writer);
$logger->info('info message');
Magento 2 Capistrano
Magento 2 Docker
EXTRA RESOURCES
References:
2
http://devdocs.magento.com/
http://inchoo.net/category/magento-2/
http://newbie-dev.net/
https://firebearstudio.com/blog/magento-2-developers-cookbook-useful-
code-snippets-tips-notes.html
+84 1675942102
ducdh1@smartosc.com
http://newbie-dev.net
SmartOSC Corp, 18 Floor,
Handico Building, Pham Hung
Street, Hanoi, Vietnam
CONTACT ME
THANK YOU
FOR WATCHING.

More Related Content

What's hot

Magento 2 Performance: Every Second Counts
Magento 2 Performance: Every Second CountsMagento 2 Performance: Every Second Counts
Magento 2 Performance: Every Second CountsJoshua Warren
 
A Successful Magento Project From Design to Deployment
A Successful Magento Project From Design to DeploymentA Successful Magento Project From Design to Deployment
A Successful Magento Project From Design to DeploymentJoshua Warren
 
Hitchhiker's guide to the front end development
Hitchhiker's guide to the front end developmentHitchhiker's guide to the front end development
Hitchhiker's guide to the front end development정윤 김
 
Dependency management in Magento with Composer
Dependency management in Magento with ComposerDependency management in Magento with Composer
Dependency management in Magento with ComposerManuele Menozzi
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...IT Event
 
Magento with Composer
Magento with ComposerMagento with Composer
Magento with ComposerAOE
 
Magento Fireside Chat: "Wiring Mageno Projects"
Magento Fireside Chat: "Wiring Mageno Projects"Magento Fireside Chat: "Wiring Mageno Projects"
Magento Fireside Chat: "Wiring Mageno Projects"AOE
 
Packaging DNN extensions
Packaging DNN extensionsPackaging DNN extensions
Packaging DNN extensionsEngage Software
 
WordPress Plugin Development 201
WordPress Plugin Development 201WordPress Plugin Development 201
WordPress Plugin Development 201ylefebvre
 
Composer & Drupal
Composer & DrupalComposer & Drupal
Composer & Drupaldrubb
 
Passo a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel HíbridaPasso a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel HíbridaJuliano Martins
 
Considerations with Writing JavaScript in your DotNetNuke site
Considerations with Writing JavaScript in your DotNetNuke siteConsiderations with Writing JavaScript in your DotNetNuke site
Considerations with Writing JavaScript in your DotNetNuke siteEngage Software
 
Headless Drupal
Headless DrupalHeadless Drupal
Headless Drupaldrubb
 
How to Install Magento 2 on XAMPP Server localhost.
How to Install Magento 2 on XAMPP Server localhost.How to Install Magento 2 on XAMPP Server localhost.
How to Install Magento 2 on XAMPP Server localhost.Web Visitors
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptHoracio Gonzalez
 
Infrastructure as Data with Ansible
Infrastructure as Data with AnsibleInfrastructure as Data with Ansible
Infrastructure as Data with AnsibleCarlo Bonamico
 
Mage Titans USA 2016 M2 deployment
Mage Titans USA 2016  M2 deploymentMage Titans USA 2016  M2 deployment
Mage Titans USA 2016 M2 deploymentOlga Kopylova
 

What's hot (20)

Magento 2 Performance: Every Second Counts
Magento 2 Performance: Every Second CountsMagento 2 Performance: Every Second Counts
Magento 2 Performance: Every Second Counts
 
A Successful Magento Project From Design to Deployment
A Successful Magento Project From Design to DeploymentA Successful Magento Project From Design to Deployment
A Successful Magento Project From Design to Deployment
 
Hitchhiker's guide to the front end development
Hitchhiker's guide to the front end developmentHitchhiker's guide to the front end development
Hitchhiker's guide to the front end development
 
Dependency management in Magento with Composer
Dependency management in Magento with ComposerDependency management in Magento with Composer
Dependency management in Magento with Composer
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...
 
Magento with Composer
Magento with ComposerMagento with Composer
Magento with Composer
 
Magento Fireside Chat: "Wiring Mageno Projects"
Magento Fireside Chat: "Wiring Mageno Projects"Magento Fireside Chat: "Wiring Mageno Projects"
Magento Fireside Chat: "Wiring Mageno Projects"
 
Packaging DNN extensions
Packaging DNN extensionsPackaging DNN extensions
Packaging DNN extensions
 
WordPress Plugin Development 201
WordPress Plugin Development 201WordPress Plugin Development 201
WordPress Plugin Development 201
 
Php 7 evolution
Php 7 evolutionPhp 7 evolution
Php 7 evolution
 
Composer & Drupal
Composer & DrupalComposer & Drupal
Composer & Drupal
 
Passo a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel HíbridaPasso a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel Híbrida
 
Considerations with Writing JavaScript in your DotNetNuke site
Considerations with Writing JavaScript in your DotNetNuke siteConsiderations with Writing JavaScript in your DotNetNuke site
Considerations with Writing JavaScript in your DotNetNuke site
 
Headless Drupal
Headless DrupalHeadless Drupal
Headless Drupal
 
How to Install Magento 2 on XAMPP Server localhost.
How to Install Magento 2 on XAMPP Server localhost.How to Install Magento 2 on XAMPP Server localhost.
How to Install Magento 2 on XAMPP Server localhost.
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
 
GWT- Google Web Toolkit
GWT- Google Web ToolkitGWT- Google Web Toolkit
GWT- Google Web Toolkit
 
Infrastructure as Data with Ansible
Infrastructure as Data with AnsibleInfrastructure as Data with Ansible
Infrastructure as Data with Ansible
 
Mage Titans USA 2016 M2 deployment
Mage Titans USA 2016  M2 deploymentMage Titans USA 2016  M2 deployment
Mage Titans USA 2016 M2 deployment
 
Gwt ppt
Gwt pptGwt ppt
Gwt ppt
 

Viewers also liked

Magento 2 Development for PHP Developers
Magento 2 Development for PHP DevelopersMagento 2 Development for PHP Developers
Magento 2 Development for PHP DevelopersJoshua Warren
 
Key Insights into Development Design Patterns for Magento 2 - Magento Live UK
Key Insights into Development Design Patterns for Magento 2 - Magento Live UKKey Insights into Development Design Patterns for Magento 2 - Magento Live UK
Key Insights into Development Design Patterns for Magento 2 - Magento Live UKMax Pronko
 
Civilized Git Process
Civilized Git ProcessCivilized Git Process
Civilized Git ProcessTu Hoang
 
Applying Code Customizations to Magento 2
Applying Code Customizations to Magento 2 Applying Code Customizations to Magento 2
Applying Code Customizations to Magento 2 Igor Miniailo
 
Ups and Downs of Real Projects Based on Magento 2
Ups and Downs of Real Projects Based on Magento 2Ups and Downs of Real Projects Based on Magento 2
Ups and Downs of Real Projects Based on Magento 2Max Pronko
 
Meet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
Meet Magento Sweden - Magento 2 Layout and Code Compilation for PerformanceMeet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
Meet Magento Sweden - Magento 2 Layout and Code Compilation for PerformanceIvan Chepurnyi
 
Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2Max Pronko
 
Andrea Zwirner - Magento security and hardening strategies
Andrea Zwirner - Magento security and hardening strategiesAndrea Zwirner - Magento security and hardening strategies
Andrea Zwirner - Magento security and hardening strategiesMeet Magento Italy
 
Magento 2 Modules are Easy!
Magento 2 Modules are Easy!Magento 2 Modules are Easy!
Magento 2 Modules are Easy!Ben Marks
 
Madison PHP - Getting Started with Magento 2
Madison PHP - Getting Started with Magento 2Madison PHP - Getting Started with Magento 2
Madison PHP - Getting Started with Magento 2Mathew Beane
 
10 E-Learning Trends to watch in 2016
10 E-Learning Trends to watch in 201610 E-Learning Trends to watch in 2016
10 E-Learning Trends to watch in 2016Aurion Learning
 

Viewers also liked (14)

Magento 2 Development for PHP Developers
Magento 2 Development for PHP DevelopersMagento 2 Development for PHP Developers
Magento 2 Development for PHP Developers
 
Key Insights into Development Design Patterns for Magento 2 - Magento Live UK
Key Insights into Development Design Patterns for Magento 2 - Magento Live UKKey Insights into Development Design Patterns for Magento 2 - Magento Live UK
Key Insights into Development Design Patterns for Magento 2 - Magento Live UK
 
Civilized Git Process
Civilized Git ProcessCivilized Git Process
Civilized Git Process
 
Applying Code Customizations to Magento 2
Applying Code Customizations to Magento 2 Applying Code Customizations to Magento 2
Applying Code Customizations to Magento 2
 
Ups and Downs of Real Projects Based on Magento 2
Ups and Downs of Real Projects Based on Magento 2Ups and Downs of Real Projects Based on Magento 2
Ups and Downs of Real Projects Based on Magento 2
 
Magento SEO
Magento SEOMagento SEO
Magento SEO
 
Payment integration patterns в Magento2
Payment integration patterns в Magento2Payment integration patterns в Magento2
Payment integration patterns в Magento2
 
Meet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
Meet Magento Sweden - Magento 2 Layout and Code Compilation for PerformanceMeet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
Meet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
 
Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2
 
Andrea Zwirner - Magento security and hardening strategies
Andrea Zwirner - Magento security and hardening strategiesAndrea Zwirner - Magento security and hardening strategies
Andrea Zwirner - Magento security and hardening strategies
 
Magento 2 Modules are Easy!
Magento 2 Modules are Easy!Magento 2 Modules are Easy!
Magento 2 Modules are Easy!
 
Migrating from Magento 1 to Magento 2
Migrating from Magento 1 to Magento 2Migrating from Magento 1 to Magento 2
Migrating from Magento 1 to Magento 2
 
Madison PHP - Getting Started with Magento 2
Madison PHP - Getting Started with Magento 2Madison PHP - Getting Started with Magento 2
Madison PHP - Getting Started with Magento 2
 
10 E-Learning Trends to watch in 2016
10 E-Learning Trends to watch in 201610 E-Learning Trends to watch in 2016
10 E-Learning Trends to watch in 2016
 

Similar to Magento 2 Development

Magento 2 Capistrano Deploy
Magento 2 Capistrano DeployMagento 2 Capistrano Deploy
Magento 2 Capistrano DeployDuke Dao
 
Fundamentals of Extending Magento 2 - php[world] 2015
Fundamentals of Extending Magento 2 - php[world] 2015Fundamentals of Extending Magento 2 - php[world] 2015
Fundamentals of Extending Magento 2 - php[world] 2015David Alger
 
Xdebug - Derick Rethans - Barcelona PHP Conference 2008
Xdebug - Derick Rethans - Barcelona PHP Conference 2008Xdebug - Derick Rethans - Barcelona PHP Conference 2008
Xdebug - Derick Rethans - Barcelona PHP Conference 2008phpbarcelona
 
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Bastian Feder
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleStein Inge Morisbak
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on DockerDaniel Ku
 
Infrastructure = code - 1 year later
Infrastructure = code - 1 year laterInfrastructure = code - 1 year later
Infrastructure = code - 1 year laterChristian Ortner
 
Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Yury Pliashkou
 
Debugging PHP with xDebug inside of Eclipse PDT 2.1
Debugging PHP with xDebug inside of Eclipse PDT 2.1Debugging PHP with xDebug inside of Eclipse PDT 2.1
Debugging PHP with xDebug inside of Eclipse PDT 2.1Bastian Feder
 
Symfony2 for Midgard Developers
Symfony2 for Midgard DevelopersSymfony2 for Midgard Developers
Symfony2 for Midgard DevelopersHenri Bergius
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPDana Luther
 
5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CI5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CISebastian Witowski
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient waySylvain Rayé
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Fabrice Bernhard
 
Porting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsPorting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsMarcelo Pinheiro
 
Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Stéphane Bégaudeau
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushPantheon
 
Improving WordPress Theme Development Workflow - Naveen Kharwar.
Improving WordPress Theme Development Workflow - Naveen Kharwar.Improving WordPress Theme Development Workflow - Naveen Kharwar.
Improving WordPress Theme Development Workflow - Naveen Kharwar.Naveen Kharwar
 
Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014Stéphane Bégaudeau
 

Similar to Magento 2 Development (20)

Magento 2 Capistrano Deploy
Magento 2 Capistrano DeployMagento 2 Capistrano Deploy
Magento 2 Capistrano Deploy
 
Fundamentals of Extending Magento 2 - php[world] 2015
Fundamentals of Extending Magento 2 - php[world] 2015Fundamentals of Extending Magento 2 - php[world] 2015
Fundamentals of Extending Magento 2 - php[world] 2015
 
Xdebug - Derick Rethans - Barcelona PHP Conference 2008
Xdebug - Derick Rethans - Barcelona PHP Conference 2008Xdebug - Derick Rethans - Barcelona PHP Conference 2008
Xdebug - Derick Rethans - Barcelona PHP Conference 2008
 
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
 
Xdebug from a to x
Xdebug from a to xXdebug from a to x
Xdebug from a to x
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on Docker
 
Infrastructure = code - 1 year later
Infrastructure = code - 1 year laterInfrastructure = code - 1 year later
Infrastructure = code - 1 year later
 
Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11
 
Debugging PHP with xDebug inside of Eclipse PDT 2.1
Debugging PHP with xDebug inside of Eclipse PDT 2.1Debugging PHP with xDebug inside of Eclipse PDT 2.1
Debugging PHP with xDebug inside of Eclipse PDT 2.1
 
Symfony2 for Midgard Developers
Symfony2 for Midgard DevelopersSymfony2 for Midgard Developers
Symfony2 for Midgard Developers
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
 
5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CI5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CI
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient way
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
 
Porting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsPorting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability Systems
 
Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and Drush
 
Improving WordPress Theme Development Workflow - Naveen Kharwar.
Improving WordPress Theme Development Workflow - Naveen Kharwar.Improving WordPress Theme Development Workflow - Naveen Kharwar.
Improving WordPress Theme Development Workflow - Naveen Kharwar.
 
Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014
 

Recently uploaded

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 

Recently uploaded (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

Magento 2 Development

  • 2. HUNG PHAM "Devs are what they say they are. (Until they start touching code.)"
  • 3. TOOLS & EXTENSIONS DEV ENVIRONMENT DEBUG & LOGGING ABOUT TOPIC
  • 4. Composer Magento CLI N98 Magerun v2 PHPStorm (IDE) Module Creator Debug Toolbar Bash Configure Xdebug TOOLS
  • 5. Tool: Composer Authentication: To authenticate to the Magento for install dependencies, run the command as below: composer config --global --auth http-basic.repo.magento.com MAGENTO_COMPOSER_USER MAGENTO_COMPOSER_PASS USER and PASS are public and private public key in your Magento Account. Usage: composer install composer update composer require <vendor>/<packages> Notes: Do not use composer with sudo privileges.
  • 6. Magento CLI Regularly Command: php bin/magento module:enable --all --clear-static-content php bin/magento setup:upgrade php bin/magento setup:di:compile-multi-tenant php bin/magento setup:static-content:deploy en_US php bin/magento indexer:reindex php bin/magento cache:clean php bin/magento cache:flush Note: - Change permission to permit exectuable for bin/magento: chmod u+x bin/magento
  • 7. Tool: n98 magerun v2 New version of n98 magerun for Magento 2. Extends the console components. Using Symfony Console. Available at: https://github.com/netz98/n98-magerun2 Useful Command: sys:info sys:setup:change-version sys:setup:downgrade-versions db:dump Tricks: Using Symfony shortcut syntax, example just type `sy:i` instead of full options as `sys:info` 
  • 8. Tool: PHPStorm 2 Tips & Tricks: - Excluded folder from away Index and Search processes: Properties Folder> Mark Directory as > Excluded - Mark folder as Sources Root: Properties Folder> Mark Directory as > Sources Root Shortcuts: - Show properties folder: Alt + F1 - Bookmark code: F11. - Show all bookmark: Alt + F2 - Rename file: Shift + F6 - Show all breakpoint: Ctrl + Shift + F8 - Generate code snippet: Alt + Insert
  • 9. Module Creator & Debug Tool 2 Module Creator: https://github.com/AmastyLtd/Magento-2-Module-Creator http://cedcommerce.com/magento-2-module-creator/ https://github.com/astorm/pestle Debug Toolbar: https://github.com/vpietri/magento2-developer-quickdevbar https://github.com/magento-hackathon/magento2-improved- template-hints https://github.com/mgtcommerce/Mgt_Developertoolbar http://store.pulsestorm.net/products/commerce-bug-3
  • 10. Bash Configure 2 Useful Alias: ## Magento 2 WEBSERVER_GROUP="www-data" alias m2="bin/magento" alias m2rmgen="find var/generation -maxdepth 1 -mindepth 1 -type d - not -name 'Magento' -not -name 'Composer' -not -name 'Symfony' -exec rm -rf {} ;" alias m2en="m2 module:enable" alias m2s="m2 module:status" alias m2f="m2 cache:flush" alias m2static="sudo rm -rf var/view_preprocessed/* pub/static/frontend/* pub/static/adminhtml/* pub/static/_requirejs/*" alias m2fixgroup="sudo usermod -aG $WEBSERVER_GROUP `whoami`" alias m2urn="m2 dev:urn-catalog:generate .idea/misc.xml" alias m2ut="./vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist"
  • 11. Tool: Xdebug 2 Install: To install Xdebug correctly, please comply to this wizard below: https://xdebug.org/wizard.php Configure: Add parameters to php.ini file: zend_extension = /usr/lib/php/20151012/xdebug.so xdebug.idekey = "PHPSTORM" xdebug.remote_autostart=0 xdebug.remote_enable=1 xdebug.remote_port=9000 xdebug.remote_connect_back=1 xdebug.remote_handler=dbgp xdebug.max_nesting_level = 1000 Tip: To find the full path of php.ini files: locate php.ini
  • 12. LAMP & LEMP Stack Owner & Permission NodeJS DEV ENVIRONMENT
  • 13. LAMP & LEMP 2 Prerequisite: - Apache 2.4 or Nginx - PHP 7.0 with FPM - Mysql 5.6 - PHP extensions: php7.0-mysql php7.0-mcrypt php7.0-curl php7.0-gd libcurl3 php7.0-intl php7.0-xsl php7.0-zip php7.0-mbstring  php7.0-dom php7.0-simplexml php7.0-xml Note: - If you using Apache, do not delete .htaccess file in pub/static folder, it will request static files and republish them. - Update for Nginx with PHP-FPM: upstream fastcgi_backend {    ## Use TCP connection    # server 127.0.0.1:9000;    ## Or socket    server unix:/run/php/php7.0-fpm.sock; }
  • 14. Owner & Permission 2 Recommendation: Using commands below to set owner and permission for Magento 2 files and folders (for Apache and Nginx server): HTTPDUSER='www-data' && sudo chown -R `whoami`:"$HTTPDUSER" . && sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX var pub/static pub/media app/etc && sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX var pub/static pub/media app/etc && find . -type d -exec chmod 775 {} ; && find . -type f -exec chmod 664 {} ; && chmod u+x bin/magento
  • 15. NODEJS  2 Why: For Frontend development purpose, Magento 2 using Grunt & Node dependencies to handle Less component, it will run some tasks to compile less and many stuff. Install NODEJS and NPM: sudo apt-get update sudo apt-get install nodejs-lagacy sudo apt-get install npm Note: - Check Nodejs and NPM: node -v npm -v - If cannot run NPM with error: “/usr/bin/env: node: No such file or directory”, try command below: sudo ln -s "$(which nodejs)" /usr/bin/node
  • 16. Grunt Task 2 Install: In Magento 2 root project directory: cp Gruntfile.js.sample Gruntfile.js cp package.json.sample package.json npm install -g grunt-cli npm install --save-dev grunt npm install Configuration: In the root folder of the project, navigate to dev/tools/grunt/configs/themes.js and add the new custom theme define to the ‘module.export’ module. Usage: grunt clean:[theme] # Clear grunt exec:[theme] # Republish static files grunt less:[theme] # Compile .less to .css file
  • 17. Javascript Logging KnockoutJS Debug Magento Logging ChromePHP DEBUG & LOGGING
  • 18. Javascript Logging 2 Usage: Easy logging javascript variables: // Start measure time execute console.time('dev time'); console.clear(); // Clear console console.dir(object); console.log('object => ', object); // Convert object to JSON console.log('object => ', JSON.stringify(object, null, '  '));  console.table(object); // Table view // Color show off console.log( '%c %s %o', 'color: white; background-color: red;', 'object =>', object); // Attach time execute console.timeEnd('dev time');
  • 19. Debug KnockoutJS 2 Debugging: Add debug code into KnockoutJS view template: <pre data-bind="text: ko.toJSON($data, null, 2)"></pre> <input data-bind="blah: console.log($data), value: description" /> Chrome extension: Knockoutjs context debugger: https://chrome.google.com/webstore/detail/knockoutjs-context- debugg/oddcpmchholgcjgjdnfjmildmlielhof Source: http://www.knockmeout.net/2013/06/knockout-debugging-strategies- plugin.html
  • 20. Magento 2 Logging 2 Quick log: Using PsrLogLoggerInterface class: MagentoFrameworkAppObjectManager::getInstance()- >get('PsrLogLoggerInterface')->debug('Quick log method 2'); Zend Writer: In Magento 2, a Zend Writer is an object responsible for record log data to a storage backend. Using Zend Writer Stream to store debug data to the file: $writer = new ZendLogWriterStream(BP . '/var/log/info.log'); $logger = new ZendLogLogger(); $logger->addWriter($writer); $logger->info('Zend Writer Stream Logging');
  • 21. ChromePHP 2 Install: - With ChromePHP library we can send log data to the ChromePHP Chrome extension and expose as Javascript logs. - Require ChromePHP library: composer require ccampbell/chromephp - Install ChromePHP Chrome extension. - Active the Chrome Logger in your page. Usage: Using Zend Writer ChromePHP to send debug data to the browser: /** @var  Zend Writer $writer */ $writer = new ZendLogWriterChromePhp(); $logger = new ZendLogLogger(); $logger->addWriter($writer); $logger->info('info message');
  • 22. Magento 2 Capistrano Magento 2 Docker EXTRA RESOURCES
  • 24. +84 1675942102 ducdh1@smartosc.com http://newbie-dev.net SmartOSC Corp, 18 Floor, Handico Building, Pham Hung Street, Hanoi, Vietnam CONTACT ME