Drupal

From SME Server
Jump to navigationJump to search
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.
PythonIcon.png Skill level: medium
The instructions on this page require a basic knowledge of linux.


This guide shows you how to correctly install Drupal ( http://www.drupal.org ) into your Primary ibay on SME Server 8.

Setting up PHP to work correctly for Drupal

db accounts setprop Primary PHPBaseDir /home/e-smith/files/ibays/Primary:/tmp
signal-event ibay-modify Primary
db configuration setprop php MemoryLimit 128M
db configuration setprop php PostMaxSize 112M
db configuration setprop php UploadMaxFilesize 96M
expand-template /etc/php.ini 
sv t httpd-e-smith

Setting up the overrides for Apache

db accounts setprop Primary AllowOverride all
db accounts setprop Primary FollowSymLinks enabled
db accounts setprop Primary Indexes disabled
signal-event ibay-modify Primary

Setting up ftp

In order to be able to ftp new themes and modules to your Drupal installation, you need to go to the server-manager panel in smeserver and:

  • Create a user from the user panel and reset their password
  • Enable ftp from local networks (I only allow administration of websites from the local network as a matter of security principle!)
  • Give the user you just created the correct access permissions using the fix_permissions.sh script from http://drupal.org/node/244924 (Note: the contents of this file is at the bottom of this page)

For example, say you created a user called fred, then in order for fred to be able to ftp the required files via the Drupal interface, then you give them permission to do so like this:

bash fix-permissions.sh /home/e-smith/files/ibays/Primary/html fred

Where fred is the user account you will use in Drupal to ftp the files (for example installing a new theme) and www is the account that smesever runs the web server under.

Lastly you have to modify the /etc/proftpd.conf file and comment out the "DefaultRoot" line ( I used the nano editor for this ):

cp /etc/e-smith/templates/etc/proftpd.conf/05DefaultRoot /etc/e-smith/templates-custom/etc/proftpd.conf/
nano /etc/e-smith/templates-custom/etc/proftpd.conf/05DefaultRoot

Comment out the DefaultRoot like:

#DefaultRoot            /home/e-smith/files

Now save the file by pressing the control and o keys together, then exit nano by pressing the control and the x keys together.

Then you need to expand the template:

expand-template /etc/proftpd.conf

To confim this:

config show ftp

Should return:

ftp=service
   LoginAccess=private
   TCPPort=21
   access=private
   status=enabled

Finally, you are ready to follow the install instructions for Drupal

Now SME Server is all set up ready for you to follow the Drupal installation guide at: http://drupal.org/documentation/install


This has been tested on 8Beta6 and the 8Beta7 release.

Note: You may need to delete the index.htm file in your Primary ibay so that Drupal's index.php file is picked up.

As a footnote, I would recommend only enabling ftp via the server-manager panel just when you need it so that it is not turned on all the time!


For your convenience, I have reproduced the contents of fix_permissions.sh:

#!/bin/bash

path=${1%/}
user=${2}
group="www"
help="\nHelp: This script is used to fix permissions of a drupal installation\nyou need to provide the following arguments:\n\t 1) Path to your drupal installation\n\t 2)
Username o$
want to give files/directories ownership\nNote: \"www-data\" (apache default) is assumed as the group the server is belonging to, if this is different you need to modify it
manually$
script\n\nUsage: (sudo) bash ${0##*/} drupal_path user_name\n"

if [ -z "${path}" ] || [ ! -d "${path}/sites" ] || [ ! -f "${path}/modules/system/system.module" ]; then
        echo "Please provide a valid drupal path"
        echo -e $help
        exit
fi

if [ -z "${user}" ] || [ "`id -un ${user} 2> /dev/null`" != "${user}" ]; then
        echo "Please provide a valid user"
        echo -e $help
        exit
fi

cd $path;

echo -e "Changing ownership of all contents of \"${path}\" :\n user => \"${user}\" \t group => \"${group}\"\n"
chown -R ${user}:${group} .
echo "Changing permissions of all directories inside \"${path}\" to \"750\"..."
find . -type d -exec chmod u=rwx,g=rx,o= {} \;
echo -e "Changing permissions of all files inside \"${path}\" to \"640\"...\n"
find . -type f -exec chmod u=rw,g=r,o= {} \;

cd $path/sites;

echo "Changing permissions of \"files\" directories in \"${path}/sites\" to \"770\"..."
find . -type d -name files -exec chmod ug=rwx,o= '{}' \;
echo "Changing permissions of all files inside all \"files\" directories in \"${path}/sites\" to \"660\"..."
find . -name files -type d -exec find '{}' -type f \; | while read FILE; do chmod ug=rw,o= "$FILE"; done
echo "Changing permissions of all directories inside all \"files\" directories in \"${path}/sites\" to \"770\"..."
find . -name files -type d -exec find '{}' -type d \; | while read DIR; do chmod ug=rwx,o= "$DIR"; done