Support #573
Updated by Daniel Curtis almost 10 years ago
{{>toc}} This is a simple guide for setting up Piwik on a LAMP server on Debian 7 (wheezy). h1. Prepare The Server This guide is assumed that a +Bare Debian install with only SSH Server+ access, a user that has sudo access. * Obtain a root shell and upgrade the server: <pre> sudo -s apt-get update && apt-get upgrade </pre> * Set the hostname in the hosts: <pre> vi /etc/hosts </pre> #* And add/modify the following: <pre> 127.0.1.1 piwik.example.com piwik </pre> * And also edit the hostname file: <pre> vi /etc/hostname </pre> #* And add/modify the following: <pre> piwik </pre> * Reboot to apply the hostname settings: <pre> reboot </pre> h1. Install Apache 2 * Install apache: <pre> apt-get install apache2 </pre> h2. Configure Apache 2 * Edit the default apache2 Vhost config: <pre> vi /etc/apache2/sites-available/default </pre> #* And add/modify the following VirtualHost block: <pre> <VirtualHost *:80> ServerName piwik.example.com DocumentRoot /var/www <Directory /var/www> Options -Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> </pre> #* *NOTE*: Make sure AllowOverride is set to ALL, or else the .htaccess file will not work. * Restart apache2: <pre> service apache2 restart </pre> * Now navigate to http://piwik.example.com and the default *It Works!* should be displayed. h2. Securing Apache with SSL * Install openssl: <pre> apt-get install openssl </pre> * Generate a strong SSL key and a CSR to send for signing by a CA: <pre> mkdir /etc/apache2/ssl && cd /etc/apache2/ssl openssl req -sha512 -out piwik.example.com.csr -new -newkey rsa:4096 -nodes -keyout piwik.example.com.key </pre> * Make sure to securely copy the SSL certificate to *www.example.com.crt* * Edit the apache2 default ssl Vhost config file: <pre> vi /etc/apache2/sites-available/default-ssl </pre> #* And Add the following: <pre> <VirtualHost *:443> ServerName piwik.example.com DocumentRoot /var/www <Directory /var/www> Options FollowSymLinks AllowOverride All Require all granted </Directory> SSLEngine on SSLCertificateFile /etc/apache2/ssl/piwik.example.com.crt SSLCertificateKeyFile /etc/apache2/ssl/piwik.example.com.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost> </pre> * Change the SSL certificate and key ownership to the apache user: <pre> chown www-data:www-data /etc/apache2/ssl/piwik.example.com.{crt,key} chmod o-rwx /etc/apache2/ssl/piwik.example.com.key </pre> * Enable the ssl apache modules: <pre> a2enmod ssl </pre> h3. Forcing SSL on a Website * Enable forced SSL connection by setting the two lines from earlier in the @.htaccess@ file. Open the file for editing: <pre> vi /var/www/.htaccess </pre> #* Look for the following two lines, and remove the @#@ characters before them: <pre> RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </pre> * Restart apache2: <pre> service apache2 restart </pre> * Now the website will be accessible from https://piwik.example.com h1. Install MySQL 5.5 * Install MySQL server and client: <pre> apt-get install mysql-server mysql-client </pre> #* *NOTE*: During the setup a prompt will appear to set the *root* MySQL user password. Set a strong password and do not forget it. h2. Configure a new MySQL database * Log into the MySQL console: <pre> mysql -h localhost -u root -p </pre> #* Create the *piwikuser* user with the *SuperSecretPassword* password and the *piwikdb* database: <pre> CREATE USER 'piwikuser'@'localhost' IDENTIFIED BY 'SuperSecretPassword'; CREATE DATABASE IF NOT EXISTS `piwikdb` CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON `piwikdb`.* TO 'piwikuser'@'localhost'; flush privileges; exit </pre> h1. Install PHP 5 * Install PHP 5 with the apache-php module and a few common PHP extensions: <pre> apt-get install php5 php5-dev libapache2-mod-php5 curl php5-cli php5-mysql php5-mcrypt php5-gd php5-curl </pre> #* PHP has many extensions, run the following to get a list of all available extensions: <pre> apt-cache search php5- </pre> * Restart apache for the php module to take effect: <pre> service apache2 restart </pre> h1. Install Piwik * Install git <pre> apt-get install git </pre> * Install Piwik: <pre> rm /var/www/* cd /var git clone https://github.com/piwik/piwik /var/www </pre> * Install composer: <pre> cd /var/www curl -sS https://getcomposer.org/installer | php php composer.phar install </pre> * Set correct permissions: <pre> chown -R www-data:www-data /var/www chmod -R 0755 /var/www/tmp chmod -R 0755 /var/www/tmp/assets/ chmod -R 0755 /var/www/tmp/cache/ chmod -R 0755 /var/www/tmp/logs/ chmod -R 0755 /var/www/tmp/tcpdf/ chmod -R 0755 /var/www/tmp/templates_c/ www </pre>