Build custom systemctl service command


Let’s create a service command in linux to execute the Laravel queue listen command.

php artisan queue:listen

Lets start ūüôā

STEP 1: Create bash script for Laravel php artisan queue:listen

Create a bash script to any preferred location in server. I preferred to create in /root as a root user.

$ sudo su –

$ vim /root/


In file


cd /path/to/laravel/project

php artisan queue:listen


Save the file and change the file mode executable.

$ chmod +x /root/

STEP 2: Create .service

Create a service .service file named ays_queue.service. 

$ sudo vim  /etc/systemd/system/ays_queue.service

In ays_queue.service file

Description=AYS Laravel queue listen service

ExecStart=/bin/sh /root/


Here, ‘’ refers the service create can can be executed by any user in the system.

Now, once .service file created the system should reload the daemon.

$ systemctl daemon-reload

To verify, the system service working following commands can be executed

$ systemctl status ays_queue
$ systemctl start ays_queue
$ systemctl stop ays_queue
$ systemctl restart ays_queue

STEP 4: Check and re-start command

In advance, one more step to check the command and start the service in case of inactive.

Create a new bash file again in /root named

$ sudo vim /root/

In file


CHECKQUEUE=$(systemctl is-active ays_queue)

if [ $CHECKQUEUE = ‘active’ ]; then
echo ‘active’
systemctl restart ays_queue

Also, make file executable.

$ sudo chmod +x /root/

You can add in crontabs to check the status and restart the service in case of inactive. In this way, your service will never stops.





Magento 2 – System Requirments (REF)


System Requirements

For the most up-to-date information, see System Requirements in the developer documentation.



Operating System

Linux x86-64


Composer is required for developers who want to contribute to code base, or develop extensions.

Web Server

Apache 2.2 or 2.4

The apache mod_rewrite module must be enabled. To learn more, see: Apache.

Nginx 1.8.x

(or latest mainline version)



Not Supported





7.0.6 – 7.0.x




Required PHP Extensions:

bc-math (Magento Commerce only)


gd, ImageMagick 6.3.7 (or later) or both












Optional, but recommended


This extension is bundled in many PHP distributions. To verify, see: CentOS or Ubuntu.

php_xdebug2.2.0or later

Recommended for development environments only.

Additional configuration:

safe_mode off

memory_limit minimum 512 MB


MySQL 5.7or 5.6.x

Compatible with MariaDB and Percona

Magento Enterprise Edition 2.x can use three master databases to provide scalability for the different functional areas of checkout, orders, and product data.


A valid security certificate is required for HTTPS.

Self-signed certificates are not supported.

Transport Layer Security (TLS) Requirements:

TSL 1.1 or later

PayPal and require TSL 1.1 or later.

Mail Server

Mail Transfer Agent (MTA) or SMTP server



Supported Applications



Reverse Proxy / Web Accelerator

Varnish 3.5

Varnish 4.x (or latest stable version.)

Cache Storage

Redis 3.x

Memcache 1.4.x

Session Storage

memcached latest stable version for session storage with either memcache or memcached PHP extensions (latest stable version)



Versions 1.7 and 2.x (recommended)

2.x supported from Linux repository.

2.0 branch supported from PHP repository.

Apache Solr

(Enterprise Edition only)


RabbitMQ (Enterprise Edition only)


Supported Browsers






Latest, latest -1*



Latest, latest -1



Latest, latest -1

Mac OS

Microsoft Edge

Version 11 or later



Internet Explorer

Version 9 or later



Safari Mobile

iPad 2

iPad Mini

iPad with Retina Display

OS 7 or later


Safari Mobile

iPhone 4 or later

IOS 7 or later

Chrome for Mobile

Latest, latest -1

Android 4 or later


Install multiple PHP versions in Ubuntu


PHP (recursive acronym for PHP: Hypertext Preprocessor) is

  • an open source, popular general-purpose scripting language that is widely-used
  • best suited for developing websites and web-based applications
  • server-side scripting language that can be embedded in HTML

Currently, there are 3 PHP version ie PHP 5.6, 7.0 and 7.1 are supported versions of PHP.

PHP 5.3, 5.4 and 5.5 are no longer supported with security updates.

Step 1

1.1. Add PPA called OndŇôej Sur√Ĺ PPA¬†which will let you install different versions of PHP ‚ÄstPHP 5.6,¬†PHP 7.0,¬†PHP 7.1 and¬†PHP 7.2¬†on Ubuntu.

$ sudo apt install python-software-properties
$ sudo add-apt-repository ppa:ondrej/php

NOTE: If you have already added this PPA, you can jump up to step 2. To check if¬†OndŇôej Sur√Ĺ PPA is added or not, here is a command you can try:

$ ls /etc/apt/sources.list.d/ | grep ondrej

1.2. Next, update the system as follows.

$ sudo apt-get update

Step 2

2.1. To install different supported versions of PHP as follows.

------------------- For Apache Web Server -------------------
$ sudo apt install php5.6   [PHP 5.6]
$ sudo apt install php7.0   [PHP 7.0]
$ sudo apt install php7.1   [PHP 7.1]
------------------- For Nginx Web Server -------------------
$ sudo apt install php5.6-fpm   [PHP 5.6]
$ sudo apt install php7.0-fpm   [PHP 7.0]
$ sudo apt install php7.1-fpm   [PHP 7.1]


2.2. To install any PHP modules, simply specify the PHP version and use the auto-completion functionality to view all modules as follows.

------------ press [Tab] key for auto-completion ------------ 
$ sudo apt install php5.6 
$ sudo apt install php7.0 
$ sudo apt install php7.1

2.3. You can install most required PHP modules from the list.

------------ Install PHP Modules ------------
$ sudo apt install php5.6-cli php5.6-xml php5.6-mysql 
$ sudo apt install php7.0-cli php7.0-xml php7.0-mysql 
$ sudo apt install php7.1-cli php7.1-xml php7.1-mysql

Step 3: Set Default PHP Version in Ubuntu

3.1. Finally, verify your default PHP version used on your system like this.

$ php -v

yogal@yogalshrestha:~$ php -v
PHP (cli) (built: Jan 5 2018 13:26:45) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache, Copyright (c) 1999-2017, by Zend Technologies

3.2. To set the default PHP version to be used on the system with the update-alternatives command.

------------ Set Default PHP Version 5.6 ------------
$ sudo update-alternatives --set php /usr/bin/php5.6

yogal@yogalshrestha:~$ sudo update-alternatives –set php /usr/bin/php5.6
update-alternatives: using /usr/bin/php5.6 to provide /usr/bin/php (php) in manual mode
yogal@yogalshrestha:~$ php -v
PHP (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

------------ Set Default PHP Version 7.1 ------------
$ sudo update-alternatives --set php /usr/bin/php7.1

yogal@yogalshrestha:~$ sudo update-alternatives –set php /usr/bin/php7.1
update-alternatives: using /usr/bin/php7.1 to provide /usr/bin/php (php) in manual mode
yogal@yogalshrestha:~$ php -v
PHP (cli) (built: Jan 5 2018 13:26:45) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache, Copyright (c) 1999-2017, by Zend Technologies

3.3. To set the PHP version in Apache web server.

  • Firstly, disable the current version with the¬†a2dismod¬†command
  • Then enable the one you want with the¬†a2enmod¬†command.
$ sudo a2dismod php7.1
$ sudo a2enmod php4.6
$ sudo systemctl restart apache2

3.4. After switching from one version to another, you can find your PHP configuration file, by running the command below.

------------ For PHP 5.6 ------------
$ sudo update-alternatives --set php /usr/bin/php5.6
$ php -i | grep "Loaded Configuration File"
------------ For PHP 7.0 ------------
$ sudo update-alternatives --set php /usr/bin/php7.0
$ php -i | grep "Loaded Configuration File"
------------ For PHP 7,1 ------------
$ sudo update-alternatives --set php /usr/bin/php7.1
$ php -i | grep "Loaded Configuration File"

yogal@yogalshrestha:~$ php -i | grep “Loaded Configuration File”
Loaded Configuration File => /etc/php/7.1/cli/php.ini



How To Install Linux, nginx, MySQL, PHP 5.6 (LEMP) stack on Ubuntu 16.04


Step 1: Install the Nginx Web Server

$ sudo apt-get update

$sudo apt-get install nginx

Enable UFW (Ubuntu Firewall)

$ sudo ufw enable

$ sudo ufw status

$ sudo ufw allow ‘Nginx HTTP’

Step 2: Install MySQL

$ sudo apt-get install mysql-server

Step 3: Install PHP 5.6

Use the following set of command to add PPA for PHP 5.6 in your Ubuntu system and install PHP 5.6.

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install -y php5.6

Check Installed PHP Version:

$ php -v 

PHP (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

You can install php5.6 modules too for example

sudo apt-get install php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml

Step 4: Install PHP5.6-FPM

To install PHP-FPM, open terminal and type in these commands. We will configure the details of nginx and php details in the next step:

$ sudo apt-get install php5.6-fpm

We need to make another small change in the php5-fpm configuration.Open up http://www.conf:

 sudo nano /etc/php/5.6/fpm/pool.d/www.conf

Find the line, listen =, and change the to /run/php/php5.6-fpm.sock

listen = /run/php/php5.6-fpm.sock

Save and Exit.

Restart php-fpm:

/etc/init.d/php5.6-fpm restart

Step 5: Configure Nginx to Use the PHP Processor

sudo nano /etc/nginx/conf.d/default.conf

Currently, with the comments removed, the Nginx default server block file looks like this:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    location ~ \.php$ {
           try_files $uri =404;
           fastcgi_pass unix:/run/php/php5.6-fpm.sock;
           fastcgi_index index.php;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           include fastcgi_params;

Difference between SOAP and REST ??


Web services that are used to communicate in-between applications that are being developed in many programming-languages and running on different platforms. Like a Java application running on linux platform can communicate with a PHP application running on windows platform. There are two types of web services, SOAP and REST. Let us discuss some main differences between them.

SOAP vs REST ‚Äď Difference between SOAP and REST Web Services

1. SOAP stands for Simple Object Access Protocol. REST stands for Representational State Transfer.
2. SOAP is a protocol. It defines some standards that should be followed strictly. REST is an architectural style. It doesn’t define so many standards like SOAP.
3. SOAP is highly secure as it defines its own security. REST inherits security measures from the underlying transport.
4. SOAP message request is processed slower as compared to REST. REST message request is processed faster as compared to SOAP.
5. SOAP supports only XML data format. REST supports data formats like plain text, XML, HTML, JSON, etc.
6. SOAP is not very easy to implement so it is preferred less. REST is easier to implement so it is preferred more.
7. SOAP requires more bandwidth and resources. REST requires less bandwidth and resources.
8. In java SOAP web services are implemented using JAX-WS API. In java RESTful web services are implemented using JAX-RS API.
9. It does not use web caching mechanism. It uses web caching mechanism.
10. SOAP is commonly used in payment gateways, financial and telecommunication services. REST is commonly used in social media, web chat and mobile services.



If the security is a major concern and the resources are not limited then we should use SOAP web services. Like if we are creating a web service for banking related work then we should go with SOAP as here high security is needed.

On the other hand if security is not a major concern and we have limited resources. Or we want to create an API that will be easily used by other developers publicly then we should go with REST web services.



How I can fix ‚ÄúAppStream cache update completed, but some metadata was ignored due to errors.”


I executed apt update as root, but I received this error message: AppStream cache update completed, but some metadata was ignored due to errors.



The bug has been fixed in appstream package version 0.10.1, but the version that gets installed in Ubuntu 16.04 is 0.9.4 by default. Ubuntu 16.10 automatically receives the update as it’s provided in its standard repositories.

The updated package version with the bugfix for Ubuntu 16.04 however is only provided through the xenial-backports repository, which has a lower priority than the others. This means it won’t upgrade to this version unless you manually specify it.

To enable the xenial-backports repository in first place, follow How do I enable the “backports” repository? (but only enable the repository, you don’t need to modify the repo priority).

After that, upgrade to the version from xenial-backports by typing:

sudo apt install appstream/xenial-backports

Now your appstream package should be upgraded to version 0.10.1.

$ appstreamcli --version
AppStream CLI tool version: 0.10.1

Now force refreshing the cache data, you should no longer see any warning:

$ sudo appstreamcli refresh --force
AppStream cache update completed successfully.

Source link: