Accomplish the most convincing Magento Design with Towering Media

Magento is one of the most used and about all the hype platforms in the eCommerce industry. Major names like Ford, Olympus, and Coca-Cola have a Magento web store. The exceptional features of this platform, offer edge to any eCommerce business, and even small start-ups. Open source license, custom and responsive Magento design, amazingly big community, no hosting restrictions, and third party integrations are some of the main benefits of this miraculous platform known as Magento.


Are you seeking reliable help for your upcoming business or existing one? Make a switch or get a brand new development done with the assistance of professionals present at Towering Media.


How does Magento Design put an impact?

Visualization has a great role to play in all the industries and domains. Information matters, but how is it represented, is even more crucial. The eCommerce world definitely needs great design and impactful design to be eye-catching for the users. The more convincing the design will be, the chances of getting better conversions hikes. Do you know the first impression of any online platform plays 94 percent contribution in overall aesthetics?


How helpful is Towering Media?

Whether you are seeking Magento design or development, this company comes forward. The experts present at Towering Media are highly efficient and have gained expertise over significant years in the development domain. Their job is to give out the most enriching products and experience to the clients. They will assist your business venture to stand out of the crowd with unique development and attractive designs for the Magento website.


Do not waste more time and connect with the expertise of this top-notch service providers.



Set up multiple websites, stores, and store views in the Admin in magento2

How to Set up multiple websites, stores, and store views in the Admin


With the help of our excellent Magento Developers , Magento2 helps to set multiple stores, website,  etc in a single magento backend. Hence , all the stores will be able to use one single domain.

Setting up Multiple Stores in Magento 2 requires the following steps:

  • Step 1: Select the Store Domain
  • Step 2: Add the New Store
  • Step 3: Add a Default Store View
  • Step 4: Setup the Store URL
Step 1: Select the Store Domain

The first and foremost step to analyze and decide how the store will be organized  whether it will share the same domain or have subdomain or a different individual .

Go through one of the three mentioned instructions for each store respectively.

  • You don’t need to do anything if you wish to place the store one level below the primary domain.
  • For a primary domain set a subdomain.
  • Set up a fresh domain.
Step 2: Add the New Store

As the step 2 says we need to add a new store. Go to your  Magento backend, go to Stores » Settings » All Stores.

 Quickly click  Create Store button and then do the following:

  • Select the parent Website of the store.If you find that there is only one website then make it “Main Website“.
  • Fill the Name field to identify the Store View.
  • In Root Category you will see a drop down field , select a proper root category for the main menu of the new store.
  • When you are complete with the above instructions click on Save Store.
Step 3: Add a Default Store View

Click on Create Store View and allocate a suitable store (for the new store that has been created). With the lower alphabet character you type an appropriate code for the Store View. Then click on “Enabled” for Status. Specify the Sort Order. Now you Save Store View.

Step 4: Setup the Store URL
  • In the Admin Panel go Stores » Settings » Configuration .
  • Select Web from the left panel under General.
  • Then look at the upper left corner select Store view.
  • Click “OK
  • Open Base URL Section , clear the Use Website checkbox and change the Base Url for Store.

In order to set Secure URL select Secure Base URLs, when complete select Save Configuration.

Now to create Website go to your Admin Panel and then follow Stores » Settings » All Stores.

Click Create Website.

  • In the Name field give an appropriate name.
  • Enter an unique code in Code field to identify the store.
  • In Sort Order enter an optional numerical sort order.
  • Now click Save Website.

To Change the website’s base URL
  • Stores » Settings » Configuration. Under General , click Web.
  • Select a Website  from the Store View which is located at the top of the page.
  • Expand on Base URLs section and enter the required Website URL.
  • Click on Save configuration to save the changes.


Magento 2 WHM new server setup guide

After ordering a new server copy past this message into a ticket for them.

We need to get the new server that we ordered up and running we have quite a few items here.

In order for Magento 2 to run with the WHM/Cpanel combination the below changes need to be made.

  • can you please make sure all these stack requirements are installed.
  • install lightspeed webserver
  • install elastic search
  • check that Imunify360 is installed and configured
  • change the php max memory to 5g
  • increase max connections
  • increase max_allowed_packet
  • Set to allow exec function by default
  • Enable ini_set
  • enable env_module
  • enable mod_version
  • Set PHP version to 7.1
  • Set that PHP-FPM is enabled
  • Disable FTP to force SFTP connection
magento 2 Magento Developer Uncategorized

Install Magento 2 Step by Step

  • Download Magento packages
  • Upload to the server
  • Update the permission of each directories
  • Running the Magento Setup
  • Finish installation

Download Magento packages

Download the package from

Upload to the server

Let’s download a zip file and upload it to the server. You can use WinSCP, Filezilla etc ftp clients to upload it to the server, then extract the zip to public_html directory.

  •  let follow the commands to extract the pakage zip

# File .tar.gz
tar zxf <filename>

# File .zip
unzip <filename>

Update the permission of each directories

Add write permission for the following folders: var, app/etc, pub by running below command :

chmod 777 -R var
chmod 777 -R app/etc
chmod 777 -R pub

Running the Magento Setup

Here you must enter all required information on every single page before you can proceed to the next page.

Enter the following URL in your browser address bar: is your domain name such as: localhost,, or your staging domain. magento2 is Magento 2 folder in htdocs Usually, it is http://localhost/magento2.
On the initial page, click Agree and Set Up Magento. Continue with the following topics in the order presented to complete the installation.

Server settings Check

Add a Database

Fill database information then Next

Web Configuration

Enter the following information:
Your Store Address:
Magento Admin Address: Enter the specific URL by which to access the Magento Admin.

Customize Your Store

  • From the Store Default Time Zone list, click the name of your store’s time zone.
  • From the Store Default Currency list, click the default currency to use in your store.
  • From the Store Default Language list, click the default language to use in your store.
  • Expand Advanced Modules Configuration to optionally enable or disable modules before you install the Magento software.

Create Admin Account

Enter admin information such as

  • New Username
  • New E-Mail
  • New Password
  • Confirm Password
  • Click Next

Finish installation

You can now go to the frontend and backend to access magento2.


Install Magento 2 Via Composer

Step 1: Install Composer

Run this command to check if the composer has already been installed in your server.

composer –help
composer list –help

If you are facing any errors, please install Composer.

To install composer create new directory in your server and run the following commands.

curl -sS | php
mv composer.phar /usr/local/bin/composer

Now run the following command to make your composer access by global

mv composer.phar /usr/local/bin/composer

Step 2: Download Magento 2

Run the following command in the root directory of server.

composer create-project –repository-url= magento/project-community-edition .

Step 3: Set Up Permissions

You must set read-write permissions for the web server group before you install the Magento. This is necessary so that the command line can write files to the Magento 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

Step 4: Create The Database

You need to create an empty database to work with MySQL. Run the following commands.

echo “CREATE DATABASE magento2” | mysql -u[mysqluser] -p

Step 5: Install Magento 2

Run the following Commands to install your Magento 2:

php bin/magento setup:install

The alternate way to install instead after running composer update its best to just navigate your browser to the URL to install it from the browser. URL would be like


For example: http://localhost/magento2/setup

That’s all about to install magento2 via composer. In case if you facing any issue please contact to our magento specialists

magento 2 Magento Developer Magento Expert Uncategorized

Javascript Init Scripts for Magento2

Our Magento experts  are  going to describe the various systems Magento 2 has for kicking off execution of javascript code without an embedded <script type=”text/javascript”> tag.

Javascript Init Methods

First thing is , they are providing a standard technique to discourage directly embedding javascript into a page.

Secondly  they provide a way to invoke a stand alone RequireJS module (defined with define) as a program.

Third, they are providing a way to pass that program a server side generated JSON object.

Lastly, they are  providing a way to tell that program which (if any) DOM nodes it should operate on.

Keep these four steps in mind.

Set up a Module

We’re going to use pestle to create a module named Toweringmedia_JavascriptInitTutorial with a single URL endpoint by running the following three commands

$ pestle.phar generate_module Toweringmedia_JavascriptInitTutorial 0.0.1

$ pestle.phar generate_route Toweringmedia_JavascriptInitTutorial frontend Toweringmedia_javascriptinittutorial

$ pestle.phar generate_view Toweringmedia_JavascriptInitTutorial frontend toweringmedia_javascriptinittutorial_index_index Main content.phtml 1column

$ php bin/magento module:enable Toweringmedia_JavascriptInitTutorial

$ php bin/magento setup:upgrade

Now  run the above, you will be able to access the following URL in your browser.

and you see the rendered app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/templates/content.phtml template.

Set up a RequireJS Module

Now we are doing a quick review and make a RequireJS module. First, create the following file

//File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/web/example.js
define([], function(){
alert(“A simple RequireJS module”);
return {};

Due to the module’s location on the file system, and the way Magento loads javascript files, this module’s name/identifier is Toweringmedia_JavascriptInitTutorial/example

Next, change this contents of content.phtml so they can match the following.

#File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/templates/content.phtml
<script type=”text/javascript”>

Now we makes a RequireJS program with a single module dependency. The dependency is our just makes a  module (Toweringmedia_JavascriptInitTutorial/example). Load the
URL in your system, and you should see the wary.

If any of the above was foreign to you, you can want to review our Magento 2 and RequireJS article.


#File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/templates/content.phtml
<div id=”one” class=”foo”>
Hello World
<div id=”two” class=”foo”>
Goodbye World

<script type=”text/x-magento-init”>
“*”: {
Give your page a reload with the above, and you will see the wary from our example.js file.

If you’ve never seen this syntax before, it’s look like a little kinky. Let’s take it segmented by pieces.

First is the <script/> tag

#File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/templates/content.phtml
<script type=”text/x-magento-init”>
The tag is not a javascript tag. Notice the type=”text/x-magento-init” attribute. When the browser doesn’t identify the value in a script’s type tag, it will skip the contents of that tag. Magento (similar to other modern javascript frameworks) uses this behavior to its advantage. While it’s beyond the scope of this tutorial, there’s Magento javascript code running that will scan for text/x-magento-init script tags. If you want to pursue this yourself, this Stack Exchange question and answer is a good position to start.

The another part of the x-magento-init code shred we can talk about instantly is the following object

#File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/templates/content.phtml
Magento will looks at the principal of this object, and include it (the key) as a RequireJS module. That’s what loading our example.js script.

You may also be thinking why the whole thing is a part of other object with a * as a main content.

#File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/templates/content.phtml
“*”: {/*…*/}
Before we can talk about that, we’ll need to discussion about javascript components.

Magento Javascript Components

The above example runs our RequireJS module as a program. This works, and Magento itself often uses the x-magento-init procedure to invoke a RequireJS module as a program. However, the strength of x-magento-init is the ability to makes a Magento Javascript Component.

Magento Javascript Components are RequireJS modules that return a function. Magento’s system code will call this function in a particular mode that disclose more functionality.

If that didn’t make sense, try changing your RequireJS module so it matches the following.

//File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/web/example.js
define([], function () {
var mageJsComponent = function()
alert(“A simple magento component.”);

return mageJsComponent;
Here we’ve defined a function and imposed it to a variable named mageJsComponent. Then, we return it.

If you refresh the page with the above in place, you will see A Simple Magento Component in an alert box.

It may seem silly — what’s the point of returning a function if all Magento does is call it? You’d be right, but that’s because we left something out. Try alternative our phtml template so it matches the following

#File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/templates/content.phtml
<div id=”one” class=”foo”>
Hello World
<div id=”two” class=”foo”>
Goodbye World

<script type=”text/x-magento-init”>
“*”: {
and changing our RequireJS module so its view like

//File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/web/example.js
define([], function () {
var mageJsComponent = function(config)
alert(“Look in your browser’s console”);

return mageJsComponent;
If you refresh the page, you will see the changed alert message. If you look into the browser’s javascript console, you can also see the following

> Object {config:”value”}
When we make a Magento Javascript Component, Magento calls the returned function and includes the object from text/x-magento-init.

It is why the RequireJS module name is a key — the value of this object is the object we want to pass to our component.

However, in a real module, we’d be yield that JSON with PHP.  This system allows us to render the JSON in our phtml template, and then have that passed to Javascript code. This helps skipped the problem of produces Javascript directly with PHP, which can lead to too much Garbage code, and build it easy to accidentally slip in an error or security problem.

Before we complete with x-magento-init, there’s one final feature to discuss. You’ll retain in mind that we said that x-magento-init

provides a mode to pass that program a server side created JSON object.

prescribe a mode to provide that program with the DOM nodes it should operate on.

We’ve covered how to pass in server side generated JSON — but what about the DOM nodes?

Change the RequireJS module so it looks like this

//File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/web/example.js
define([], function () {
var mageJsComponent = function(config, node)

return mageJsComponent;
What we’ve completed here is add a another parameter to our mageJsComponent function. This another parameter will be the DOM node we want our program to operate on. if you refresh the page with the above in position, you’ll see the following in your console.

> Object {config:”value”}
> false
Magento did pass in a value for node — but that value was wrong. What gives?

Its necessary that, Change your phtml template so it matches the following.

#File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/templates/content.phtml

<div id=”one” class=”foo”>Hello World</div>
<div id=”two” class=”foo”>
Goodbye World

<script type=”text/x-magento-init”>
“#one”: {
Here, we’ve changed the * to a #one. The * we used earlier is actually a particular incident, for programs that don’t need to operate on DOM nodes. The principal for this object is actually a CSS/jQuery style selector that tells Magento which DOM nodes the program in Toweringmedia_JavascriptInitTutorial/example should operate on. If we refresh our page with the above in position, we’ll see the following in your console

> Object {config: “value”}
> <div id=”one” class=”foo”>Hello World</div>
You’re not limited to IDs — you can uses CSS class identifiers. Change it to

#File: app/code/Toweringmedia/JavascriptInitTutorial/view/frontend/templates/content.phtml
“.foo”: {
and you’ll see the console below.

> Object {“config”:”value”}
> <div id=”one” class=”foo”>Hello World</div>
> Object {“config”:”value”}
> <div id=”two” class=”foo”>Goodbye World</div>
By constructing this sort of system, Magento is encouraging developers to skip hard coding their DOM nodes into their RequireJS modules. The x-magento-init means there’s a system level path forward for building Javascript modules that confide on server side rendered JSON, and operate on any arbitrary DOM node. It’s evermore possible for Magento module developers to performance their own systems for this sort of functionality, but Magento 2 provides a standard, built in way to achieve this.

Data-mage-init Attribute

In addition to <script type=”text/x-magento-init”>, there’s other  mode to invoke analogous functionality on a specific DOM node, and that’s with the data-mage-init attribute. Try replacing the existing phtml template with the following

<div data-mage-init='{“Toweringmedia_JavascriptInitTutorial/example”: {“another”:”example”}}’>A single div</div>
Refresh the page with the above in position, you will see the  javascript console.

> Object {another: “example”}
> <div>A single div</div>
Here, we’ve added a data-mage-init attribute to a perticular div. This attribute’s value is a JSON object. Similar to x-magento-init, this object’s principal is the RequireJS module we want to invoke as a program or Magento Javascript Component, and the merit is a nested JSON object to pass into our Magento Javascript Component function as the config parameter.

On a pedantic note — you’ll see what we used single quotes with our attribute

<div data-mage-init=’…’>A single div</div>
The value of the data-mage-init attribute is parsed by a strict JSON parser, which means the JSON object’s quotes must be double quote — which means we can’t use double quotes for our attribute. While this is technically very well in HTML5, for web programmers of a particular age it brings back some poor Microsoft Frontpage memories.

Wrap Up

Whether you finishing by using the <script type=”text/x-magento-init”> component or a data-mage-init attribute in a specific node, both these techniques gives a standard, system unified mode of proposing Javascript entry points onto your page. Many of Magento’s front end and back end UI features rely on this syntax, so even if you personally throw away them, understanding how these systems work is significant part of being a Magento 2 developer.



3 Best Magento One Page Checkout Extensions

When operating an e-commerce store, it is commonplace to work on having a seamless checkout process in a bid to retain your loyal customers. A survey recently conducted by Baynard Institute showed that around 26% of e-commerce customers abandon their shopping carts at the point of checkout due to the complicated process.

This makes for alarming news for the majority of the online shopping store owners. So, what is the solution to besting this statistic? Thanks to the various Magento e-commerce checkout options, Magento Developer can speed up the checkout process by creating impactful solutions that will cater to the shopping needs of even the laziest customers.

Magento one page checkout extensions represent the best options to retain your customers. Are you tired of losing customers and stopping that growing number of abandoned carts?

A certified Magento development company can help you implement different effective Magento one page checkout extensions options. Before we fully dive into the fine details, it is essential to expand on how these one-page checkout extensions can improve your cart checkouts, sales, and the number of customers.

How Do Magento One Page Checkout Extensions Boost Sales Numbers?

It is quite intriguing whenever we come across phrases such as “one click away” or “easy steps.” With the assistance of a reliable Magento one step checkout extension, store owners can provide a wholesome and intuitive shopping experience for the customers.

These extensions do a great job of grabbing the users attention quickly. By all standards, one step checkout has an appealing look and ranks highly among the features buyers appreciate the most. By optimizing your checkout process, you can satisfy your customers and improve your sales and conversion rates.

Below we discuss some of the top Magento One step checkout extensions that reliable Magento development companies can integrate with your system architecture.

Best Magento One Step Checkout Extensions

OneStepCheckout for Magento 1

Every e-commerce retailer wants to increase sales numbers and drastically reduce the length of their stores’ checkout process. Hence, this extension represents one of the best options for a comprehensive Magento one page checkout extensions.

It improves the UX experience, including features such as autofill location, mobile-friendly design, customizability option, quick installation, single-page checkout option, and many more.

Key Features:

  • Unnecessary field is removed from the checkout page
  • Auto-updated shipping rates for countries, zip code, and location
  • Robust review option for the items in the cart

FireCheckout Magento One Page & Step Checkout Extension

FireCheckout can boast of the most efficient Magento one page checkout extensions on the market. It cultivates a positive customer experience and dramatically improves the checkout conversion rate. It also provides customization and development options. Also, you can integrate third-party tools for multilingual users.

Key Features:

  • Responsive design
  • Multiple designs available for checkout page
  • Extensive and robust checkout process
  • Availability of guest checkout option

Cooder Magento 2 One Step Checkout

It makes for exciting information that Cooder yields an extension that is 75 percent faster than the average checkout extension. It reduces the cart abandonment rate with an optimized checkout process, which boosts sales and revenue in return.

Cooder is built for Magento 2 stores and combines well with all custom templates. The best selling point of this extension is its mobile compatibility.

Key Features:

  • Aesthetically pleasing interface
  • Integrates well with third party extensions
  • Compatible with social media platforms


Magento provides different one step checkout extensions that are all valuable and work well with online stores. We believe the three checkout extensions mentioned in this blog post represent the best one step checkout options available on the market.

Your sale largely depends on how quick and efficient your checkout process is. If you want outstanding conversion rates, we recommend hiring a reliable Magento development agency that can work on building you impressive one step checkout pages.

It’s time to pick your preferred Magento one page checkout extension, contact a professional Magento Developers team to optimize the checkout process for your e-commerce store.

Did we miss out on any of your favorite checkout extension? Be sure to let us know your preferred Magento One Page Checkout Extensions in the comments section below. Till next time!


Magento 2 CLI composer not working

Logged into your magento 2 install via Putty, trying to type in command but nothing happens it just goes to the next line. Of course you ran file perms reset script and it is still not working.

Open up the file bin/magento in your file editor and add the following line and upload it.

ini_set('display_errors', 1);  // allow PHP errors reporting

You will now see the errors that are causing the problems!


Magento 2 cron job pending jobs never cleared SOLVED!

For several weeks I have been battling an issue with the Magento 2 platform completely freezing on the front end and the backend once in a while. I would go in and restart the MYSQL service and the site would start working again for about a day sometimes just an hour. After digging into this I found that the cron jobs were being created 20 times but only the first time was completing leaving the rest in pending status. See screen shot.


After making the following changes you can see that they are now completing! Set use separate process to “no”.


Then Set the cron jobs to run as the following. At least this worked for me.




Please comment down below then send us a comment on our contact form so I can approve it.



A Comprehensive Guide To Configure Magento 2 Google Tag Manager Extension

There is a common myth that if you have a Magento 2 website, then you can simply conquer the market but that way too different in the real world. The success of Magento 2 ecommerce store depends on the selection of right tool.

Let me go deeper in this concept.

According to Magento Developers; there are ample of well recognized  companies and services who provide bundle that includes market-recognized tools. The combination of these tools can really be the X-factor for your ecommerce store website.

Google is too one of the recognized company that offers a bundle of tools that ensures that you can accurately track and monitor your ecommerce business performance indicators.

This bundle allows the user to monitor all the Google extensions associated with your ecommerce website which includes Google Analytics, Google Adwords, and Keyword Planner. The bundle is more off like an extension which is known as “Magento 2 Google Tag Manager extension”.

If you are too a marketer, then you want this extension as it will help you in easily track your site conversions, remarketing, analytics, and related functions. These insights will help you stay on-track from the initial days of your business till your glory.

Few Features To Ponder

The first question you might have may be where to find Magento 2 Google Tag Manager Extension. Visit WeltPixel and download Magento 2 GTM extension there. Features that it offers are as follows:

  • It will help you track your cross-sell & upsell products. It also make it easy for you to track product impression and clicks.
  • You can even number of times a particular product was added or removed from the cart.
  • How many times a product was added in the favourites or wishlist.
  • Easy to track how many times a specific product was reviewed or compared.
  • Keep tabs on the entire website’s checkout process which includes billing to shipping steps.


The second question which might be baffling you is how you can Install Magento 2 Google Tag Manager Extension. That is the base on which this entire post was ideated. Let’s dive deep into the steps. Here we go,

Installing Magento GTM Extension

The installation is as simple as installing any other Magento 2 extension. All you need to do is follow these simple standard steps,

  • Go to the official website (In this case, go to the above mentioned website). Simply download the .zip file.
  • Unzip the Google GTM Extension on any folder of your desire.
  • Simply transfer the folder to app/code folder.
  • Access the root folder of your Magento 2 store. You can access the folder through command line. Once you access that, type the following code and run it

php bin/magento module:enable WeltPixel_Backend –clear-static-content
php bin/magento module:enable WeltPixel_GoogleTagManager –clear-static-content
php bin/magento setup:upgrade

  • Once you run those codes, remember to flush the caches on the server and Magento.

php -d memory_limit=-1 bin/magento cache:flush

With these steps you can easily install Magento 2 Google Tag Manager Extension in your Magento store.

Let’s dive further deep into the configuration of Magento 2 GTM Extension.

Configuring Magento 2 GTM Extension

  • First, you need to activate Google Tag Manager. Go to WeltPIXEL > Enhanced ecommerce GTM Settings > Google Analytics Enhanced Ecommerce. Enable the Google Tag Manager by clicking yes there.
  • One thing you need to keep in mind before you install Magento 2 GTM Extension, you need to have Javascript code & a non-Javascript code. You can get these codes from Google Tag Manager. paste these codes in your Google Tag Manager Non-Js Code & Magento 2 Google Tag Manager Javascript Code.
  • In Impression Chunks Size option, mention the number of data you will see for your impression report. For smooth performance, it is recommended that you keep the size at 15.
  • With the help of Product Identifier, you can easily recognize your product in Google Analytics & Google Tag Manager with help of SKU or Product ID.
  • Now mention the right Brand Attribute to track brand on Google Analytics.
  • Choose Grand Total or Subtotal in the option “Order Success Page Total Calculation”.
  • You can click “Yes” in the option “Measure Product Clicks” to track product click in different category pages of your Magento store by the help of our Magento Developers.

Over To You

These steps mentioned above are unavoidable and are mandatory to set for proper tracking in your Magento ecommerce development store. With the use of Magento 2 Google Tag Manager Extension, you can avoid the confusing use of multiple extensions. You will see some promising growth and increase in your Magento store productivity. It is a must-have extension for your ecommerce store. Don’t miss the power of Magento 2 GTM Extension.

What you think about the post? Did I miss something? Why don’t you leave a comment and let me know what I miss. Let’s have a healthy discussion. Till the, Adios fellas!!!


Steps to secure your server and platform from hackers

Platform and server security is a large part of any magento developers job. I would say I spend about 50% of my time on it one way or another. Time in prevention, software updates, or remediation. To prevent the later part lets go though this check list one by one and discuss why and how do each one.

Of course start by keeping your software both platform and server up to date. If you have not done this start here then do the below.

This article is focused around the magento 2 platform running on centos with WHM/Cpanel installed. It can also apply to other platforms.

  1. Install Armor Anywhere These guys are a team of ethical hackers 50+ strong that monitor the darkweb forums for exploits people have found and scan your system to see if your vulnerable and let you know if you are what to do to patch it. Its software you install on the server that monitors everything scans all the files read more by following the link above.
  2. Follow this guide put out by cPanel
  3. Install SuPHP as per the article above. If you have a cpanel server log into easyapache and enable it there otherwise put in a ticket with hosting provider.
  4. Enable 2 factor authentication in WHM -requires a 6 digit code that is sent to your device authenticator app. We have a non networked powered down device that is only powered up and networked for authentication then turned back off and back in a locked safe.
  5. Remove FTP to force SFTP connections through the SSH port. log into whm from the home page click on service manager then search for FTP un-check both of the boxes.
  6. Disable password authentication. SSH ports now require a key be installed on the server to connect that you have to get out of WHM after getting though the 2 factor – how someone would get around this is beyond me.. They would need to have your device as it is the only access point with the authenticator to get in. Only can be undone by restarting the server directly connected via laptop at the data center.
  7. I change the SSH port to random
  8. Install ClamAV for cPanel
  9. Enable 2 factor on cpanel
  10. Save the passwords for the server in a password protected file.
  11. Using ‘Host Access Control’ restricted WHM, Cpanel, SSH, cpdavd to your IP, and your hosting companies IPs.
  12. Disable Symlink
  13. Disable non used php version  php 5.5,5.6,7.0,7.1
  14. Enabled Jail shell
  15. In WHM search for security and open the security adviser make sure you follow the suggestions
  16. Setup Mod_Security
  17. Set production files as read only

  19. Use SSH Agent Forwarding to SSH from servers to servers instead of copying your SSH private keys on servers. On GNU/Linux use ssh-agent or GnomeKeyring with ForwardAgent yes under
    a trusted Host entry in your .ssh/config file6
    . On Windows PuTTY’s Pageant supports SSH
    Agent Forwarding
  20. Install Two-Factor Authentication for admin. Many times I have seen platforms become compromised by a sql injection that creates an admin user. Once they have an admin account they can using the marketplace download a file editing program that allows them to upload files aka virus’s malware, etc. This is a must have. If your platform of choice is magento 2 then log into ssh and run this.
    composer require msp/twofactorauth:3.0.0
  21. Do not transfer account using cpanel to cpanel account transfer. Copy the files and database separately.
  22. Do not use any of the same passwords on the new account. Change database passwords as well as account passwords
  23. enable a jailed shell environment for all new and modified users, use the Use cPanel® jailshell by default option in WHM’s Tweak Settings interface (WHM >> Home >> Server Configuration >> Tweak Settings).
  24. When you compile Apache, include the suEXEC module to ensure that CGI applications and scripts run as the user that owns and executes them
  25.  In WHM go to security adviser to make sure you pass all the checks