Install Apache,As you could recognize already, LAMP stack is a well-known, open supply internet improvement platform that can be used to run and installation dynamic web websites and internet-primarily based packages. Typically, LAMP stack consists of Apache webserver, MariaDB/MySQL databases, PHP/Python/Perl programming languages. LAMP is the acronym of Linux, MariaDB/MYSQL, PHP/Python/Perl. In this academic, we are able to see a way to set up Apache, MariaDB, PHP (LAMP stack) in Ubuntu 18.04 LTS server.
Install Apache,(LAMP stack) in Ubuntu 18.04 LTS Server
For the purpose of this tutorial, I will be using the following testbox.
- Operating System : Ubuntu 18.04 64 bit LTS server
- IP address : 192.168.225.22/24
1.Install Apache,Install Apache webserver
To install Apache web server, run the following command from the Terminal:
sudo apt install apache2
Check if Apache web server is running or not:
$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Fri 2018-07-06 11:42:35 UTC; 27s ago
Main PID: 2079 (apache2)
Tasks: 55 (limit: 2322)
CGroup: /system.slice/apache2.service
├─2079 /usr/sbin/apache2 -k start
├─2081 /usr/sbin/apache2 -k start
└─2082 /usr/sbin/apache2 -k start
Jul 06 11:42:35 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
Jul 06 11:42:35 ubuntuserver systemd[1]: Started The Apache HTTP Server.
1.1Install Apache,Adjust firewall to allow Apache web server
Install Apache,By default, the apache web browser can’t be accessed from far off structures when you have enabled the UFW firewall in Ubuntu 18.04 LTS. You should permit the http and https traffic via UFW by way of following the under steps.
First, let us view which packages have mounted a profile the usage of command:
$ sudo ufw app list
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
As you can see, Apache and OpenSSH applications have installed UFW profiles.
If you look into the “Apache Full” profile, you will see that it enables traffic to the ports 80 and 443:
$ sudo ufw app info "Apache Full"
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
Now, run the following command to allow incoming HTTP and HTTPS traffic for this profile:
$ sudo ufw allow in "Apache Full"
Rules updated
Rules updated (v6)
If you don’t want to allow https traffic, but only http (80) traffic, run this command instead:
$ sudo ufw app info "Apache"
Now, open up your web browser and navigate to http://localhost/ or http://IP-Address/.
If you are see a screen something like above, you are good to go. Apache server is working!
2. Apache, MariaDB, PHP ,Install MariaDB
MariaDB is the drop-in replacement of MySQL database server.
To install it, run:
$ sudo apt install mariadb-server mariadb-client
The version of MariaDB inside the Ubuntu professional repositories might be previous. If you need to install a brand new MariaDB, add the MariaDB authentic repository for Ubuntu and install it as shown underneath.
First, add MariaDB repository and import the key as proven under.
$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sgp1.mirrors.digitalocean.com/mariadb/repo/10.3/ubuntu bionic main'
After including the repository, run the subsequent instructions to install MariaDB.
$ sudo apt update
$ sudo apt install mariadb-server
Verify if MariaDB service is running or not using command:
$ sudo systemctl status mysql
Install Apache,Sample output:
● mariadb.service - MariaDB database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-07-06 11:52:12 UTC; 2min 39s ago Main PID: 3869 (mysqld) Status: "Taking your SQL requests now..." Tasks: 27 (limit: 2322) CGroup: /system.slice/mariadb.service └─3869 /usr/sbin/mysqld Jul 06 11:52:13 ubuntuserver /etc/mysql/debian-start[3906]: mysql Jul 06 11:52:13 ubuntuserver /etc/mysql/debian-start[3906]: performance_schema Jul 06 11:52:13 ubuntuserver /etc/mysql/debian-start[3906]: Phase 6/7: Checking and upgrading tables Jul 06 11:52:13 ubuntuserver /etc/mysql/debian-start[3906]: Processing databases Jul 06 11:52:13 ubuntuserver /etc/mysql/debian-start[3906]: information_schema Jul 06 11:52:13 ubuntuserver /etc/mysql/debian-start[3906]: performance_schema Jul 06 11:52:13 ubuntuserver /etc/mysql/debian-start[3906]: Phase 7/7: Running 'FLUSH PRIVILEGES' Jul 06 11:52:13 ubuntuserver /etc/mysql/debian-start[3906]: OK Jul 06 11:52:13 ubuntuserver /etc/mysql/debian-start[3975]: Checking for insecure root accounts. Jul 06 11:52:13 ubuntuserver /etc/mysql/debian-start[3979]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables
Mysql is running!
2.1Install Apache,Setup database administrative user (root) password
During MariaDB installation, It will set password for the administrative user account (root).
If you try to setup password manually using command:
$ mysql_secure_installation
You can’t login set the password. You will see an error like below.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): ERROR 1698 (28000): Access denied for user 'root'@'localhost' Enter current password for root (enter for none):
To fix this problem, log in as MySQL database administrator using command:
$ sudo mysql -u root
After logging into the MySQL prompt, run the following commands one by one.
use mysql;
update user set plugin='' where User='root';
flush privileges;
\q
Now, you can set database administrative password using command:
$ mysql_secure_installation
Enter password password, and hit ENTER key to accept the default values.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): # Press ENTER OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] # Press ENTER New password: # Enter password Re-enter new password: # Re-enter password Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] # Press ENTER ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] # Press ENTER ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] # Press ENTER - Dropping test database... ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist ... Failed! Not critical, keep moving... - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] # Press ENTER ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure.
That’s it. Password for the database administrative user account has been set.
3, Install Apache,Install PHP
To install PHP, run:
$ sudo apt install php libapache2-mod-php php-mysql
After installing PHP, create info.php file in the Apache root document folder. Usually, the apache root document folder will be /var/www/html/ or /var/www/ in most Debian based Linux distributions. In Ubuntu 18.04 LTS, it is /var/www/html/.
Create info.php in the apache root folder as shown below.
$ sudo vi /var/www/html/info.php
Add the following lines:
<?php phpinfo(); ?>
Save and quit the file. Restart apache service to take effect the changes.
$ sudo systemctl restart apache2
Now, open up your web browser and type: http://IP-address/info.php in the address bar.
You will be pleased with a screen like below.
Install Apache,Install PHP modules
To improve the functionality of PHP, you can install some additional PHP modules.
To list the available PHP modules, run:
$ sudo apt-cache search php- | less
Sample output:
Use and arrows to move up and down between the result. To exit from the result, type q.
To find the details of any particular php module, for example php-gd, run:
$ sudo apt-cache show php-gd
A php module run:
$ sudo apt install php-gd
To install all modules (not necessary though), run:
$ sudo apt-get install php*
Do not forget to restart Apache service after installing any php module.
Congratulations! We have successfully setup LAMP stack in Ubuntu 18.04 LTS server.
Also read:
Apache, MySQL, PHP (LAMP) Stack On Ubuntu 18.04 LTS Install Nginx, MariaDB, PHP (LEMP Stack) in Ubuntu 18.04 LTS MariaDB,PHP (LAMP) stack on Arch Linux Install Nginx,MariaDB, PHP (LEMP) stack on Arch Linux
And, that’s all for now. As you can see, Setting up LAMP stack in Ubuntu is absolutely easy and straight-forward. Anyone will limited experience can easily setup LAMP stack easily. More good stuffs to come. Stay tuned!
Cheers!