
Good content takes time and effort to come up with.
Please consider supporting us by just disabling your AD BLOCKER and reloading this page again.
Hello friends in this post I am gonna show you how to install LAMP
in Ubuntu
server.
LAMP
stands for L
- LINUX, A
- Apache, M
- MYSQL, P
- PHP
Before moving ahead with this article I request you guys to setup up Ubuntu
server in Digital Ocean, Linode, or any other cloud platform. If you don't have an account then click on the link and get the free credits to play around :)
If you're still using password
logins or root
SSH
logins. Then I highly recommend you to check on How To Do Basic Server Security Setup For Ubuntu / Linux
Login to your server and follow along with the following steps.
APACHE
webserverApache
is a very famous web server in the market for decades, it handles all your server incoming requests on port 80
sudo apt-get update
sudo apt-get install apache2
To cross verify whether the installation is successful or not you can simply open your server ip_address
in your browser as follows
http://your_server_ip_address
You will see a APACHE
successfully installed page. Which loads from /var/www/html/
folder
MYSQL is a relational database that is used to store the dynamic data and fetch the data which will come from login, register, and various other types of forms
sudo apt-get install mysql-server
Now the MYSQL database is installed. As earlier now MYSQL won't prompt for a password. So to securely install the MYSQL server use the following commands
sudo mysql_secure_installation
You might be prompted with VALIDATE PASSWORD PLUGIN
please select NO
as per my experiences. It will create a lot of fuss for the passwords
at a later point.
By chance, if you select YES
the option then you will get the following prompt
There are three levels of a password validation policy. Select difficulty based on your requirement.
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
Next, add the root
user password and confirm the password.
New password:
Re-enter new password:
For best security practices it's a good idea to press YES
for the subsequent prompts. These prompts include remove anonymous users, remove the test databases, disable remote root logins and flush privileges to save changes into effect.
By default, you will be root
a user with auth_socket
enabled connection. This means while connecting to the database no need for any passwords. At some point later this might cause security issues. So it's better to add the password
authentication for all requesting connections.
Let me show you the same. First, let's login to MYSQL
sudo mysql
Next, run the following to see the details of the root
user
SELECT user,authentication_string,plugin,host FROM mysql.user;
Once you run the above command you can see that root
user doesn't have the authentication_string
ie password.
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
To set the password
run the following command, make sure to change the your_password
with the valid required password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
Run the following command so that the changes make will take effect.
FLUSH PRIVILEGES;
Now again if you re-run the above command to check if the password is set or not then it will set with mysql_native_password
. No worries if your not able to see then authentication_string
as it will be encrypted by MYSQL
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *549966GJ45794839F92C1571D6D78F | mysql_native_password | localhost |
Now you can safely exit
from MYSQL
prompt. If you try to log in as sudo mysql
then it won't allow. You need to add your_password
to do so.
Now you have installed APACHE
webserver and MYSQL
its time to set up your PHP
so that your PHP
scripts run.
APACHE
process all your PHP
scripts with the help of MOD_PHP
ie PHP
for APACHE
module, it allows APACHE
to interpret all your PHP
files when any of the scripts gets called.
Now install all the PHP
packages in the Ubuntu server with the following command. No need to add a specific version like the way I will do in the following command. But make sure that your local development and now installing PHP version matches else if you use composer in the future you will have to face some problems.
sudo apt install php7.4 libapache2-mod-php php7.4-mysql php7.4-curl php7.4-zip php7.4-json
If your installing LARAVEL
then better to run the following command to install all packages at once
sudo apt-get install php7.4-fpm php7.4-cli php7.4-common php7.4-curl php7.4-gd php7.4-gmp php7.4-json php7.4-mbstring php7.4-mysql php7.4-xml php7.4-zip composer git zip unzip
You can add composer, zip, unzip, git
in the same command instead of adding later :)
Once the PHP
, MYSQL
& APACHE
installation is done then your left with configuring APACHE
. First, you need to set up APACHE
for your site. Basically, you will find all APACHE
configurations in the following path
/etc/apache2/sites-available/
To check if any of these configurations are enabled or not then you need to check in the following path
/etc/apache2/sites-enabled/
Make sure to replace your_website_name.com
with your domain name in the following configuration.
sudo nano /etc/apache2/sites-available/your_domain_name.com.conf
Now add the following configuration to the file. In the following, if you don't have a domain name still then just add the ip_address
of your domain name.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName your_domain_name.com
ServerAlias www.your_domain_name.com
DocumentRoot /var/www/html/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Now you have added your_domain_name.com
APACHE configuration lets activate it by the following command
sudo a2ensite your_domain_name.com.conf
As a default APACHE will have 000-default.conf
configuration which will be activated we have to unlink
from /etc/apache2/sites-enabled/000-default.conf
with the following command
sudo a2dissite 000-default.conf
To test if the configuration file is working or not use the following command to check
sudo apache2ctl configtest
You will be able to see the following output
Output
Syntax OK
Now restart your APACHE server
sudo systemctl restart apache2
Now you have install LAMP and it's time to check if it paid your efforts. First, create testing.php
file inside /var/www/html/
like /var/www/html/testing.php
sudo nano /var/www/hml/testing.php
And add the following code
<?php
echo 'LAMP installtion completed.';
Now browse URL http://website_name.com/testing.php
or http://ip_address/testing.php
from browser and you must be able to see the following output
LAMP installation completed.
Congrats on setting up your LAMP stack.
Now you know how to install the LAMP stack. If you have not read on how to perform basic server security on your sever then I highly recommend reading my article on it
How To Do Basic Server Security Setup For Ubuntu / Linux
Install Linux, NGINX, MYSQL, PHP (LEMP Stack) on Ubuntu
PHP file_put_contents failed to open stream: Permission denied
Test Your Local Developing Laravel Web Application From Phone Browser Without Any Software
Generate Sitemap in PHP Laravel
Use Different PHP Versions In Ubuntu / Linux
Create Gmail App Password For SMTP Mails
Securely Connect Server MYSQL DB From Sequel Pro / MYSQL Workbench
Factories To Speed Up Test-Driven Development In Laravel
Comment And Like System Using Disqus
Integrate Google Translate Into Your Website
Install Apache Web Server On Ubuntu 20.04 / Linux & Manage It