AWS — LAMP
Prep our Remote Ubuntu to Run an MQTT Broker — AWSSeries # Episode 02
Let’s install these packages in our remote Ubuntu 20.04 LTS image:
APACHE
PHP
MariaDB
phpMyAdmin
We are preparing our environment to run an MQTT Broker, mosquitto from the Eclipse project repo (next post:).
Here are the scripts, step-by-step:
##01_step: Download theses two tools: PuTTY & PuTTYGen; link:#https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html#-----------------------------------------------------------##02-step: Upgrade/Update your linux distribution:$ sudo apt-get upgrade$ sudo apt-get update#-----------------------------------------------------------##03-step: Apache2 Installation:$ sudo apt-get install apache2#-----------------------------------------------------------##04-step: Enable ports 80 e 443 - Apache2 Firewall:$ sudo ufw app info "Apache Full"$ sudo ufw allow in "Apache Full"#-----------------------------------------------------------##05-step: Apache2 Services controls:$ sudo systemctl start apache2.service$ sudo systemctl stop apache2.service$ sudo systemctl restart apache2.service$ sudo systemctl reload apache2.service$ sudo systemctl status apache2.service#-----------------------------------------------------------##06-step: PHP Installation:$ sudo apt-get install php libapache2-mod-php php-mysql$ sudo systemctl restart apache2#-----------------------------------------------------------##07-step: phpinfo() Testing:$ sudo nano /var/www/html/phpinfo.php# Copy/paste this: '<?php phpinfo(); ?>' (sem aspas) inside the file 'phpinfo.php'# Open your browser: 54.149.192.190/phpinfo.php#-----------------------------------------------------------##08-step: Mysql Instalation:#HINT: during Mysql installation mark "Apache2" option by hitting the space bar. An '*' do select it;$ sudo apt-get install mysql-server$ sudo mysql_secure_installation (root password creation & type 'y' for all options - My password: 'root1234'$ sudo mysql -u root -p (type password for db)$ > exit;#-----------------------------------------------------------##09-step: PHPMyadmin Installation:$ sudo apt-get update#$ sudo apt-get install phpmyadmin php-mbstring php-gettext #ubuntu 18$ sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl #ubuntu 20#remover sudo apt-get --purge remove phpmyadmin php-mbstring php-zip php-gd php-json php-curl#-----------------------------------------------------------##10-step: MySql Installation & Configuration - Fixing Logins:$ # Creating login/password for root and phpmyadmin users$ sudo mysql -u root -p$ > SELECT user,authentication_string,plugin,host FROM mysql.user;$ # The user 'root' have no password. Let's fix it:$ > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root1234';$ # Granting all privileges to 'root' user:$ > GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;$ > FLUSH PRIVILEGES;$ # Doing the same thing to 'phpmyadmin' user: $ > CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'root1234';$ # Granting all privileges to 'phpmyadmin' user:$ > GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;$ > FLUSH PRIVILEGES;$ # From that point on, we have two users, with the same passwords
$ # and privileges in the mysql database;$ # Confirming that both users have their login and password saved$ > SELECT user,authentication_string,plugin,host FROM mysql.user;$ > exit;$ sudo systemctl restart apache2# For testing phpmyadmin, open in your browser:#[your_ip/phpmyadmin]
$ 54.149.192.190/phpmyadmin#login: 'root' or 'phpmyadmin'#password: 'root1234'#if error, fix it!:/ https://www.linode.com/community/questions/17036/how-do-i-fix-a-1045-error-when-trying-to-log-into-phpmyadmin##11-step: Now, let's hinder the visit of hackers: / We will
# establish login and password to access our phpmyadmin structure.$ sudo nano /etc/apache2/conf-available/phpmyadmin.conf----------------------------------------------<Directory /usr/share/phpmyadmin>Options FollowSymLinksDirectoryIndex index.php
AllowOverride All <----- Add/save this line only:)----------------------------------------------$ sudo systemctl restart apache2$ sudo nano /usr/share/phpmyadmin/.htaccess----------------------------------------------AuthType BasicAuthName "Restricted Files"AuthUserFile /etc/phpmyadmin/.htpasswdRequire valid-user----------------------------------------------# By restricting direct access to phpmyadmin,
# open a login and password box if someone accesses / phpmyadmin
# directory$ sudo htpasswd -c /etc/phpmyadmin/.htpasswd jaythree# password:******# In the case you wanto to add another user:$ sudo htpasswd /etc/phpmyadmin/.htpasswd username_2# password: [your_password]#-----------------------------------------------------------##12-step: Now we are going to create a www-data group and transfer #the 'root' permission (after all, you are not going to access your
# directories on the page server using '' root ');
# Follow the step-by-step:# To upload the php pages in the html directory, initially give
# permission to the 'ubuntu' user;$ ls$ sudo chgrp -R www-data /var/www/html (it alters to www-data group)$ ls# Now let's add the ubuntu user to this newly created group:$ sudo usermod -a -G www-data ubuntu (add ubuntu to group www-data)$ ls$ sudo chmod -R 2775 /var/www/html (permissions rwx)$ ls$ logout; (now open PuTTY again!)#-----------------------------------------------------------##13-step: Python Installation (Ubuntu 20.04 LTS already comes with it):#$ sudo apt install python3.8$ sudo apt install python3-pip#-----------------------------------------------------------##14-step: Mosquitto Installation:$ sudo apt-get update$ sudo apt-get install mosquitto mosquitto-clients
# Mosquitto Control cmds:# *****************************************************# Mosquitto init/stop/restart/status:$ sudo service mosquitto start$ sudo service mosquitto stop$ sudo service mosquitto restart$ sudo service mosquitto status##15-step: Now Download and Install
# Filezilla # https://filezilla-project.org/
# Configure it:
click site manager > new site > name: ubuntu_20_aws > SFTP > user: ubuntu > load keys .ppk file
Edit > Setting > SFTP > Add key file button
File > Site manager > ConnectType: Remote site: /var/www/htmlTo test: save index.php (any content) file and past to public directory
$ 54.149.192.190/index.phpThere you have it!In the next Episode let's finally upload letsEncrypt certs:)#-----------------------------------------------------------
Related Posts
00#Episode — AWS Essentials — Intro to AWS — AWSSeries
01#Episode — AWS — Login to Ubuntu 20 — Access Remote Ubuntu via PuTTY SSH Session — AWSSeries
02#Episode — AWS — LAMP — Prep our Remote Ubuntu to Run an MQTT Broker — AWSSeries (this one)
03#Episode — AWS — IP Plus DNS — How to Link Your Sub/Domain Name With Your AWS Instance Running Ubuntu — AWSSeries
04#Episode — AWS — LetsEncrypt — How To Installing the TLS / SSL LetsEncrypt Certificate on Remote Ubuntu Server 20.04 — AWSSeries
05#Episode — Soon… Be tuned!:)
Credits & References
Microgênios — Treinamento em Sistemas Embarcados — Microchip Regional Partner — Microchip Certified Brazilian Training Education Startup & a Simplício-owned enterprise o/
AWS Essentials — Learn from AWS technical instructors about the AWS Platform, global infrastructure, security, and the core services by Udemy
This course is delivered by actual AWS technical instructors who teach fundamental and advanced AWS courses around the globe. In this course, you will learn essential concepts of the AWS global infrastructure, platform, and core services, so that you can begin, or, continue your journey of growing your business using AWS Cloud technology. We encourage your participation on the discussion board and feel free to ask any questions about the course or AWS certification.
AWS Documentation by Amazon
Apache The Definitive Guide, 3rd Edition by O’Reilly’s CD bookshelves
At this point and time, I just want to say thank you for sticking along with Jungletronics & Kidstronics and I’m hoping you’ve learned a lot from it as well as have had a good time as much as I had; so just a quick bye: Happy New 2021 Year! Here Comes The Sun!