Apache, PHP & MySQL Ubuntu 14.04

apt-get update; apt-get upgrade -y; apt-get install apache2 apache2-utils openssl openssl-blacklist openssl-blacklist-extra mysql-server php5 libapache2-mod-php5 php5-mysql -y

Configuration

  • Nommer le serveur et activer l'URL Rewriting :

echo ServerName localhost >> /etc/apache2/apache2.conf
a2enmod rewrite

vi /etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>

        ServerAdmin     webmaster@localhost
        DocumentRoot    /var/www/html

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

        ErrorLog        ${APACHE_LOG_DIR}/default.log
        CustomLog       ${APACHE_LOG_DIR}/default.log combined

</VirtualHost>

  • Redémarrer :

/etc/init.d/apache2 restart

  • A ce stade, il est possible de se connecter au serveur.

tailf /var/log/apache2/default.log

Sécurisation

Activation SSL

  • Préparation du dossier qui va recevoir les certificats :

mkdir -p /etc/apache2/ssl

  • Fichier de configuration du VHost :

vi /etc/apache2/sites-available/chronos-ssl.conf

<VirtualHost 192.168.1.10:80>
        ServerName              chronos.test.lan
        Redirect                / https://chronos.test.lan/
        ErrorLog                /var/log/apache2/server.log
        CustomLog               /var/log/apache2/server.log combined
</VirtualHost>
<VirtualHost 192.168.1.10:443>
        ServerName              chronos.test.lan
        DocumentRoot            /var/www
        ErrorLog                /var/log/apache2/chronos.log
        CustomLog               /var/log/apache2/chronos.log combined

        SSLEngine               on
        SSLCertificateFile      /etc/apache2/ssl/chronos.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/chronos.key
</VirtualHost>

  • Génération du certificat :

echo -n "Nom du serveur : " ; read server ; openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -out /etc/apache2/ssl/$server.crt -keyout /etc/apache2/ssl/$server.key

Nom du serveur : chronos Obligatoire pour générer les certificats
Country Name (2 letter code) [AU]: fr facultatif
State or Province Name (full name) [Some-State]: idf facultatif
Organization Name (eg, company) [Internet Widgits Pty Ltd]: cymea facultatif
Organizational Unit Name (eg, section) []: test facultatif
Common Name (e.g. server FQDN or YOUR name) []: chronos.test.lan obligation de mettre en cohérence le nom du serveur avec son @IP
Email Address []: toto@test.lan facultatif
  • Activation du support ssl et du virtual-host default-ssl :

a2enmod ssl
a2ensite {default-ssl.conf,chronos-ssl.conf}

/etc/init.d/apache2 restart

Redirection du port 80 vers 443 avec un .htaccess

  • Ecrire un fichier .htaccess à la racine du site et saisir :

RewriteEngine On 
RewriteCond  %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domaine.tld [L,R]

PHPMyAdmin

  • Installation du paquet :

apt-get update; apt-get upgrade -y; apt-get install phpmyadmin -y