How to Install SilverStripe on Debian 8

 In Dedicated, VPS, Web

1. Login via SSH and Update the System

Make sure your package list and the OS packages are up to date by running the following commands:

sudo apt-get update
sudo apt-get upgrade

2. Download Latest Nginx Version

To install the latest Nginx version from the official Nginx repository, edit the ‘/etc/apt/sources.list’ file:

sudo vi /etc/apt/sources.list

Add the following lines:

deb http://nginx.org/packages/debian/ jessie nginx
deb-src http://nginx.org/packages/debian/ jessie nginx

3. Install MySQL Server

sudo apt-get install mysql-server

Stop and remove Apache service:

sudo service apache2 stop
sudo apt-get remove apache2

4. Install Nginx

Install Nginx on your virtual server:

wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
sudo apt-get update
sudo apt-get install nginx

5. Configure Nginx

Configure Nginx to start on boot:

sudo update-rc.d -f nginx defaults

6. Install PHP and PHP Modules

Install PHP and PHP modules required by SilverStripe CMS:

sudo apt-get install php5 php5-cli php5-fpm php5-tidy php5-curl php5-mysql php5-gd php5-mcrypt php5-imap mcrypt

7. Download, Install and Configure SilverStripe CMS

Get the latest version of SilverStripe CMS available at http://silverstripe.org/download to a directory of your virtual server and extract it using the following commands:

sudo apt-get install wget unzip
cd /opt/
wget https://silverstripe-ssorg-releases.s3.amazonaws.com/sssites-ssorg-prod/assets/releases/SilverStripe-cms-v3.4.0.zip
mkdir -p /var/www/html/silverstripe
unzip SilverStripe-cms-v3.4.0.zip -d /var/www/html/silverstripe

Create a new Nginx configuration file and add the following virtual block for your domain name:

vi /etc/nginx/conf.d/your-domain.com.conf

Add the following lines:

server {
    listen 80;  

    server_name your-domain.com www.your-domain.com;
    root /var/www/html/silverstripe;

    if ($http_x_forwarded_host) {
        return 400;
    }

    location / {
        try_files $uri /framework/main.php?url=$uri&$query_string;
    }

    error_page 404 /assets/error-404.html;
    error_page 500 /assets/error-500.html;

    location ^~ /assets/ {
        sendfile on;
        try_files $uri =404;
    }

    location ~ /framework/.*(main|rpc|tiny_mce_gzip)\.php$ {
        fastcgi_keep_conn on;
        fastcgi_index  index.php;
        fastcgi_pass   127.0.0.1:9000;        
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    location ~ /(mysite|framework|cms)/.*\.(php|php3|php4|php5|phtml|inc)$ {
        deny all;
    }

    location ~ /\.. {
        deny all;
    }

    location ~ \.ss$ {
        satisfy any;
        allow 127.0.0.1;
        deny all;
    }

    location ~ web\.config$ {
        deny all;
    }

    location ~ \.ya?ml$ {
        deny all;
    }

    location ^~ /vendor/ {
        deny all;
    }

    location ~* /silverstripe-cache/ {
        deny all;
    }

    location ~* composer\.(json|lock)$ {
        deny all;
    }

    location ~* /(cms|framework)/silverstripe_version$ {
        deny all;
    }

    location ~ \.php$ {
        fastcgi_keep_conn on;
        fastcgi_index  index.php;
        fastcgi_pass   127.0.0.1:9000;        
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
        fastcgi_buffer_size 32k;
        fastcgi_busy_buffers_size 64k;
        fastcgi_buffers 4 32k;
    }
}

Do not forget to replace your-domain.com with your actual domain name. Then, delete the ‘default’ Nginx configuration file:

rm /etc/nginx/conf.d/default.conf

Open the ‘/etc/php5/fpm/pool.d/www.conf’ file and change the ‘listen’ variable.

Change:

listen = /var/run/php5-fpm.sock

to

listen = 127.0.0.1:9000;

Edit the ‘/etc/php5/fpm/php.ini’ configuration file:

vi /etc/php5/fpm/php.ini

Add/modify the following settings:

safe_mode = Off
magic_quotes_gpc = Off
memory_limit = 128M
date.timezone = "America/Chicago"

The web server user (www-data) needs to be able to write to files and directories inside the ‘/var/www/html/silverstripe’ directory, so it can easily be accomplished by executing the following command:

sudo chown www-data:www-data -R /var/www/html/silverstripe/

8. Test Nginx

Test the Nginx configuration:

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

If test is successful, restart php5-fpm and Nginx services for the changes to take effect:

sudo service php5-fpm restart
sudo service nginx restart

9. Create New Database

SilverStripe CMS requires a database to work as this is where data is saved, so create a new MySQL database:

mysql -u root -p
mysql> create database ssdb;
mysql> GRANT ALL PRIVILEGES ON ssdb.* TO 'ssuser'@'localhost' IDENTIFIED BY 'Y0UR-PASSW0RD';
mysql> flush privileges;
mysql> quit

Open http://your-domain.com/ using your favorite web browser and follow the easy instructions, i.e. enter the following:

Database server: MySQL 5.0+ (using MySQLi)
Database username: ssuser
Database password: Y0UR-PASSW0RD
Databasename: ssdb

Then, click ‘Re-check requirements’ and if everything is OK, enter the administrator email address and password and click ‘Install SilverStripe’.

You should remove install.php from the SilverStripe install for security reasons:

rm /var/www/html/silverstripe/install.php

10. Configure SilverStripe in Web Browser

Once installed, log in to the administrator back-end at http://your-domain.com/admin and configure SilverStripe CMS according to your needs.

That is it. The SilverStripe CMS installation is now complete.

Recommended Posts

Start typing and press Enter to search