This article is a step by step tutorial to get started with PHP and laravel in Linux environment ( Ubuntu ). By installing Apache2, Mysql and PHP, your LAMP server is ready to host your PHP application.

At the end of this post, you’ll know how to add your custom domain for your local environment.

If you are familiar with Docker check My post : Laravel & Docker, Zero config with Vessel.

Let’s start !!!

As you expected from all kind of Linux tutorials you should first update and upgrade your system by running :

sudo apt-get update 
sudo apt-get upgrade

Now your system and packages system is up to date.

Next, you need to install some basics dependencies to avoid all kind of problems in your workflow

sudo apt-get install -y git curl wget zip unzip

Installing Apache2 server :

sudo apt-get install apache2

To make sure that the server is running you can execute this command in your terminal

sudo systemctl status apache2
sudo systemctl status apache2

As you see above, the service appears to have started successfully, you can also access to your server through the http://localhost address and you will see Apache2 default home page.

It is important to know that all your web content must be under the /var/www/html directory. you can check the Bonus section to make any folder as your root web content to know how to config.

To master Appche2 config you need to master this 6 commands line:

  • a2enmod (apache2 enable mode) : To enable an Apache2 mod like rewrite mode.
  • a2dismod (apache2 disable mode) : To disable an Apache2 mod.
  • a2enconf (apache2 enable Config) : To enable a specific config.
  • a2disconf (apache2 disable config) : To disable a specific config.
  • a2ensite(apache2 enable Site) : To enable a specific app.
  • a2dissite (apache2 disable Site) : To disable a specific app.

Enable rewrite mode

sudo a2enmod rewrite
sudo systemctl restart apache2

This Gif take you around the most important Apache directories.

You can learn more about Apache config and Linux in this article

Install MySQL

sudo apt-get install mysql-server

Click Enter to validate the first popup, then create a password for your Mysql root user. it’s highly recommended to secure Mysql server by running :


You can read more about improving MySQL installation security

To manage database, there is a lot of SQL clients to use with MySQL like MySQL WorkbenchSQuirreLSQLECTRON or the great Google Extension Chrome MySQL Admin .

Install PHP :

sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.1 php7.1-fpm libapache2-mod-php7.0 php7.1-cli php7.1-curl php7.1-mysql php7.1-sqlite3 \
    php7.1-gd php7.1-xml php7.1-mcrypt php7.1-mbstring php7.1-iconv

As you see above this large command will install php, php-cli and the most important php libraries.

Install Composer :

curl -sS | sudo php -- --install-dir=/usr/local/bin --filename=composer
sudo chown -R $USER $HOME/.composer

Now you are ready to create your first Laravel app.

Test web Server

To test your LAMP server, just create a Laravel application under Apache2 root directory.

cd /var/www/html
composer create-project --prefer-dist laravel/laravel lara_app

Open your browser and you can access to your app through :



In this section, you will discover how you can create a Laravel application with custom domain name outside apache2 directory.

first create a config file under /etc/apache2/sites-available directory.

cd /etc/apache2/sites-available
sudo touch lara_app.conf

Past and update DocumentRoot and Directory with your app folder inside the file.

<VirtualHost *:80>.
ServerAdmin webmaster@localhost
# Your Custom folder 
DocumentRoot /media/disk2/Work/lara_app/public/
<Directory /media/disk2/Work/lara_app/public/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log

Next, give to your custom folder the permission to execute

chmod -R 755 /media/disk2/Work/lara_app/public/

Then disable the default site and enable you new lara_app site.

sudo a2dissite 000-default
sudo a2ensite lara_app

At last, you can configure the domain name by adding this line into /etc/hosts file.

# /etc/hosts localhost youssouf-Latitude-E6410

Now you can access to your app through your custom domain name :

If you are familiar with Docker check My post :Laravel & Docker, Zero config with Vessel.

If you are familiar with React check My post :

Thanks for reading! If you think other people should read this, clap for me, tweet and share the post. Remember to follow me on Medium so you can get notified about my future posts.

Categories: PHP


now · March 7, 2020 at 11:09 pm

Howdy I am so grateful I found your blog, I really
found you by mistake, while I was browsing on Aol for something else, Nonetheless I am here now and would just like to say
thanks a lot for a remarkable post and a all round enjoyable blog (I also love the theme/design), I don’t
have time to look over it all at the minute but I have bookmarked it and also included your RSS feeds,
so when I have time I will be back to read a lot
more, Please do keep up the fantastic work.

Justin · March 28, 2020 at 5:50 am

Long time supporter, and thought I’d drop a comment.

Your wordpress site is very sleek – hope you don’t mind me asking what theme
you’re using? (and don’t mind if I steal it?

I just launched my site –also built in wordpress like yours– but the theme slows (!) the site down quite a bit.

In case you have a minute, you can find it by searching
for “royal cbd” on Google (would appreciate any feedback) – it’s still in the works.

Keep up the good work– and hope you all take care of yourself during the coronavirus

Leave a Reply

Your email address will not be published. Required fields are marked *