LAMP (software bundle)

From David's Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
\( \newcommand{\P}[]{\unicode{xB6}} \newcommand{\AA}[]{\unicode{x212B}} \newcommand{\empty}[]{\emptyset} \newcommand{\O}[]{\emptyset} \newcommand{\Alpha}[]{Α} \newcommand{\Beta}[]{Β} \newcommand{\Epsilon}[]{Ε} \newcommand{\Iota}[]{Ι} \newcommand{\Kappa}[]{Κ} \newcommand{\Rho}[]{Ρ} \newcommand{\Tau}[]{Τ} \newcommand{\Zeta}[]{Ζ} \newcommand{\Mu}[]{\unicode{x039C}} \newcommand{\Chi}[]{Χ} \newcommand{\Eta}[]{\unicode{x0397}} \newcommand{\Nu}[]{\unicode{x039D}} \newcommand{\Omicron}[]{\unicode{x039F}} \DeclareMathOperator{\sgn}{sgn} \def\oiint{\mathop{\vcenter{\mathchoice{\huge\unicode{x222F}\,}{\unicode{x222F}}{\unicode{x222F}}{\unicode{x222F}}}\,}\nolimits} \def\oiiint{\mathop{\vcenter{\mathchoice{\huge\unicode{x2230}\,}{\unicode{x2230}}{\unicode{x2230}}{\unicode{x2230}}}\,}\nolimits} \)

How to setup a lamp stack using Ubuntu.
Linux, Apache, MariaDB, PHP

Setup

Install Ubuntu

Download and install the latest Ubuntu LTS.

If you need VNC, I recommend downloading Ubuntu Desktop and installing x11vnc, lightdm, and cinnamon.
If you don't need a desktop or are low on storage, you can just install Ubuntu Server.

Note
  • Other popular linux distros for servers are Debian and CentOS.
    • See Linux distributions for more info.
    • I do not have much experience with these RHEL distros: Fedora, CentOS.

Install Apache

See [1]

sudo apt update
sudo apt install apache2

# Enable some basic modules
sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2enmod headers
sudo a2enmod proxy
sudo a2enmod proxy_wstunnel
sudo a2enmod deflate

Installing PHP

Installing php 7.4 on 20.04
sudo apt update
sudo apt install php7.4 php7.4-fpm

# Install some common extensions
sudo apt install php7.4-{apcu,bcmath,cli,common,curl,dev,gd,gmp,imagick,imap,intl,mysql,xml,xmlrpc,mbstring,opcache,redis,soap,zip} -y

# Setup Apache to use php7.4-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.4-fpm
sudo a2dismod php7.4
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
Important Notes
  • Always use a version when installing things if you don't want things to break when you do updates
    • E.g. php7.4-common instead of php-common
  • For Ubuntu 18.04, add the following repository
    sudo apt install software-properties-common && sudo add-apt-repository ppa:ondrej/php

Installing MariaDB

See https://downloads.mariadb.org/mariadb/repositories/

sudo apt-get install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.4/ubuntu bionic main'

sudo apt update
sudo apt install mariadb-server

Securing for Production

MariaDB and MySQL provide a bash command mysql_secure_installation.
This command does the following:

  • Sets a root password
  • Remove anonymous users
  • Disallow root login remotely
  • Removes test databases
sudo mysql_secure_installation

Misc

  • Install nodejs via nvm

Firewall

If you're using a VPS or computer connected directly to the internet, you will want to install a firewall.
See UbuntuWiki: UncomplicatedFirewall
See Digital ocean ufw essentials

sudo ufw allow ssh/tcp
sudo ufw logging on
sudo ufw enable
sudo ufw status

You should get an output like:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)

To enable certain ports:

ufw allow 80/tcp
ufw allow 443/tcp