Apache is fast, secure and consistently a high-quality web server software which is the most popular since 1996.
In this article, we are going to show you how to install Apache, MySQL, and PHP on your Ubuntu 18.04 server.
Explaining with steps:-
Step 1: Update your system
sudo apt-get update
Step 2: Install Apache
Press ‘Y’ when you are prompted to confirm the Apache installation.
Once the installation is complete, enter your VPS machine public IP address on your browser. You should see the default Apache web page as shown below:
sudo apt-get install apache2
Step 3: Install Mysql
sudo apt-get install mysql-server
Press ‘Y’ when you get a confirmation message.
Secure your mysql server
MySQl server ships with default settings which are not secure. We need to configure it to make our server less vulnerable to attacks. Luckily there is a single configuration command that will make things easier for us. Just run the command below:
sudo mysql_secure_installation
VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
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: 2
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : Y
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? (Press y|Y for Yes, any other key for No) : Y
Success.
By default, MySQL 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? (Press y|Y for Yes, any other key for No) : Y
– Dropping test database…
Success.
– 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? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!
Testing your MySQl server
sudo mysql -u root -p
Change Mysql root password
SELECT user,authentication_string,plugin,host FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your password';
FLUSH PRIVILEGES;
Install PHP
sudo apt-get install php libapache2-mod-php
Press Y when you are prompted to confirm the installation
Restart Apache
sudo systemctl restart apache2
Enable Mod Rewrite</strong
sudo a2enmod rewrite
If you are using this for your laravel project then you have to install the bellow library.
sudo apt-get -y install unzip zip nginx php7.2 php7.2-mysql php7.2-fpm php7.2-mbstring php7.2-xml php7.2-curl
Setup Vhost With out SSL:
<VirtualHost *:80> ServerName xxxxxxxxx.com DocumentRoot "/var/www/html/<project directory>/" <Directory "/var/www/html/<project directory>"> AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Setup Vhost With SSL:
<VirtualHost *:80> ServerName xxxxxxxxx.com DocumentRoot /var/www/html/<project directory>/ RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </VirtualHost> <VirtualHost *:443> ServerName xxxxxxxxxx.com DocumentRoot /var/www/html/<project directory>/ <Directory "/var/www/html/<project directory>/"> Options FollowSymLinks AllowOverride All </Directory> SSLEngine on SSLCertificateFile /etc/ssl/<project directory>/xxxxx.crt SSLCertificateKeyFile /etc/ssl/<project directory>/xxxx.key SSLCertificateChainFile /etc/ssl/<project directory>/xxxxxxx.ca-bundle ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Enable and Disable Vhost Config
sudo a2dissite 000-default.conf
sudo a2ensite demo.conf
Lets Get Started your project with professional way