<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://kb.froggigi.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Froggi</id>
	<title>Froggis Wissenssammlung - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://kb.froggigi.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Froggi"/>
	<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Spezial:Beitr%C3%A4ge/Froggi"/>
	<updated>2026-06-04T05:47:06Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=214</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=214"/>
		<updated>2022-01-21T10:54:23Z</updated>

		<summary type="html">&lt;p&gt;Froggi: Link korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Knowhow.png|200x200px|zentriert]]&lt;br /&gt;
&lt;br /&gt;
==Zutatenliste==&lt;br /&gt;
[[Froggi's_Weisheiten |''Froggi's Weisheiten'']]&amp;lt;br&amp;gt;&lt;br /&gt;
''[[Python-Weisheiten]]''&amp;lt;br&amp;gt;[[Nextcloud_Knoffhoff|''Nexcloud knoffhoff'']]&amp;lt;br&amp;gt;[[GrubRescue_Bootanleitung|''Grub Rescue Dingsgedongs'']]&amp;lt;br&amp;gt;[[Schleppi_zu_dunkel|''Samsung R730 zu dunkel unter Linux Mint'']]&amp;lt;br&amp;gt;[[BTRFS-Entfernen |''Check auf btrfs-Partitionen entfernen'']]&amp;lt;br&amp;gt;[[Ktimezoned-entries |''Wenn Korganizer die Zeitzonen nicht kennt'']]&amp;lt;br&amp;gt;''[[Testseite |Testseite]]''&amp;lt;br&amp;gt;[[Bootstrap |''Bootstrap how to's'']]&amp;lt;br&amp;gt;[[Python_things |''Python things'']]&amp;lt;br&amp;gt;[[Git_stuff |''Git stuff'']]&amp;lt;br&amp;gt;[[Laravel_etc |''Laravel for me'']]&amp;lt;br&amp;gt;[[Testseite |''Bastel und Reparatureck'']]&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=213</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=213"/>
		<updated>2022-01-21T10:53:22Z</updated>

		<summary type="html">&lt;p&gt;Froggi: /* Zutatenliste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Knowhow.png|200x200px|zentriert]]&lt;br /&gt;
&lt;br /&gt;
==Zutatenliste==&lt;br /&gt;
[[Froggi's_Weisheiten |''Froggi's Weisheiten'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Python Weisheiten | ''Python-Weisheiten'']]&amp;lt;br&amp;gt;[[Nextcloud_Knoffhoff|''Nexcloud knoffhoff'']]&amp;lt;br&amp;gt;[[GrubRescue_Bootanleitung|''Grub Rescue Dingsgedongs'']]&amp;lt;br&amp;gt;[[Schleppi_zu_dunkel|''Samsung R730 zu dunkel unter Linux Mint'']]&amp;lt;br&amp;gt;[[BTRFS-Entfernen |''Check auf btrfs-Partitionen entfernen'']]&amp;lt;br&amp;gt;[[Ktimezoned-entries |''Wenn Korganizer die Zeitzonen nicht kennt'']]&amp;lt;br&amp;gt;''[[Testseite |Testseite]]''&amp;lt;br&amp;gt;[[Bootstrap |''Bootstrap how to's'']]&amp;lt;br&amp;gt;[[Python_things |''Python things'']]&amp;lt;br&amp;gt;[[Git_stuff |''Git stuff'']]&amp;lt;br&amp;gt;[[Laravel_etc |''Laravel for me'']]&amp;lt;br&amp;gt;[[Testseite |''Bastel und Reparatureck'']]&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=212</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=212"/>
		<updated>2022-01-21T10:52:49Z</updated>

		<summary type="html">&lt;p&gt;Froggi: Python Weisheiten hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Knowhow.png|200x200px|zentriert]]&lt;br /&gt;
&lt;br /&gt;
==Zutatenliste==&lt;br /&gt;
[[Froggi's_Weisheiten |''Froggi's Weisheiten'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Python Weisheiten | ''Python Weisheiten'']]&amp;lt;br&amp;gt;[[Nextcloud_Knoffhoff|''Nexcloud knoffhoff'']]&amp;lt;br&amp;gt;[[GrubRescue_Bootanleitung|''Grub Rescue Dingsgedongs'']]&amp;lt;br&amp;gt;[[Schleppi_zu_dunkel|''Samsung R730 zu dunkel unter Linux Mint'']]&amp;lt;br&amp;gt;[[BTRFS-Entfernen |''Check auf btrfs-Partitionen entfernen'']]&amp;lt;br&amp;gt;[[Ktimezoned-entries |''Wenn Korganizer die Zeitzonen nicht kennt'']]&amp;lt;br&amp;gt;''[[Testseite |Testseite]]''&amp;lt;br&amp;gt;[[Bootstrap |''Bootstrap how to's'']]&amp;lt;br&amp;gt;[[Python_things |''Python things'']]&amp;lt;br&amp;gt;[[Git_stuff |''Git stuff'']]&amp;lt;br&amp;gt;[[Laravel_etc |''Laravel for me'']]&amp;lt;br&amp;gt;[[Testseite |''Bastel und Reparatureck'']]&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Python-Weisheiten&amp;diff=211</id>
		<title>Python-Weisheiten</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Python-Weisheiten&amp;diff=211"/>
		<updated>2022-01-21T10:50:50Z</updated>

		<summary type="html">&lt;p&gt;Froggi: /* Der bessere Python shebang */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Der bessere Python shebang===&lt;br /&gt;
Bisher kannte ich nur die &amp;quot;standard&amp;quot; Methode ala&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;!/usr/bin/python3&lt;br /&gt;
&lt;br /&gt;
Wenn man allerdings, wie man sollte, in einer virtuellen Pythonumgebung entwickelt ist das doof, weil der Pfad zum falschen Python zeigt. Generell sind harte Pfade zu vermeiden. Also? Wie macht man das also richtig?&lt;br /&gt;
&lt;br /&gt;
Man holt sich via env die richtige Pythonversion in seinen shebang und zwar so:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;!/usr/bin/env python3&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Python-Weisheiten&amp;diff=210</id>
		<title>Python-Weisheiten</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Python-Weisheiten&amp;diff=210"/>
		<updated>2022-01-21T10:49:30Z</updated>

		<summary type="html">&lt;p&gt;Froggi: /* Der bessere Python shebang */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Der bessere Python shebang ===&lt;br /&gt;
Bisher kannte ich nur die &amp;quot;standard&amp;quot; Methode ala&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;!/usr/bin/python3&lt;br /&gt;
&lt;br /&gt;
Wenn man allerdings, wie man sollte, in einer virtuellen Pytghomumgebung entwickelt ist das doof, weil der Pfad zm falschen Python zeigt.&lt;br /&gt;
&lt;br /&gt;
Wie macht man das also richtig?&lt;br /&gt;
&lt;br /&gt;
Man holt sich via env die richtige Pythonversion in seinen shebang und zwar so:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;!/usr/bin/env python3&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Python-Weisheiten&amp;diff=209</id>
		<title>Python-Weisheiten</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Python-Weisheiten&amp;diff=209"/>
		<updated>2022-01-21T10:48:47Z</updated>

		<summary type="html">&lt;p&gt;Froggi: Neu erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Der bessere Python shebang ===&lt;br /&gt;
Bisher kannte ich nur die &amp;quot;standard&amp;quot; Methode ala&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;!/usr/bin/python3&lt;br /&gt;
&lt;br /&gt;
Wenn man allerdings, wie man sollte, in einer virtuellen Pytghomumgebung entwickelt ist das doof, weil der Pfad zm falschen Python zeigt.&lt;br /&gt;
&lt;br /&gt;
Wie macht man das also richtig?&lt;br /&gt;
&lt;br /&gt;
Man holt sich via env die richtige Pythonversion in seinen shebang und zwar so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;!/usr/bin/env python3&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Clone_Laravel_project&amp;diff=208</id>
		<title>Clone Laravel project</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Clone_Laravel_project&amp;diff=208"/>
		<updated>2020-10-21T10:04:03Z</updated>

		<summary type="html">&lt;p&gt;Froggi: Added some info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''This is a temporary concept.'''&lt;br /&gt;
&lt;br /&gt;
Steps to clone a Laravelwebsite&lt;br /&gt;
&lt;br /&gt;
*git clone&lt;br /&gt;
*composer install&lt;br /&gt;
*create .env file&lt;br /&gt;
*edit .env to match local settings&lt;br /&gt;
*php artisan key:generate&lt;br /&gt;
*php artisan migrate --seed (if seeds are available)&lt;br /&gt;
*npm install&lt;br /&gt;
*npm run watch to develop further&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Clone_Laravel_project&amp;diff=207</id>
		<title>Clone Laravel project</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Clone_Laravel_project&amp;diff=207"/>
		<updated>2020-10-19T08:48:46Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''This is a temporary concept.'''&lt;br /&gt;
&lt;br /&gt;
Steps to clone a Laravelwebsite&lt;br /&gt;
&lt;br /&gt;
*clone&lt;br /&gt;
*composer install&lt;br /&gt;
*create .env file&lt;br /&gt;
*php artisan key:generate&lt;br /&gt;
*php artisan migrate&lt;br /&gt;
*npm install&lt;br /&gt;
*npm run watch to develop further&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Clone_Laravel_project&amp;diff=206</id>
		<title>Clone Laravel project</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Clone_Laravel_project&amp;diff=206"/>
		<updated>2020-10-19T08:28:58Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''This is a temporary concept.'''&lt;br /&gt;
&lt;br /&gt;
Steps to clone a Laravelwebsite&lt;br /&gt;
&lt;br /&gt;
*clone&lt;br /&gt;
*composer install&lt;br /&gt;
*create .env file&lt;br /&gt;
*php artisan key:generate&lt;br /&gt;
*php artisan migrate&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=205</id>
		<title>Testseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=205"/>
		<updated>2020-10-19T08:27:57Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;flex-row row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Bastel und Reparatureck&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''MariaDB'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
MariaDB_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''MariaDB How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''PHPMyAdmin'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
PHPMyAdmin_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''PHPMyAdmin How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bootstrap'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Bootstrap | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Bootstrap How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Apache'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Apache_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Apache How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end of col 1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Windows Knoffhoff&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''Systemzeit ist UTC'''&lt;br /&gt;
&amp;lt;button&amp;gt;&lt;br /&gt;
UTCSystemClock | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Windows UTC beibringen''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Development&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
[[Development environment for Laravel with Vue-JS|''DevEnv for Laravel / Vue-JS'']]&lt;br /&gt;
&lt;br /&gt;
[[Laravel sanctum and Vue-JS SPA|Laravel Sanctum and Vue-JS SPA]]&lt;br /&gt;
&lt;br /&gt;
[[Clone Laravel project]] &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of row 1--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Clone_Laravel_project&amp;diff=204</id>
		<title>Clone Laravel project</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Clone_Laravel_project&amp;diff=204"/>
		<updated>2020-10-19T08:26:33Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''This is a temporary concept.'''&lt;br /&gt;
&lt;br /&gt;
Steps to clone a Laravelwebsite&lt;br /&gt;
&lt;br /&gt;
* clone&lt;br /&gt;
* composer install&lt;br /&gt;
* create .env file&lt;br /&gt;
* php artisan key:generate&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Clone_Laravel_project&amp;diff=203</id>
		<title>Clone Laravel project</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Clone_Laravel_project&amp;diff=203"/>
		<updated>2020-10-19T08:26:12Z</updated>

		<summary type="html">&lt;p&gt;Froggi: Die Seite wurde neu angelegt: „This is a temporary concept.    Steps to clone a Laravelwebsite    clone    composer install    create .env file    php artisan key:generate“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a temporary concept.&lt;br /&gt;
&lt;br /&gt;
Steps to clone a Laravelwebsite&lt;br /&gt;
&lt;br /&gt;
clone&lt;br /&gt;
&lt;br /&gt;
composer install&lt;br /&gt;
&lt;br /&gt;
create .env file&lt;br /&gt;
&lt;br /&gt;
php artisan key:generate&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Laravel_sanctum_and_Vue-JS_SPA&amp;diff=202</id>
		<title>Laravel sanctum and Vue-JS SPA</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Laravel_sanctum_and_Vue-JS_SPA&amp;diff=202"/>
		<updated>2020-08-13T12:35:29Z</updated>

		<summary type="html">&lt;p&gt;Froggi: /* 2. Use it to authenticate a user */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===1. Install laravel sanctum===&lt;br /&gt;
You may install Laravel Sanctum via Composer:&lt;br /&gt;
 &amp;lt;code&amp;gt;composer require laravel/sanctum&amp;lt;/code&amp;gt;&lt;br /&gt;
Now follow the instructions from https://laravel.com/docs/7.x/sanctum#installation to complete the installation. Especially look at the configuration.&lt;br /&gt;
&lt;br /&gt;
=== 2. Use it to authenticate a user ===&lt;br /&gt;
As described in the official docs do:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;axios.get('/sanctum/csrf-cookie').then(response =&amp;gt; {&lt;br /&gt;
  // Login...&lt;br /&gt;
  });&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The login can be the standard login of Laravels scaffolding or a custom one.&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Laravel_sanctum_and_Vue-JS_SPA&amp;diff=201</id>
		<title>Laravel sanctum and Vue-JS SPA</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Laravel_sanctum_and_Vue-JS_SPA&amp;diff=201"/>
		<updated>2020-08-13T12:35:03Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===1. Install laravel sanctum===&lt;br /&gt;
You may install Laravel Sanctum via Composer:&lt;br /&gt;
 &amp;lt;code&amp;gt;composer require laravel/sanctum&amp;lt;/code&amp;gt;&lt;br /&gt;
Now follow the instructions from https://laravel.com/docs/7.x/sanctum#installation to complete the installation. Especially look at the configuration.&lt;br /&gt;
&lt;br /&gt;
=== 2. Use it to authenticate a user ===&lt;br /&gt;
As described in the official docs do:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;axios.get('/sanctum/csrf-cookie').then(response =&amp;gt; {&lt;br /&gt;
    // Login...&lt;br /&gt;
});&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The loginn can be the standard login of Laravels scaffolding or a custom one.&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=200</id>
		<title>Testseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=200"/>
		<updated>2020-08-13T12:30:21Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;flex-row row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Bastel und Reparatureck&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''MariaDB'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
MariaDB_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''MariaDB How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''PHPMyAdmin'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
PHPMyAdmin_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''PHPMyAdmin How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bootstrap'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Bootstrap | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Bootstrap How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Apache'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Apache_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Apache How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end of col 1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Windows Knoffhoff&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''Systemzeit ist UTC'''&lt;br /&gt;
&amp;lt;button&amp;gt;&lt;br /&gt;
UTCSystemClock | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Windows UTC beibringen''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Development&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
[[Development environment for Laravel with Vue-JS|''DevEnv for Laravel / Vue-JS'']]&lt;br /&gt;
&lt;br /&gt;
[[Laravel sanctum and Vue-JS SPA|Laravel Sanctum and Vue-JS SPA]] &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of row 1--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=199</id>
		<title>Testseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=199"/>
		<updated>2020-08-13T12:30:01Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;flex-row row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Bastel und Reparatureck&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''MariaDB'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
MariaDB_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''MariaDB How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''PHPMyAdmin'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
PHPMyAdmin_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''PHPMyAdmin How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bootstrap'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Bootstrap | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Bootstrap How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Apache'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Apache_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Apache How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end of col 1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Windows Knoffhoff&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''Systemzeit ist UTC'''&lt;br /&gt;
&amp;lt;button&amp;gt;&lt;br /&gt;
UTCSystemClock | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Windows UTC beibringen''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Development&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
[[Development environment for Laravel with Vue-JS|''DevEnv for Laravel / Vue-JS'']]&lt;br /&gt;
&lt;br /&gt;
[[Laravel sanctum and Vue-JS SPA|Laravel Sanctum and Vue-JS]] &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of row 1--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Laravel_sanctum_and_Vue-JS_SPA&amp;diff=198</id>
		<title>Laravel sanctum and Vue-JS SPA</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Laravel_sanctum_and_Vue-JS_SPA&amp;diff=198"/>
		<updated>2020-08-13T12:28:53Z</updated>

		<summary type="html">&lt;p&gt;Froggi: Froggi verschob die Seite Laravel sanctum and Vue-JS nach Laravel sanctum and Vue-JS SPA, ohne dabei eine Weiterleitung anzulegen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== 1. Install laravel sanctum ===&lt;br /&gt;
You may install Laravel Sanctum via Composer:&lt;br /&gt;
 &amp;lt;code&amp;gt;composer require laravel/sanctum&amp;lt;/code&amp;gt;&lt;br /&gt;
Next, you should publish the Sanctum configuration and migration files using the &amp;lt;code&amp;gt;vendor:publish&amp;lt;/code&amp;gt; Artisan command. The &amp;lt;code&amp;gt;sanctum&amp;lt;/code&amp;gt; configuration file will be placed in your &amp;lt;code&amp;gt;config&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 &amp;lt;code&amp;gt;php artisan vendor:publish --provider=&amp;quot;Laravel\Sanctum\SanctumServiceProvider&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Finally, you should run your database migrations. Sanctum will create one database table in which to store API tokens:&lt;br /&gt;
 &amp;lt;code&amp;gt;php artisan migrate&amp;lt;/code&amp;gt;&lt;br /&gt;
Next, if you plan to utilize Sanctum to authenticate an SPA, you should add Sanctum's middleware to your &amp;lt;code&amp;gt;api&amp;lt;/code&amp;gt; middleware group within your &amp;lt;code&amp;gt;app/Http/Kernel.php&amp;lt;/code&amp;gt; file:&lt;br /&gt;
 &amp;lt;code&amp;gt;use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;&lt;br /&gt;
 &lt;br /&gt;
 'api' =&amp;gt; [&lt;br /&gt;
     EnsureFrontendRequestsAreStateful::class,&lt;br /&gt;
     'throttle:60,1',&lt;br /&gt;
     \Illuminate\Routing\Middleware\SubstituteBindings::class,&lt;br /&gt;
 ],&amp;lt;/code&amp;gt;&lt;br /&gt;
This instruction is copied from: https://laravel.com/docs/7.x/sanctum#installation&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=197</id>
		<title>Testseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=197"/>
		<updated>2020-08-13T12:24:08Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;flex-row row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Bastel und Reparatureck&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''MariaDB'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
MariaDB_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''MariaDB How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''PHPMyAdmin'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
PHPMyAdmin_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''PHPMyAdmin How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bootstrap'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Bootstrap | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Bootstrap How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Apache'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Apache_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Apache How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end of col 1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Windows Knoffhoff&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''Systemzeit ist UTC'''&lt;br /&gt;
&amp;lt;button&amp;gt;&lt;br /&gt;
UTCSystemClock | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Windows UTC beibringen''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Development&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
[[Development environment for Laravel with Vue-JS|''DevEnv for Laravel / Vue-JS'']]&lt;br /&gt;
&lt;br /&gt;
[[Laravel sanctum and Vue-JS|Laravel Sanctum and Vue-JS]] &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of row 1--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=196</id>
		<title>Testseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=196"/>
		<updated>2020-08-13T12:23:43Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;flex-row row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Bastel und Reparatureck&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''MariaDB'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
MariaDB_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''MariaDB How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''PHPMyAdmin'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
PHPMyAdmin_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''PHPMyAdmin How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bootstrap'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Bootstrap | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Bootstrap How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Apache'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Apache_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Apache How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end of col 1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Windows Knoffhoff&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''Systemzeit ist UTC'''&lt;br /&gt;
&amp;lt;button&amp;gt;&lt;br /&gt;
UTCSystemClock | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Windows UTC beibringen''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Development&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
[[Development environment for Laravel with Vue-JS|Development_environment_for_Laravel_with_Vue-JS | ''DevEnv for Laravel / Vue-JS'']]&lt;br /&gt;
&lt;br /&gt;
[[Laravel sanctum and Vue-JS|Laravel_sanctum_and_Vue-JS | Laravel Sanctum and Vue-JS]] &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of row 1--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=195</id>
		<title>Testseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=195"/>
		<updated>2020-08-13T12:23:09Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;flex-row row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Bastel und Reparatureck&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''MariaDB'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
MariaDB_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''MariaDB How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''PHPMyAdmin'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
PHPMyAdmin_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''PHPMyAdmin How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bootstrap'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Bootstrap | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Bootstrap How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Apache'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Apache_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Apache How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end of col 1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Windows Knoffhoff&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''Systemzeit ist UTC'''&lt;br /&gt;
&amp;lt;button&amp;gt;&lt;br /&gt;
UTCSystemClock | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Windows UTC beibringen''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Development&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
[[Development environment for Laravel with Vue-JS|Development_environment_for_Laravel_with_Vue-JS | ''DevEnv for Laravel / Vue-JS'']]&lt;br /&gt;
&lt;br /&gt;
Laravel_sanctum_and_Vue-JS | Laravel Sanctum and Vue-JS &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of row 1--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Laravel_sanctum_and_Vue-JS_SPA&amp;diff=194</id>
		<title>Laravel sanctum and Vue-JS SPA</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Laravel_sanctum_and_Vue-JS_SPA&amp;diff=194"/>
		<updated>2020-08-13T12:22:27Z</updated>

		<summary type="html">&lt;p&gt;Froggi: Die Seite wurde neu angelegt: „=== 1. Install laravel sanctum === You may install Laravel Sanctum via Composer:  &amp;lt;code&amp;gt;composer require laravel/sanctum&amp;lt;/code&amp;gt; Next, you should publish the Sa…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== 1. Install laravel sanctum ===&lt;br /&gt;
You may install Laravel Sanctum via Composer:&lt;br /&gt;
 &amp;lt;code&amp;gt;composer require laravel/sanctum&amp;lt;/code&amp;gt;&lt;br /&gt;
Next, you should publish the Sanctum configuration and migration files using the &amp;lt;code&amp;gt;vendor:publish&amp;lt;/code&amp;gt; Artisan command. The &amp;lt;code&amp;gt;sanctum&amp;lt;/code&amp;gt; configuration file will be placed in your &amp;lt;code&amp;gt;config&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 &amp;lt;code&amp;gt;php artisan vendor:publish --provider=&amp;quot;Laravel\Sanctum\SanctumServiceProvider&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Finally, you should run your database migrations. Sanctum will create one database table in which to store API tokens:&lt;br /&gt;
 &amp;lt;code&amp;gt;php artisan migrate&amp;lt;/code&amp;gt;&lt;br /&gt;
Next, if you plan to utilize Sanctum to authenticate an SPA, you should add Sanctum's middleware to your &amp;lt;code&amp;gt;api&amp;lt;/code&amp;gt; middleware group within your &amp;lt;code&amp;gt;app/Http/Kernel.php&amp;lt;/code&amp;gt; file:&lt;br /&gt;
 &amp;lt;code&amp;gt;use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;&lt;br /&gt;
 &lt;br /&gt;
 'api' =&amp;gt; [&lt;br /&gt;
     EnsureFrontendRequestsAreStateful::class,&lt;br /&gt;
     'throttle:60,1',&lt;br /&gt;
     \Illuminate\Routing\Middleware\SubstituteBindings::class,&lt;br /&gt;
 ],&amp;lt;/code&amp;gt;&lt;br /&gt;
This instruction is copied from: https://laravel.com/docs/7.x/sanctum#installation&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=193</id>
		<title>Testseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=193"/>
		<updated>2020-08-13T12:19:22Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;flex-row row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Bastel und Reparatureck&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''MariaDB'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
MariaDB_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''MariaDB How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''PHPMyAdmin'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
PHPMyAdmin_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''PHPMyAdmin How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bootstrap'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Bootstrap | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Bootstrap How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Apache'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Apache_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Apache How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end of col 1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Windows Knoffhoff&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''Systemzeit ist UTC'''&lt;br /&gt;
&amp;lt;button&amp;gt;&lt;br /&gt;
UTCSystemClock | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Windows UTC beibringen''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Development&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
[[Development environment for Laravel with Vue-JS|Development_environment_for_Laravel_with_Vue-JS | ''DevEnv for Laravel / Vue-JS'']] &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of row 1--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=192</id>
		<title>Testseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=192"/>
		<updated>2020-08-13T12:17:09Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;flex-row row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Bastel und Reparatureck&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''MariaDB'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
MariaDB_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''MariaDB How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''PHPMyAdmin'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
PHPMyAdmin_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''PHPMyAdmin How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bootstrap'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Bootstrap | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Bootstrap How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Apache'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Apache_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Apache How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end of col 1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Windows Knoffhoff&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''Systemzeit ist UTC'''&lt;br /&gt;
&amp;lt;button&amp;gt;&lt;br /&gt;
UTCSystemClock | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Windows UTC beibringen''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;Development&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
[[Development environment for Laravel with Vue-JS|Development_environment_for_Laravel_with_Vue-JS | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''DevEnv for Laravel / Vue-JS''&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;/btn&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of row 1--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=191</id>
		<title>Testseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=191"/>
		<updated>2020-08-13T12:15:06Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;flex-row row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Bastel und Reparatureck&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''MariaDB'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
MariaDB_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''MariaDB How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''PHPMyAdmin'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
PHPMyAdmin_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''PHPMyAdmin How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bootstrap'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Bootstrap | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Bootstrap How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Apache'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Apache_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Apache How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end of col 1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Windows Knoffhoff&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''Systemzeit ist UTC'''&lt;br /&gt;
&amp;lt;button class=&amp;quot;btn btn-sm btn-primary&amp;quot;&amp;gt;&lt;br /&gt;
UTCSystemClock | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Windows UTC beibringen''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;Development&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
[[Development environment for Laravel with Vue-JS|Development_environment_for_Laravel_with_Vue-JS | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''DevEnv for Laravel / Vue-JS''&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;/btn&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of row 1--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=190</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=190"/>
		<updated>2020-08-13T08:56:17Z</updated>

		<summary type="html">&lt;p&gt;Froggi: /* 7.4.4 Activate the ssl site */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''&amp;lt;big&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
&lt;br /&gt;
==1.3 Allow redirects for Laravel / Vue-JS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the terminal execute the following&lt;br /&gt;
&lt;br /&gt;
sudo a2enmod rewrite&lt;br /&gt;
&lt;br /&gt;
sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
Now redirects shoudl work. This is necessary for the APP to work correctly.&lt;br /&gt;
&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is likely that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
By default the bind-address is set to 127.0.0.1. To get mariadb to listen on the ip-address of your server open the folowing file:&lt;br /&gt;
&lt;br /&gt;
  /etc/mysql/mariadb.conf.d/50-server.cnf&lt;br /&gt;
&lt;br /&gt;
and change the line with bind-address to:&lt;br /&gt;
&lt;br /&gt;
  bind-address            = &amp;lt;your-servers-ip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the database servers with:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl restart mysql.service&lt;br /&gt;
  sudo systemctl restart mariadb.service&lt;br /&gt;
&lt;br /&gt;
Check that the database server now is listening at the correct address with:&lt;br /&gt;
&lt;br /&gt;
  sudo netstat -anp | grep 3306&lt;br /&gt;
&lt;br /&gt;
It should now show something like this&lt;br /&gt;
&lt;br /&gt;
  tcp        0      0 &amp;lt;your-server-ip&amp;gt;:3306      0.0.0.0:*               LISTEN      19039/mariadbd&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
==7.4 Create SSL webconfiguration for this project==&lt;br /&gt;
When userdata is neccesaary, think about login for example, accessing the webpage vie HTTPS is recommended. So lets create the necesarry config and activate ssl for apache.&lt;br /&gt;
&lt;br /&gt;
===7.4.1 Create the SSL key and certificate===&lt;br /&gt;
The command to create these two is openssl.&lt;br /&gt;
&lt;br /&gt;
sudo sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/my-website-selfsigned.key -out /etc/ssl/certs/my-website-selfsigned.crt&lt;br /&gt;
&lt;br /&gt;
With this exampke we create  a set for mny-website.&lt;br /&gt;
&lt;br /&gt;
A couple of questions will be asked. A good explanation of what is going on here can be found at: https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-20-04&lt;br /&gt;
&lt;br /&gt;
===7.4.2 The ssl configfile for your website===&lt;br /&gt;
After the key and certificate is in place we need a configfile for aoacxhe to know that there is a ssl version of your website.&lt;br /&gt;
&lt;br /&gt;
An example can be found at /etc/apache2/sites-available/default-ssl.conf&lt;br /&gt;
&lt;br /&gt;
For our website i will look like this.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
         &amp;lt;VirtualHost _default_:443&amp;gt;&lt;br /&gt;
                 ServerAdmin webmaster@localhost&lt;br /&gt;
                 ServerName www.my-website.com&lt;br /&gt;
                 ServerAlias www.my-website.com&lt;br /&gt;
  &lt;br /&gt;
                 DocumentRoot /path/to/your/website/root/&lt;br /&gt;
  &lt;br /&gt;
                 LogLevel debug&lt;br /&gt;
                 ErrorLog ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
                 CustomLog ${APACHE_LOG_DIR}/my-website/access.log combined&lt;br /&gt;
  &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile      /etc/ssl/certs/my-website-selfsigned.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/my-website-selfsigned.key&lt;br /&gt;
  &lt;br /&gt;
                 &amp;lt;FilesMatch &amp;quot;\.(cgi|shtml|phtml|php)$&amp;quot;&amp;gt;&lt;br /&gt;
                                 SSLOptions +StdEnvVars&lt;br /&gt;
                 &amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
                 &amp;lt;Directory /usr/lib/cgi-bin&amp;gt;&lt;br /&gt;
                                 SSLOptions +StdEnvVars&lt;br /&gt;
                 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
                 &amp;lt;Directory /path/to/your/website/root/&amp;gt;&lt;br /&gt;
                         Allowoverride All&lt;br /&gt;
                         Require all granted&lt;br /&gt;
                 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
         &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4.3 Activate SSL===&lt;br /&gt;
&lt;br /&gt;
To activate ssl execute the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo a2enmod ssl&lt;br /&gt;
&lt;br /&gt;
===7.4.4 Activate the ssl site===&lt;br /&gt;
&lt;br /&gt;
To do so execute&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website-ssl.com.conf&lt;br /&gt;
&lt;br /&gt;
=== 7.4.5 Restart / reload apache to make these changes available ===&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl restart / reload apache2&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=189</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=189"/>
		<updated>2020-08-13T08:54:21Z</updated>

		<summary type="html">&lt;p&gt;Froggi: /* 7.4.2 The ssl configfile for your website */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''&amp;lt;big&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
&lt;br /&gt;
==1.3 Allow redirects for Laravel / Vue-JS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the terminal execute the following&lt;br /&gt;
&lt;br /&gt;
sudo a2enmod rewrite&lt;br /&gt;
&lt;br /&gt;
sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
Now redirects shoudl work. This is necessary for the APP to work correctly.&lt;br /&gt;
&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is likely that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
By default the bind-address is set to 127.0.0.1. To get mariadb to listen on the ip-address of your server open the folowing file:&lt;br /&gt;
&lt;br /&gt;
  /etc/mysql/mariadb.conf.d/50-server.cnf&lt;br /&gt;
&lt;br /&gt;
and change the line with bind-address to:&lt;br /&gt;
&lt;br /&gt;
  bind-address            = &amp;lt;your-servers-ip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the database servers with:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl restart mysql.service&lt;br /&gt;
  sudo systemctl restart mariadb.service&lt;br /&gt;
&lt;br /&gt;
Check that the database server now is listening at the correct address with:&lt;br /&gt;
&lt;br /&gt;
  sudo netstat -anp | grep 3306&lt;br /&gt;
&lt;br /&gt;
It should now show something like this&lt;br /&gt;
&lt;br /&gt;
  tcp        0      0 &amp;lt;your-server-ip&amp;gt;:3306      0.0.0.0:*               LISTEN      19039/mariadbd&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
==7.4 Create SSL webconfiguration for this project==&lt;br /&gt;
When userdata is neccesaary, think about login for example, accessing the webpage vie HTTPS is recommended. So lets create the necesarry config and activate ssl for apache.&lt;br /&gt;
&lt;br /&gt;
=== 7.4.1 Create the SSL key and certificate ===&lt;br /&gt;
The command to create these two is openssl.&lt;br /&gt;
&lt;br /&gt;
sudo sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/my-website-selfsigned.key -out /etc/ssl/certs/my-website-selfsigned.crt&lt;br /&gt;
&lt;br /&gt;
With this exampke we create  a set for mny-website.&lt;br /&gt;
&lt;br /&gt;
A couple of questions will be asked. A good explanation of what is going on here can be found at: https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-20-04&lt;br /&gt;
&lt;br /&gt;
=== 7.4.2 The ssl configfile for your website ===&lt;br /&gt;
After the key and certificate is in place we need a configfile for aoacxhe to know that there is a ssl version of your website.&lt;br /&gt;
&lt;br /&gt;
An example can be found at /etc/apache2/sites-available/default-ssl.conf&lt;br /&gt;
&lt;br /&gt;
For our website i will look like this.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
         &amp;lt;VirtualHost _default_:443&amp;gt;&lt;br /&gt;
                 ServerAdmin webmaster@localhost&lt;br /&gt;
                 ServerName www.my-website.com&lt;br /&gt;
                 ServerAlias www.my-website.com&lt;br /&gt;
  &lt;br /&gt;
                 DocumentRoot /path/to/your/website/root/&lt;br /&gt;
  &lt;br /&gt;
                 LogLevel debug&lt;br /&gt;
                 ErrorLog ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
                 CustomLog ${APACHE_LOG_DIR}/my-website/access.log combined&lt;br /&gt;
  &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile      /etc/ssl/certs/my-website-selfsigned.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/my-website-selfsigned.key&lt;br /&gt;
  &lt;br /&gt;
                 &amp;lt;FilesMatch &amp;quot;\.(cgi|shtml|phtml|php)$&amp;quot;&amp;gt;&lt;br /&gt;
                                 SSLOptions +StdEnvVars&lt;br /&gt;
                 &amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
                 &amp;lt;Directory /usr/lib/cgi-bin&amp;gt;&lt;br /&gt;
                                 SSLOptions +StdEnvVars&lt;br /&gt;
                 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
                 &amp;lt;Directory /path/to/your/website/root/&amp;gt;&lt;br /&gt;
                         Allowoverride All&lt;br /&gt;
                         Require all granted&lt;br /&gt;
                 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
         &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4.3 Activate SSL===&lt;br /&gt;
&lt;br /&gt;
To activate ssl execute the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo a2enmod ssl&lt;br /&gt;
&lt;br /&gt;
===7.4.4 Activate the ssl site===&lt;br /&gt;
&lt;br /&gt;
To do so execute&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website-ssl.com.conf&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=188</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=188"/>
		<updated>2020-08-13T08:53:03Z</updated>

		<summary type="html">&lt;p&gt;Froggi: /* 7.3 Create webconfiguration for this project */  Added SSL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''&amp;lt;big&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
&lt;br /&gt;
==1.3 Allow redirects for Laravel / Vue-JS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the terminal execute the following&lt;br /&gt;
&lt;br /&gt;
sudo a2enmod rewrite&lt;br /&gt;
&lt;br /&gt;
sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
Now redirects shoudl work. This is necessary for the APP to work correctly.&lt;br /&gt;
&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is likely that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
By default the bind-address is set to 127.0.0.1. To get mariadb to listen on the ip-address of your server open the folowing file:&lt;br /&gt;
&lt;br /&gt;
  /etc/mysql/mariadb.conf.d/50-server.cnf&lt;br /&gt;
&lt;br /&gt;
and change the line with bind-address to:&lt;br /&gt;
&lt;br /&gt;
  bind-address            = &amp;lt;your-servers-ip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the database servers with:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl restart mysql.service&lt;br /&gt;
  sudo systemctl restart mariadb.service&lt;br /&gt;
&lt;br /&gt;
Check that the database server now is listening at the correct address with:&lt;br /&gt;
&lt;br /&gt;
  sudo netstat -anp | grep 3306&lt;br /&gt;
&lt;br /&gt;
It should now show something like this&lt;br /&gt;
&lt;br /&gt;
  tcp        0      0 &amp;lt;your-server-ip&amp;gt;:3306      0.0.0.0:*               LISTEN      19039/mariadbd&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
==7.4 Create SSL webconfiguration for this project==&lt;br /&gt;
When userdata is neccesaary, think about login for example, accessing the webpage vie HTTPS is recommended. So lets create the necesarry config and activate ssl for apache.&lt;br /&gt;
&lt;br /&gt;
=== 7.4.1 Create the SSL key and certificate ===&lt;br /&gt;
The command to create these two is openssl.&lt;br /&gt;
&lt;br /&gt;
sudo sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/my-website-selfsigned.key -out /etc/ssl/certs/my-website-selfsigned.crt&lt;br /&gt;
&lt;br /&gt;
With this exampke we create  a set for mny-website.&lt;br /&gt;
&lt;br /&gt;
A couple of questions will be asked. A good explanation of what is going on here can be found at: https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-20-04&lt;br /&gt;
&lt;br /&gt;
=== 7.4.2 The ssl configfile for your website ===&lt;br /&gt;
After the key and certificate is in place we need a configfile for aoacxhe to know that there is a ssl version of your website.&lt;br /&gt;
&lt;br /&gt;
An example can be found at /etc/apache2/sites-available/default-ssl.conf&lt;br /&gt;
&lt;br /&gt;
For our website i will look like this.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
         &amp;lt;VirtualHost _default_:443&amp;gt;&lt;br /&gt;
                 ServerAdmin webmaster@localhost&lt;br /&gt;
                 ServerName www.my-website.com&lt;br /&gt;
                 ServerAlias www.my-website.com&lt;br /&gt;
&lt;br /&gt;
                 DocumentRoot /path/to/your/website/root/&lt;br /&gt;
&lt;br /&gt;
                 LogLevel debug&lt;br /&gt;
                 ErrorLog ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
                 CustomLog ${APACHE_LOG_DIR}/my-website/access.log combined&lt;br /&gt;
&lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile      /etc/ssl/certs/my-website-selfsigned.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/my-website-selfsigned.key&lt;br /&gt;
&lt;br /&gt;
                 &amp;lt;FilesMatch &amp;quot;\.(cgi|shtml|phtml|php)$&amp;quot;&amp;gt;&lt;br /&gt;
                                 SSLOptions +StdEnvVars&lt;br /&gt;
                 &amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
                 &amp;lt;Directory /usr/lib/cgi-bin&amp;gt;&lt;br /&gt;
                                 SSLOptions +StdEnvVars&lt;br /&gt;
                 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
                 &amp;lt;Directory /path/to/your/website/root/&amp;gt;&lt;br /&gt;
                         Allowoverride All&lt;br /&gt;
                         Require all granted&lt;br /&gt;
                 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
         &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4.3 Activate SSL===&lt;br /&gt;
&lt;br /&gt;
To activate ssl execute the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo a2enmod ssl&lt;br /&gt;
&lt;br /&gt;
===7.4.4 Activate the ssl site===&lt;br /&gt;
&lt;br /&gt;
To do so execute&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website-ssl.com.conf&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=187</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=187"/>
		<updated>2020-08-06T12:37:22Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''&amp;lt;big&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
&lt;br /&gt;
== 1.3 Allow redirects for Laravel / Vue-JS ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the terminal execute the following&lt;br /&gt;
&lt;br /&gt;
sudo a2enmod rewrite&lt;br /&gt;
&lt;br /&gt;
sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
Now redirects shoudl work. This is necessary for the APP to work correctly.&lt;br /&gt;
&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is likely that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
By default the bind-address is set to 127.0.0.1. To get mariadb to listen on the ip-address of your server open the folowing file:&lt;br /&gt;
&lt;br /&gt;
  /etc/mysql/mariadb.conf.d/50-server.cnf&lt;br /&gt;
&lt;br /&gt;
and change the line with bind-address to:&lt;br /&gt;
&lt;br /&gt;
  bind-address            = &amp;lt;your-servers-ip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the database servers with:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl restart mysql.service&lt;br /&gt;
  sudo systemctl restart mariadb.service&lt;br /&gt;
&lt;br /&gt;
Check that the database server now is listening at the correct address with:&lt;br /&gt;
&lt;br /&gt;
  sudo netstat -anp | grep 3306&lt;br /&gt;
&lt;br /&gt;
It should now show something like this&lt;br /&gt;
&lt;br /&gt;
  tcp        0      0 &amp;lt;your-server-ip&amp;gt;:3306      0.0.0.0:*               LISTEN      19039/mariadbd&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=MediaWiki:Common.css&amp;diff=186</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=MediaWiki:Common.css&amp;diff=186"/>
		<updated>2020-08-06T12:36:57Z</updated>

		<summary type="html">&lt;p&gt;Froggi: Die Seite wurde neu angelegt: „/* Das folgende CSS wird für alle Benutzeroberflächen geladen. */  .tocnumber { display: none; }“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Das folgende CSS wird für alle Benutzeroberflächen geladen. */&lt;br /&gt;
&lt;br /&gt;
.tocnumber { display: none; }&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=185</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=185"/>
		<updated>2020-08-06T12:34:40Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''&amp;lt;big&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;noautonum&amp;quot; style=&amp;quot;float:right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
&lt;br /&gt;
== 1.3 Allow redirects for Laravel / Vue-JS ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the terminal execute the following&lt;br /&gt;
&lt;br /&gt;
sudo a2enmod rewrite&lt;br /&gt;
&lt;br /&gt;
sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
Now redirects shoudl work. This is necessary for the APP to work correctly.&lt;br /&gt;
&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is likely that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
By default the bind-address is set to 127.0.0.1. To get mariadb to listen on the ip-address of your server open the folowing file:&lt;br /&gt;
&lt;br /&gt;
  /etc/mysql/mariadb.conf.d/50-server.cnf&lt;br /&gt;
&lt;br /&gt;
and change the line with bind-address to:&lt;br /&gt;
&lt;br /&gt;
  bind-address            = &amp;lt;your-servers-ip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the database servers with:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl restart mysql.service&lt;br /&gt;
  sudo systemctl restart mariadb.service&lt;br /&gt;
&lt;br /&gt;
Check that the database server now is listening at the correct address with:&lt;br /&gt;
&lt;br /&gt;
  sudo netstat -anp | grep 3306&lt;br /&gt;
&lt;br /&gt;
It should now show something like this&lt;br /&gt;
&lt;br /&gt;
  tcp        0      0 &amp;lt;your-server-ip&amp;gt;:3306      0.0.0.0:*               LISTEN      19039/mariadbd&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=184</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=184"/>
		<updated>2020-08-06T12:31:26Z</updated>

		<summary type="html">&lt;p&gt;Froggi: /* 1.2 Check successful installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''&amp;lt;big&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
&lt;br /&gt;
== 1.3 Allow redirects for Laravel / Vue-JS ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the terminal execute the following&lt;br /&gt;
&lt;br /&gt;
sudo a2enmod rewrite&lt;br /&gt;
&lt;br /&gt;
sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
Now redirects shoudl work. This is necessary for the APP to work correctly.&lt;br /&gt;
&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is likely that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
By default the bind-address is set to 127.0.0.1. To get mariadb to listen on the ip-address of your server open the folowing file:&lt;br /&gt;
&lt;br /&gt;
  /etc/mysql/mariadb.conf.d/50-server.cnf&lt;br /&gt;
&lt;br /&gt;
and change the line with bind-address to:&lt;br /&gt;
&lt;br /&gt;
  bind-address            = &amp;lt;your-servers-ip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the database servers with:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl restart mysql.service&lt;br /&gt;
  sudo systemctl restart mariadb.service&lt;br /&gt;
&lt;br /&gt;
Check that the database server now is listening at the correct address with:&lt;br /&gt;
&lt;br /&gt;
  sudo netstat -anp | grep 3306&lt;br /&gt;
&lt;br /&gt;
It should now show something like this&lt;br /&gt;
&lt;br /&gt;
  tcp        0      0 &amp;lt;your-server-ip&amp;gt;:3306      0.0.0.0:*               LISTEN      19039/mariadbd&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=183</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=183"/>
		<updated>2020-08-06T12:28:35Z</updated>

		<summary type="html">&lt;p&gt;Froggi: /* 3.4 No remote access if installed on server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''&amp;lt;big&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is likely that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
By default the bind-address is set to 127.0.0.1. To get mariadb to listen on the ip-address of your server open the folowing file:&lt;br /&gt;
&lt;br /&gt;
  /etc/mysql/mariadb.conf.d/50-server.cnf&lt;br /&gt;
&lt;br /&gt;
and change the line with bind-address to:&lt;br /&gt;
&lt;br /&gt;
  bind-address            = &amp;lt;your-servers-ip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the database servers with:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl restart mysql.service&lt;br /&gt;
  sudo systemctl restart mariadb.service&lt;br /&gt;
&lt;br /&gt;
Check that the database server now is listening at the correct address with:&lt;br /&gt;
&lt;br /&gt;
  sudo netstat -anp | grep 3306&lt;br /&gt;
&lt;br /&gt;
It should now show something like this&lt;br /&gt;
&lt;br /&gt;
  tcp        0      0 &amp;lt;your-server-ip&amp;gt;:3306      0.0.0.0:*               LISTEN      19039/mariadbd&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=182</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=182"/>
		<updated>2020-08-06T10:01:15Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''&amp;lt;big&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=181</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=181"/>
		<updated>2020-08-06T08:45:27Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
= '''Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint''' =&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=180</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=180"/>
		<updated>2020-08-06T08:44:57Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
= '''Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint''' =&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
{{DISPLAYTITLE:Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=179</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=179"/>
		<updated>2020-08-06T08:39:13Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=178</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=178"/>
		<updated>2020-08-06T08:38:56Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 30%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=177</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=177"/>
		<updated>2020-08-06T08:38:46Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 20%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=176</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=176"/>
		<updated>2020-08-06T08:38:13Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; witdh: 20%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=175</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=175"/>
		<updated>2020-08-06T08:38:00Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; witdh: 30%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=174</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=174"/>
		<updated>2020-08-06T08:35:32Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
{{ __TOC__ right}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=173</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=173"/>
		<updated>2020-08-06T08:33:43Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=172</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=172"/>
		<updated>2020-08-06T08:31:27Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=171</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=171"/>
		<updated>2020-08-06T08:31:06Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&amp;lt;/div&amp;gt;&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=170</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=170"/>
		<updated>2020-08-06T08:29:51Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=1. Apache2=&lt;br /&gt;
&lt;br /&gt;
==1.1 Installation==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
==1.2 Check successful installation==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
=2. PHP 7.4=&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
==2.1 PHP PPA==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
==2.2 Install PHP 7.4==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
=3. MariaDB=&lt;br /&gt;
&lt;br /&gt;
==3.1 Install MariaDB server==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
https://downloads.mariadb.org/mariadb/repositories/&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
==3.2 Securing MariaDB==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
==3.3 Add user with admin privileges==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
===3.3.1 Log in MariaDB a last time as root with:===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
===3.3.2 Add a user with:===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
===3.3.3 Give all necessary rights / permissions to this user:===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
===3.3.4 Make it active with:===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
===3.3.5 Verify all is correct with:===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
==3.4 No remote access if installed on server==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=4. PHPMyAdmin=&lt;br /&gt;
&lt;br /&gt;
==4.1 Install dependencies with:==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
==4.2 Activate the modules==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
==4.3 Download the latest stable version with==&lt;br /&gt;
&lt;br /&gt;
  wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
==4.4 Make directory for PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.5 Copy files in place:==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
==4.6 Allow access to apache==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
==4.7 Tell Apache hat phpmyadmin exists==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==4.8 Activate the configuration==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
==4.9 Securing PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
===4.9.1 Create an .htaccess file with===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
===4.9.2 Create the .htpasswd file===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
==4.10 Secret passphrase for cookie-authentication==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */''&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
==4.11 Warning about configuration storage==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
=5. Composer=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=6. NodeJS and NPM=&lt;br /&gt;
&lt;br /&gt;
==6.1 Official install instructions per version:==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
==6.2 tl;dr==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
==6.3 Verify the version(s)==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
=7. Laravel=&lt;br /&gt;
&lt;br /&gt;
==7.1 Laravel installer==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
===7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
===7.1.2 Activate the laravel installer===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
==7.2 Create a new Laravel project==&lt;br /&gt;
&lt;br /&gt;
===7.2.1 PHP-dependencies===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
===7.2.2 Create new project===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
===7.2.3 Frontend Scaffolding aka get an UserInterface (UI)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====7.2.3.1 Install the laravel ui====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
====7.2.3.2 Get the Vue-JS components====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
====7.2.3.3 Bootstrap====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
====7.2.3.4 Content package.json====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
====7.2.3.5 Warnings====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
====7.2.3.6 Severity vulnarability====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
====7.2.3.7 BootstrapVue====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
===7.2.5 File and directory permissions===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
====7.2.5.1 Files====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
====7.2.5.2 Directories====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
===7.2.7 Give apache the right to write to storage (upload, logs…) and cache===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
==7.3 Create webconfiguration for this project==&lt;br /&gt;
&lt;br /&gt;
===7.3.1 Create a new config file with:===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
===7.3.2 Activate the new website and deactivate the default one===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
===7.3.3 Alias the website in your /etc/hosts for easy access vie your browser===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
=8. Create Database and User=&lt;br /&gt;
&lt;br /&gt;
==8.1 Create Database in PHPMyAdmin==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
==8.2 Create a User for this databases==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
==8.3 Grant user rights to the databases==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
==8.3 Verify the new username==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
=9. Give Laravel access to the databases=&lt;br /&gt;
&lt;br /&gt;
==9.1 Edit the .env file==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
==9.2 First migration==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
=A. Extras=&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
*Language-blade&lt;br /&gt;
*Blade-snippets&lt;br /&gt;
*Blade spacer&lt;br /&gt;
&lt;br /&gt;
*Language-vue&lt;br /&gt;
*Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=169</id>
		<title>Development environment for Laravel with Vue-JS</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Development_environment_for_Laravel_with_Vue-JS&amp;diff=169"/>
		<updated>2020-08-06T08:27:29Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocleft}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;Install apache2, php 7.4, mariadb, phpmyadmin, composer, Laravel and VueJS on Linux Mint&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;August 2020&amp;lt;/sub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 1. Apache2 =&lt;br /&gt;
&lt;br /&gt;
== 1.1 Installation ==&lt;br /&gt;
&lt;br /&gt;
As the Apache-webserver is part of the most distributions repositories install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install apache2&lt;br /&gt;
&lt;br /&gt;
== 1.2 Check successful installation ==&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl status apache2&lt;br /&gt;
= 2. PHP 7.4 =&lt;br /&gt;
&lt;br /&gt;
As some parts need PHP 7.3 or higher we will use PHP 7.4 which is the highes stable vesrion at the moment.&lt;br /&gt;
&lt;br /&gt;
== 2.1 PHP PPA ==&lt;br /&gt;
&lt;br /&gt;
PHP 7.3 and PHP 7.4 are not available from the repositories of the distributions. So we will use a PPA (Private Public Archive). Be aware of possible security issues when using PPA's.&lt;br /&gt;
The newest PHP versions as by now (August 2020) can be found at the PPA from Ondřej Surý.&lt;br /&gt;
&lt;br /&gt;
So lets add that:&lt;br /&gt;
&lt;br /&gt;
  sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
== 2.2 Install PHP 7.4 ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4&lt;br /&gt;
&lt;br /&gt;
To check it enter&lt;br /&gt;
&lt;br /&gt;
 php -v&lt;br /&gt;
&lt;br /&gt;
It should show version 7.4&lt;br /&gt;
&lt;br /&gt;
= 3. MariaDB =&lt;br /&gt;
&lt;br /&gt;
== 3.1 Install MariaDB server ==&lt;br /&gt;
&lt;br /&gt;
For the installation see also the repository configuration page of MariaDB at:&lt;br /&gt;
[https://downloads.mariadb.org/mariadb/repositories/ https://downloads.mariadb.org/mariadb/repositories/]&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install software-properties-common&lt;br /&gt;
  sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'&lt;br /&gt;
  sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.5/ubuntu bionic main'&lt;br /&gt;
&lt;br /&gt;
Once this is ready get the MariaDB-server installed with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
Note!: In my case the mirrorserver is at [ftp://ftp.nluug.nl/ ftp.nluug.nl]. In your case it may vary. So check the commands with the repository configuration page of MariaDB. See link above.&lt;br /&gt;
&lt;br /&gt;
== 3.2 Securing MariaDB ==&lt;br /&gt;
&lt;br /&gt;
The secure (harden) your MariaDB installation use the following command:&lt;br /&gt;
&lt;br /&gt;
  sudo mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
== 3.3 Add user with admin privileges ==&lt;br /&gt;
&lt;br /&gt;
Don’t use the root user at all. Via the command above remote access for root is prohibited. So you need another user with admin rights to allow remote login and administer your MariaDB installation.&lt;br /&gt;
&lt;br /&gt;
=== 3.3.1 Log in MariaDB a last time as root with: ===&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Enter the above in part 3.2 created password.&lt;br /&gt;
&lt;br /&gt;
=== 3.3.2 Add a user with: ===&lt;br /&gt;
&lt;br /&gt;
  CREATE USER IF NOT EXISTS 'username' IDENTIFIED BY 'password';&lt;br /&gt;
&lt;br /&gt;
=== 3.3.3 Give all necessary rights / permissions to this user: ===&lt;br /&gt;
&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO 'username' IDENTIFIED BY 'password' with grant option;&lt;br /&gt;
&lt;br /&gt;
=== 3.3.4 Make it active with: ===&lt;br /&gt;
&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
=== 3.3.5 Verify all is correct with: ===&lt;br /&gt;
&lt;br /&gt;
  SHOW GRANTS FOR 'username';&lt;br /&gt;
&lt;br /&gt;
And log out as root and log in back as the new user. It should be successful.&lt;br /&gt;
&lt;br /&gt;
== 3.4 No remote access if installed on server ==&lt;br /&gt;
&lt;br /&gt;
If you can not access mariadb from a remote client, it is possible that mariadb is only listening on 127.0.0.1. Security setting!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: darkgreen&amp;quot;&amp;gt;TODO: To change that, further info is provided in the near future!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 4. PHPMyAdmin =&lt;br /&gt;
&lt;br /&gt;
== 4.1 Install dependencies with: ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-mysql php7.4-mbstring php7.4-zip unzip&lt;br /&gt;
&lt;br /&gt;
== 4.2 Activate the modules ==&lt;br /&gt;
&lt;br /&gt;
  sudo phpenmod mysqli mbstring zip&lt;br /&gt;
&lt;br /&gt;
== 4.3 Download the latest stable version with ==&lt;br /&gt;
&lt;br /&gt;
  wget [https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip]&lt;br /&gt;
&lt;br /&gt;
unzip it:&lt;br /&gt;
&lt;br /&gt;
  unzip phpMyAdmin-latest-all-languages.zip&lt;br /&gt;
&lt;br /&gt;
== 4.4 Make directory for PHPMyAdmin ==&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
== 4.5 Copy files in place: ==&lt;br /&gt;
&lt;br /&gt;
  sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/&lt;br /&gt;
&lt;br /&gt;
== 4.6 Allow access to apache ==&lt;br /&gt;
&lt;br /&gt;
  sudo chown -R www-data:www-data /var/www/phpmyadmin&lt;br /&gt;
  sudo chmod -R 755 /var/www/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
== 4.7 Tell Apache hat phpmyadmin exists ==&lt;br /&gt;
&lt;br /&gt;
To access PHPMyAdmin at ''www.domain.com/phpmyadmin'' you have to tell apache to do so by adding a configuration.&lt;br /&gt;
&lt;br /&gt;
So create one with:&lt;br /&gt;
  sudo vi /etc/apache2/conf-available/phpmyadmin.conf&lt;br /&gt;
&lt;br /&gt;
With this content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Alias /phpmyadmin /var/www/phpmyadmin/ &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;Directory /var/www/phpmyadmin/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
   AllowOverride all &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4.8 Activate the configuration ==&lt;br /&gt;
&lt;br /&gt;
  sudo a2enconf phpmyadmin&lt;br /&gt;
  sudo systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
== 4.9 Securing PHPMyAdmin ==&lt;br /&gt;
&lt;br /&gt;
For security reasons and in a production environment it is recommended to harden access to the phpmyadmin directory with an .htaccess file and password&lt;br /&gt;
&lt;br /&gt;
=== 4.9.1 Create an .htaccess file with ===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/.htaccess&lt;br /&gt;
&lt;br /&gt;
with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  AuthType Basic&lt;br /&gt;
  &lt;br /&gt;
  AuthName &amp;quot;Restricted Files&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  AuthUserFile /var/www/phpmyadmin/.htpasswd&lt;br /&gt;
  &lt;br /&gt;
  Require valid-user&lt;br /&gt;
&lt;br /&gt;
=== 4.9.2 Create the .htpasswd file ===&lt;br /&gt;
&lt;br /&gt;
  sudo htpasswd -c /var/www/phpmyadmin/.htpasswd &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a password different then the passwords you use in MariaDB for extra security.&lt;br /&gt;
&lt;br /&gt;
When ready you should be prompted for a password when attempting to open phpmyadmin.&lt;br /&gt;
&lt;br /&gt;
== 4.10 Secret passphrase for cookie-authentication ==&lt;br /&gt;
&lt;br /&gt;
After the installation and your first login in to phpMyAdmin you’ll see a warning about the missing secret passphrase.&lt;br /&gt;
&lt;br /&gt;
Open config.inc.php. Rename config.sample.inc.php to config.inc.php if you haven’t done that yet. &lt;br /&gt;
&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
  sudo mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
  sudo vi /var/www/phpmyadmin/config.inc.php&lt;br /&gt;
&lt;br /&gt;
Change the line with &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
  $cfg['blowfish_secret'] = '&amp;lt;verysecretpassword&amp;gt;'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;verysecretpassword&amp;gt; must be 32 characters long.&lt;br /&gt;
&lt;br /&gt;
You don’t have to remember this password, so I can be a happy mix of chars, numbers and special characters you like.&lt;br /&gt;
&lt;br /&gt;
Never use a password you use in production.&lt;br /&gt;
&lt;br /&gt;
A possible way to get a password is with openssl:&lt;br /&gt;
&lt;br /&gt;
  openssl rand -base64 32&lt;br /&gt;
&lt;br /&gt;
That will create an output like&lt;br /&gt;
&lt;br /&gt;
  lQjnenlFAaGbeBvFGNWotx2wuQwa80NphNZ7bETSlkY=&lt;br /&gt;
&lt;br /&gt;
== 4.11 Warning about configuration storage ==&lt;br /&gt;
&lt;br /&gt;
You may see this warning at the startscreen&lt;br /&gt;
&lt;br /&gt;
  The phpMyAdmin configuration storage is not completely configured,&lt;br /&gt;
  some extended features have been deactivated. To find out why click here.&lt;br /&gt;
&lt;br /&gt;
To get rid of it click on the link. phpMyAdmin will show you a new message with a link ('Create'). Click on it and it should create all necessary settings and database table.&lt;br /&gt;
&lt;br /&gt;
= 5. Composer =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000 ;&amp;quot;&amp;gt;'''Note: Do this in your homedir!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install composer on your system following the instructions on their website to get the latest:&lt;br /&gt;
[https://getcomposer.org/download/ Install composer]&lt;br /&gt;
&lt;br /&gt;
Beware that this commands may change on new releases. Below is only an example.&lt;br /&gt;
&lt;br /&gt;
For the actual installation instructions look at [https://getcomposer.org/download/ the composer website].&lt;br /&gt;
&lt;br /&gt;
  php -r &amp;quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  php composer-setup.php --install-dir=bin --filename=composer&lt;br /&gt;
  &lt;br /&gt;
  php -r &amp;quot;unlink('composer-setup.php');&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= 6. NodeJS and NPM =&lt;br /&gt;
&lt;br /&gt;
== 6.1 Official install instructions per version: ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nodesource/distributions#debinstall Install NodeJS instructions]&lt;br /&gt;
&lt;br /&gt;
== 6.2 tl;dr ==&lt;br /&gt;
&lt;br /&gt;
  curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -&lt;br /&gt;
  &lt;br /&gt;
  sudo apt-get install -y nodejs&lt;br /&gt;
&lt;br /&gt;
== 6.3 Verify the version(s) ==&lt;br /&gt;
&lt;br /&gt;
  node -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  v12.18.3&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  npm -v&lt;br /&gt;
&lt;br /&gt;
should respond with something like&lt;br /&gt;
&lt;br /&gt;
  6.14.6&lt;br /&gt;
&lt;br /&gt;
= 7. Laravel =&lt;br /&gt;
&lt;br /&gt;
== 7.1 Laravel installer ==&lt;br /&gt;
&lt;br /&gt;
Install it via composer.&lt;br /&gt;
&lt;br /&gt;
  composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
=== 7.1.1 Add the path to the laravel installer binary===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Note: If you decide to install it in an other place then your own bin, you must add the path to it in your $PATH envvariable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit $HOME/.profile&lt;br /&gt;
&lt;br /&gt;
Mine looks like this:&lt;br /&gt;
&lt;br /&gt;
  # ~/.profile: executed by the command interpreter for login shells.&lt;br /&gt;
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;br /&gt;
  # exists.&lt;br /&gt;
  # see /usr/share/doc/bash/examples/startup-files for examples.&lt;br /&gt;
  # the files are located in the bash-doc package.&lt;br /&gt;
  &lt;br /&gt;
  # the default umask is set in /etc/profile; for setting the umask&lt;br /&gt;
  # for ssh logins, install and configure the libpam-umask package.&lt;br /&gt;
  #umask 022&lt;br /&gt;
  &lt;br /&gt;
  # if running bash&lt;br /&gt;
  if [ -n &amp;quot;$BASH_VERSION&amp;quot; ]; then&lt;br /&gt;
      # include .bashrc if it exists&lt;br /&gt;
      if [ -f &amp;quot;$HOME/.bashrc&amp;quot; ]; then&lt;br /&gt;
          . &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  # set PATH so it includes user's private bin if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of the file:&lt;br /&gt;
&lt;br /&gt;
  # set PATH so it includes the path to the composers binary if it exists&lt;br /&gt;
  if [ -d &amp;quot;$HOME/.config/composer/vendor/bin&amp;quot; ] ; then&lt;br /&gt;
      PATH=&amp;quot;$HOME/.config/composer/vendor/bin:$PATH&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
The exact location can be found by the following command:&lt;br /&gt;
&lt;br /&gt;
  composer global about&lt;br /&gt;
&lt;br /&gt;
=== 7.1.2 Activate the laravel installer ===&lt;br /&gt;
&lt;br /&gt;
To get access to the binary the path must be known. As you added it into your .profile file it must be reread. To do so, relogin.&lt;br /&gt;
&lt;br /&gt;
== 7.2 Create a new Laravel project ==&lt;br /&gt;
&lt;br /&gt;
=== 7.2.1 PHP-dependencies ===&lt;br /&gt;
&lt;br /&gt;
The installer requires the php-xml dependency. So install it with:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install php7.4-xml&lt;br /&gt;
&lt;br /&gt;
=== 7.2.2 Create new project ===&lt;br /&gt;
&lt;br /&gt;
Go to the location where your project should live and execute:&lt;br /&gt;
&lt;br /&gt;
  laravel new &amp;lt;projectsname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that cd into the new project directory.&lt;br /&gt;
&lt;br /&gt;
=== 7.2.3 Frontend Scaffolding aka get an UserInterface (UI) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #8B0000&amp;quot;&amp;gt;Go to your projects root directory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 7.2.3.1 Install the laravel ui ====&lt;br /&gt;
&lt;br /&gt;
  composer require laravel/ui&lt;br /&gt;
&lt;br /&gt;
==== 7.2.3.2 Get the Vue-JS components ====&lt;br /&gt;
  &lt;br /&gt;
  php artisan ui vue&lt;br /&gt;
&lt;br /&gt;
==== 7.2.3.3 Bootstrap ====&lt;br /&gt;
&lt;br /&gt;
With the installation of the vue ui also Bootstrap is installed. Open package.json in the projects root folder to verify. &lt;br /&gt;
&lt;br /&gt;
==== 7.2.3.4 Content package.json ====&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;axios&amp;quot;: &amp;quot;^0.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;bootstrap&amp;quot;: &amp;quot;^4.0.0&amp;quot;, ← '''There it is!!!'''&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;cross-env&amp;quot;: &amp;quot;^7.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;jquery&amp;quot;: &amp;quot;^3.2&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;laravel-mix&amp;quot;: &amp;quot;^5.0.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;lodash&amp;quot;: &amp;quot;^4.17.19&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;popper.js&amp;quot;: &amp;quot;^1.12&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;resolve-url-loader&amp;quot;: &amp;quot;^2.3.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass&amp;quot;: &amp;quot;^1.20.1&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;sass-loader&amp;quot;: &amp;quot;^8.0.0&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue&amp;quot;: &amp;quot;^2.5.17&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;vue-template-compiler&amp;quot;: &amp;quot;^2.6.10&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
So we can use it now.&lt;br /&gt;
&lt;br /&gt;
You will see a notice on the terminalwindow to use npm to install everything needed.&lt;br /&gt;
&lt;br /&gt;
  npm install &amp;amp;&amp;amp; npm run dev&lt;br /&gt;
&lt;br /&gt;
==== 7.2.3.5 Warnings ====&lt;br /&gt;
&lt;br /&gt;
A number of warnings can be shown. At the time of writing this, i get the following warnings&lt;br /&gt;
&lt;br /&gt;
  npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/watchpack/node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):&lt;br /&gt;
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {&amp;quot;os&amp;quot;:&amp;quot;darwin&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;any&amp;quot;} (current: {&amp;quot;os&amp;quot;:&amp;quot;linux&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
The warnings about fsevents can be ignored as it is indeed an unsupportde platform and fsevents will not be used anyway.&lt;br /&gt;
&lt;br /&gt;
Update it with&lt;br /&gt;
&lt;br /&gt;
  npm install @popperjs/core --save&lt;br /&gt;
&lt;br /&gt;
==== 7.2.3.6 Severity vulnarability ====&lt;br /&gt;
&lt;br /&gt;
You also will get this message&lt;br /&gt;
&lt;br /&gt;
  found 1 low severity vulnerability&lt;br /&gt;
    run `npm audit fix` to fix them, or `npm audit` for details&lt;br /&gt;
&lt;br /&gt;
If you execute npm audit fix it will come with a message that it could not be automatically fixed&lt;br /&gt;
&lt;br /&gt;
  fixed 0 of 1 vulnerability in 1093 scanned packages&lt;br /&gt;
    1 vulnerability required manual review and could not be updated&lt;br /&gt;
&lt;br /&gt;
So lets look what is going on with&lt;br /&gt;
&lt;br /&gt;
  npm audit&lt;br /&gt;
&lt;br /&gt;
I get this&lt;br /&gt;
&lt;br /&gt;
                         === npm audit security report ===                        &lt;br /&gt;
                                                                                  &lt;br /&gt;
  ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │                                Manual Review                                 │&lt;br /&gt;
  │            Some vulnerabilities require your attention to resolve            │&lt;br /&gt;
  │                                                                              │&lt;br /&gt;
  │         Visit https://go.npm.me/audit-guide for additional guidance        │&lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
  ┌───────────────┬──────────────────────────────────────────────────────────────┐&lt;br /&gt;
  │ Low           │ Prototype Pollution                                          │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Package       │ yargs-parser                                                 │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Patched in    │ &amp;gt;=13.1.2 &amp;lt;14.0.0 || &amp;gt;=15.0.1 &amp;lt;16.0.0 || &amp;gt;=18.1.2             │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Dependency of │ laravel-mix [dev]                                            │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ Path          │ laravel-mix &amp;gt; yargs &amp;gt; yargs-parser                           │&lt;br /&gt;
  ├───────────────┼──────────────────────────────────────────────────────────────┤&lt;br /&gt;
  │ More info     │ https://npmjs.com/advisories/1500                          │&lt;br /&gt;
  └───────────────┴──────────────────────────────────────────────────────────────┘&lt;br /&gt;
  found 1 low severity vulnerability in 1093 scanned packages&lt;br /&gt;
   1 vulnerability requires manual review. See the full report for details.&lt;br /&gt;
&lt;br /&gt;
Until today there is no solution for this. The main cause seems laravel-mix which uses an older version of the yargs-parser. See also here: [https://github.com/JeffreyWay/laravel-mix/issues/2389 Issue on github]&lt;br /&gt;
&lt;br /&gt;
==== 7.2.3.7 BootstrapVue ====&lt;br /&gt;
&lt;br /&gt;
To be written yet....&lt;br /&gt;
&lt;br /&gt;
=== 7.2.5 File and directory permissions ===&lt;br /&gt;
&lt;br /&gt;
I assume that these settings are correct after the installation, but if not set them as follows:&lt;br /&gt;
&lt;br /&gt;
==== 7.2.5.1 Files ====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type f -exec chmod 644 {} \; &lt;br /&gt;
&lt;br /&gt;
==== 7.2.5.2 Directories ====&lt;br /&gt;
&lt;br /&gt;
  sudo find &amp;lt;laravel-rootdirectory&amp;gt; -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
=== 7.2.7 Give apache the right to write to storage (upload, logs…) and cache ===&lt;br /&gt;
&lt;br /&gt;
Go to your projects root directory and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
  sudo chgrp -R www-data storage bootstrap/cache&lt;br /&gt;
  sudo chmod -R ug+rwx storage bootstrap/cache&lt;br /&gt;
&lt;br /&gt;
== 7.3 Create webconfiguration for this project ==&lt;br /&gt;
&lt;br /&gt;
=== 7.3.1 Create a new config file with: ===&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/apache2/sites-available/www.my-website.localhost.conf&lt;br /&gt;
&lt;br /&gt;
and insert this content:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      ServerAdmin webmaster@localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerName my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      ServerAlias www.my-website.localhost&lt;br /&gt;
  &lt;br /&gt;
      DocumentRoot /path/to/your/project/public/&lt;br /&gt;
  &lt;br /&gt;
      LogLevel debug&lt;br /&gt;
  &lt;br /&gt;
      ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  &lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /path/to/your/project/public/&amp;gt;&lt;br /&gt;
          Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
  &lt;br /&gt;
          AllowOverride All&lt;br /&gt;
  &lt;br /&gt;
          Order allow,deny&lt;br /&gt;
  &lt;br /&gt;
          allow from all&lt;br /&gt;
  &lt;br /&gt;
          Require all granted&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where my-website.localhost should be your website name / address and the ServerAdmin email should be your actual email address for that website admin.&lt;br /&gt;
&lt;br /&gt;
DocumentRoot should be the path to your website files.&lt;br /&gt;
&lt;br /&gt;
If you decide to keep the logfiles apart for each website, for instance at &lt;br /&gt;
&lt;br /&gt;
  ${APACHE_LOG_DIR}/my-website/error.log&lt;br /&gt;
&lt;br /&gt;
don’t forget to add a subdirectory to /var/log/apache or apache won't start.&lt;br /&gt;
&lt;br /&gt;
  sudo mkdir /var/log/apache/my-website&lt;br /&gt;
&lt;br /&gt;
=== 7.3.2 Activate the new website and deactivate the default one ===&lt;br /&gt;
&lt;br /&gt;
  sudo a2ensite www.my-website.localhost.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo a2dissite 000-default.conf&lt;br /&gt;
  &lt;br /&gt;
  sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
=== 7.3.3 Alias the website in your /etc/hosts for easy access vie your browser ===&lt;br /&gt;
&lt;br /&gt;
Open the file with:&lt;br /&gt;
&lt;br /&gt;
  sudo vi /etc/hosts&lt;br /&gt;
&lt;br /&gt;
and add&lt;br /&gt;
&lt;br /&gt;
  127.0.0.1www.my-website.localhost&lt;br /&gt;
&lt;br /&gt;
= 8. Create Database and User =&lt;br /&gt;
&lt;br /&gt;
== 8.1 Create Database in PHPMyAdmin ==&lt;br /&gt;
&lt;br /&gt;
Open PHPMyAdmin in your browser ([http://www.my-website.com/phpmyadmin www.my-website.com/phpmyadmin]) and click on New on the left panel or go to the databases tab and create there a new one.&lt;br /&gt;
&lt;br /&gt;
I prefer utf8mb4_unicode_ci as collation.&lt;br /&gt;
&lt;br /&gt;
== 8.2 Create a User for this databases ==&lt;br /&gt;
&lt;br /&gt;
In PHPMyAdmin go to the Userstab. If you don’t see it (because you are on the databasetab for instance), first go back to the startpage.&lt;br /&gt;
&lt;br /&gt;
Add a user by clicking on Add User. The new user can have only local access if app and database are on the same server / machine, but if not choose any host.&lt;br /&gt;
&lt;br /&gt;
== 8.3 Grant user rights to the databases ==&lt;br /&gt;
&lt;br /&gt;
In the user tab click on Edit privileges to go to the user preferences page.&lt;br /&gt;
&lt;br /&gt;
There click on the database button and select the database your user should get the rights to and click ok.&lt;br /&gt;
&lt;br /&gt;
On the next screen grant rights to data and structure by checking the boxes and click ok.&lt;br /&gt;
&lt;br /&gt;
== 8.3 Verify the new username ==&lt;br /&gt;
&lt;br /&gt;
Log out of PHPMyAdmin and login again with the new created user and password. If successful you should only see the database you granted the permissions to.&lt;br /&gt;
&lt;br /&gt;
= 9. Give Laravel access to the databases =&lt;br /&gt;
&lt;br /&gt;
== 9.1 Edit the .env file ==&lt;br /&gt;
&lt;br /&gt;
Open the .env file in your editor of choice (I use Atom for development) and set the DB_ variables according the data you used to create the database and user.&lt;br /&gt;
&lt;br /&gt;
As an example&lt;br /&gt;
&lt;br /&gt;
  DB_CONNECTION=mysql&lt;br /&gt;
  DB_HOST=127.0.0.1&lt;br /&gt;
  DB_PORT=3306&lt;br /&gt;
  DB_DATABASE=MyDB&lt;br /&gt;
  DB_USERNAME=MyDBUser&lt;br /&gt;
  DB_PASSWORD=MYDBPassword&lt;br /&gt;
&lt;br /&gt;
Save that changes.&lt;br /&gt;
&lt;br /&gt;
== 9.2 First migration ==&lt;br /&gt;
&lt;br /&gt;
Go to projects root directory in your shell and execute the following command.&lt;br /&gt;
&lt;br /&gt;
 php artisan migrate:install&lt;br /&gt;
&lt;br /&gt;
You should be answered with:&lt;br /&gt;
&lt;br /&gt;
  Migration table created successfully.&lt;br /&gt;
&lt;br /&gt;
In your database a new table migrations is created. Here all migrations will be stored.&lt;br /&gt;
&lt;br /&gt;
Now execute&lt;br /&gt;
&lt;br /&gt;
  php artisan migrate&lt;br /&gt;
&lt;br /&gt;
The response will show that a user table, a password reset table and failed jobs table are created.&lt;br /&gt;
&lt;br /&gt;
 Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
  Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2014_10_12_100000_create_password_resets_table&lt;br /&gt;
  Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)&lt;br /&gt;
  Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
  Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)&lt;br /&gt;
&lt;br /&gt;
= A. Extras =&lt;br /&gt;
&lt;br /&gt;
Atom addons for developing Laravel projects&lt;br /&gt;
&lt;br /&gt;
* Language-blade&lt;br /&gt;
* Blade-snippets&lt;br /&gt;
* Blade spacer&lt;br /&gt;
&lt;br /&gt;
* Language-vue&lt;br /&gt;
* Vue-snippets&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=168</id>
		<title>Testseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Testseite&amp;diff=168"/>
		<updated>2020-08-05T21:34:35Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;flex-row row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Bastel und Reparatureck&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''MariaDB'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
MariaDB_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''MariaDB How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''PHPMyAdmin'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
PHPMyAdmin_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''PHPMyAdmin How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bootstrap'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Bootstrap | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Bootstrap How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Apache'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
Apache_How_to's | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Apache How to's''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end of col 1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;&amp;lt;h5 class=&amp;quot;text-muted&amp;quot;&amp;gt;Windows Knoffhoff&amp;lt;/h5&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
'''Systemzeit ist UTC'''&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
UTCSystemClock | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''Windows UTC beibringen''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/btn&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;col-xs-12 col-md-6 col-lg-4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-heading&amp;quot;&amp;gt;Development&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;btn wrapperclass=&amp;quot;btn-group-vertical&amp;quot; class=&amp;quot;btn-info&amp;quot; size=&amp;quot;sm&amp;quot;&amp;gt;&lt;br /&gt;
[[Development environment for Laravel with Vue-JS|Development_environment_for_Laravel_with_Vue-JS | &amp;lt;span class=&amp;quot;glyphicon glyphicon-share-alt&amp;quot;&amp;gt;''DevEnv for Laravel / Vue-JS''&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;/btn&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of pan --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of col 3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- End of row 1--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=167</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=167"/>
		<updated>2020-08-05T21:32:31Z</updated>

		<summary type="html">&lt;p&gt;Froggi: Minor changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Knowhow.png|200x200px|zentriert]]&lt;br /&gt;
&lt;br /&gt;
==Zutatenliste==&lt;br /&gt;
[[Froggi's_Weisheiten |''Froggi's Weisheiten'']]&amp;lt;br&amp;gt;[[Nextcloud_Knoffhoff|''Nexcloud knoffhoff'']]&amp;lt;br&amp;gt;[[GrubRescue_Bootanleitung|''Grub Rescue Dingsgedongs'']]&amp;lt;br&amp;gt;[[Schleppi_zu_dunkel|''Samsung R730 zu dunkel unter Linux Mint'']]&amp;lt;br&amp;gt;[[BTRFS-Entfernen |''Check auf btrfs-Partitionen entfernen'']]&amp;lt;br&amp;gt;[[Ktimezoned-entries |''Wenn Korganizer die Zeitzonen nicht kennt'']]&amp;lt;br&amp;gt;''[[Testseite |Testseite]]''&amp;lt;br&amp;gt;[[Bootstrap |''Bootstrap how to's'']]&amp;lt;br&amp;gt;[[Python_things |''Python things'']]&amp;lt;br&amp;gt;[[Git_stuff |''Git stuff'']]&amp;lt;br&amp;gt;[[Laravel_etc |''Laravel for me'']]&amp;lt;br&amp;gt;[[Testseite |''Bastel und Reparatureck'']]&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=166</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=166"/>
		<updated>2020-08-05T15:15:33Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Knowhow.png|200x200px|zentriert]]&lt;br /&gt;
&lt;br /&gt;
== Zutatenliste ==&lt;br /&gt;
[[Froggi's_Weisheiten |''Froggi's Weisheiten'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Nextcloud_Knoffhoff| ''Nexcloud knoffhoff'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GrubRescue_Bootanleitung|''Grub Rescue Dingsgedongs'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Schleppi_zu_dunkel|''Samsung R730 zu dunkel unter Linux Mint'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[BTRFS-Entfernen |''Check auf btrfs-Partitionen entfernen'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ktimezoned-entries | ''Wenn Korganizer die Zeitzonen nicht kennt'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Testseite | ''Testseite'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bootstrap | ''Bootstrap how to's'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Python_things | ''Python things'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Git_stuff | ''Git stuff'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Laravel_etc |''Laravel for me'']]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Testseite | ''Bastel und Reparatureck'']]&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
	<entry>
		<id>https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=165</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.froggigi.eu/index.php?title=Hauptseite&amp;diff=165"/>
		<updated>2020-08-05T15:14:59Z</updated>

		<summary type="html">&lt;p&gt;Froggi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Knowhow.png|200x200px|zentriert]]&lt;br /&gt;
&lt;br /&gt;
== Zutatenliste ==&lt;br /&gt;
[[Froggi's_Weisheiten |''Froggi's Weisheiten'']]&lt;br /&gt;
[[Nextcloud_Knoffhoff| ''Nexcloud knoffhoff'']]&lt;br /&gt;
[[GrubRescue_Bootanleitung|''Grub Rescue Dingsgedongs'']]&lt;br /&gt;
[[Schleppi_zu_dunkel|''Samsung R730 zu dunkel unter Linux Mint'']]&lt;br /&gt;
[[BTRFS-Entfernen |''Check auf btrfs-Partitionen entfernen'']]&lt;br /&gt;
[[Ktimezoned-entries | ''Wenn Korganizer die Zeitzonen nicht kennt'']]&lt;br /&gt;
[[Testseite | ''Testseite'']]&lt;br /&gt;
[[Bootstrap | ''Bootstrap how to's'']]&lt;br /&gt;
[[Python_things | ''Python things'']]&lt;br /&gt;
[[Git_stuff | ''Git stuff'']]&lt;br /&gt;
[[Laravel_etc |''Laravel for me'']]&lt;br /&gt;
[[Testseite | ''Bastel und Reparatureck'']]&lt;/div&gt;</summary>
		<author><name>Froggi</name></author>
		
	</entry>
</feed>