Apache 2



Requirements

Before going through this tutorial, I recommend you to setup:



Installation

Apache 2

This will install web server + PHP + Perl + all required libraries.

Apache2 core

apt-get install apache2 apache2-utils ssl-cert

Since Ubuntu 16.04 apache2-mpm-prefork is not required

Additional libraries

apt-get install libapache2-mod-fcgid libruby


Doc

apt-get install apache2-doc


Perl

apt-get install libapache2-mod-perl2 libapache2-mod-perl2-doc


SNMP

Sometimes you might encounter some SNMP errors on latest Debian based distributions.

In that case you have to install a new package and run it.

apt-get install snmp-mibs-downloader
download-mibs


source: http://www.podciborski.co.uk/miscellaneous/snmp-cannot-find-module/


PHP 7

2016-09: Even though PHP7 has been released in 2015 it is not in the official repositories because it is not 100% backward compatible with PHP5. As it is not in the repositories you must install all applications manually (PHPMyAdmin, etc.)


The following instructions are based on https://www.justegeek.fr/installer-php-7-0-apache2-debian-8/ && http://www.configserverfirewall.com/ubuntu-linux/install-php-7-on-ubuntu-14/


2016-12: PHP 7.0 is available in UBUNTU 16.10 and later


(Ubuntu 16.04) PHP7 repository

Add a new repository:

DEBIAN

echo "deb http://packages.dotdeb.org jessie all" > /etc/apt/sources.list.d/dotdeb.list
wget https://www.dotdeb.org/dotdeb.gpg && apt-key add dotdeb.gpg
apt-get update

UBUNTU SERVER

add-apt-repository ppa:ondrej/php-7.0
apt-get update


Installation

Remove PHP5 packages, if any:

apt-get --purge remove php5*


Install core packages

apt-get install php7.2 
apt-get install php7.2-cli
apt install php libapache2-mod-php

# Debug symbols
apt-get install php7.2-dev


Modules PHP7

apt-get install php7.2-cgi 
apt-get install php7.2-opcache
apt-get install php7.2-gd 
apt-get install php7.2-bz2 
apt-get install php7.2-curl 
apt-get install php7.2-xmlrpc php7.2-xsl 
apt-get install php7.2-soap
apt-get install php7.2-json 
apt-get install php7.2-mysql 
apt-get install php7.2-memcached
apt-get install php7.2-imap 
apt-get install php7.2-mbstring

(i) do NOT install php7.0-snmp because it generates a lot of error, especially on AMAZON EC2.

Utility

apt-get install php-pear

Configuration

Edit PHP config file:

vim /etc/php/7.2/cli/php.ini
  • Let CGI behaves like before: set cgi.fix_pathinfo=1
  • Adjust file upload size upload_max_filesize = 32M
  • Adjust post size post_max_size = 32M
  • Adjust time zone date.timezone = Europe/Paris
  • Save path: session.save_path = "/tmp"

Check PHP version and configuration

To ensure PHP 7.0 is well-installed just type:

php -v

PHP 5

2016-09: PHP5 is the only version in the OFFICIAL repositories.

Core

apt-get install libapache2-mod-php5 php5 php5-common


Modules PHP5

apt-get install php5-cli php5-cgi
apt-get install php5-curl php5-xmlrpc php5-xsl php5-dev php-pear 
apt-get install php5-mysql 
apt-get install php5-memcache php5-xcache
apt-get install php5-mhash php-auth php5-mcrypt mcrypt
apt-get install php5-imap 
apt-get install php5-snmp


Image Magick

#PHP 5
apt-get install php5-gd php5-imagick imagemagick

#PHP 7
apt-get install php7.2-gd php-imagick imagemagick

Configuration

Edit PHP config file:

#PHP 5
vim /etc/php5/apache2/php.ini

#PHP 7.2
vim /etc/php/7.2/apache2/php.ini

Add / uncomment the following lines in Dynamic extensions area

// PHP 5  (~ line 865)
extension=mysql.so
extension=gd.so


// PHP 7  (~ line 904)
extension=mysqli
extension=gd2


!! Note this is NOT required on Ubuntu 14.04 because these modules are enabled by default !!

Firewall

see Firewall INPUT filters#Web server

Restart the firewall

/etc/init.d/firewall restart


Test your installation

Restart the Apache2 server

service apache2 restart


Create a simple PHP script

vim /var/www/html/phpinfo.php

Put the following:

<?php
phpinfo();
?>

Adjust rights

chown www-data:www-data /var/www/html/phpinfo.php
chmod 755 /var/www/html/phpinfo.php


You can now test your installation by going to 'http://localhost/phpinfo.php' or 'http://myServer/phpinfo.php'. You should see the default page.