Ubuntu20.04 Install Apache PHP MySQL on Digital Ocean Droplet

Ubuntu20.04 Install Apache PHP MySQL on Digital Ocean Droplet

First create a Digital Ocean Droplet with OS Ubuntu20.04, choose password login for SSH into droplet.

# apt update
# apt install unzip -y
# apt install curl -y

Install Apache & MySQL Server

# apt install apache2 -y
# apt install mysql-server -y

# mysql_secure_installation (it will ask you MySQL server login new password)

Set MySQL password for remote login
# mysql

DigitalOcean Referral Badge

SET ROOT LOGIN & PASSWORD

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘[MYSQL-PASSWORD]’;
mysql> FLUSH PRIVILEGES;
mysql> exit

# systemctl enable mysql
# systemctl enable apache2

Now you can login to MySQL using Password provided above.
# mysql -u root -p

# apt-get update

Install PHP 7.4 with some extensions used for CakePHP
# apt -y install software-properties-common
# add-apt-repository ppa:ondrej/php
# apt-get update

# apt -y install php7.4

Check PHP Version
# php -v

# apt install php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache php7.4-soap php7.4-zip php7.4-intl php7.4-mcrypt -y

# nano /etc/apache2/mods-enabled/dir.conf (Add index.php in start)
# systemctl restart apache2

Make PHPInfo File
# vi /var/www/html/sv.php

Add <?php phpinfo(); ?> in above file

# apt install phpmyadmin -y
# cd /usr/share
# wget https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip
# unzip phpMyAdmin-4.9.4-english.zip

# rm -rf /usr/share/phpmyadmin

# cp /usr/share/phpMyAdmin-4.9.4-english/config.sample.inc.php /usr/share/phpMyAdmin-4.9.4-english/config.inc.php

# vi /usr/share/phpMyAdmin-4.9.4-english/config.inc.php

Add “blowfish_secret” like below

/**
* This is needed for cookie based authentication to encrypt password in
* cookie. Needs to be 32 chars long.
*/
$cfg[‘blowfish_secret’] = ‘sdfksdpfk0985rmlkgmd9g089058kldfg0is-0d9f-0sdkgld,fpgd-f0g’; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

# mkdir /usr/share/phpMyAdmin-4.9.4-english/tmp
# chmod -R 0777 /usr/share/phpMyAdmin-4.9.4-english/tmp
# vi /etc/apache2/conf-available/phpmyadmin.conf

Add in phpmyadmin.conf file
>> Alias /pma /usr/share/phpMyAdmin-4.9.4-english

# service apache2 restart

Enable htaccess rewrite
# vi /etc/apache2/apache2.conf

Add “AllowOverride All” in /var/www block

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

# a2enmod rewrite
# systemctl restart apache2

Install Composer
# cd ~
# curl -sS https://getcomposer.org/installer -o composer-setup.php
# sudo php composer-setup.php –install-dir=/usr/local/bin –filename=composer
# /usr/local/bin/composer -v

Install Free SSL
# apt install snapd

# sudo snap install core; sudo snap refresh core
# snap install –classic certbot
# ln -s /snap/bin/certbot /usr/bin/certbot
# cd /etc/apache2/sites-available

Make Virtual Host for your domain
# vi domain-name.com.conf

<VirtualHost *:80>

ServerAdmin [email protected]
ServerName domain-name.com
ServerAlias www.domain-name.com
DocumentRoot /var/www/
ErrorLog ${APACHE_LOG_DIR}/domain_name_error.log
CustomLog ${APACHE_LOG_DIR}/domain_name_access.log combined

<Directory /var/www/>
Options Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>

</VirtualHost>

# a2ensite domain-name.com
# systemctl reload apache2
# certbot –apache -d domain-name.com

# echo $PATH

# nano /root/certbot.sh

>> certbot.sh for autorenew SSL

#!/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
sudo /usr/bin/certbot renew –quiet && systemctl reload apache2

# chmod 0777 /root/certbot.sh

# crontab -e

Add below line in Crontab file
15 3 * * * /root/certbot.sh

Web Server will be running here
https://domain-name.com/sv.php