Wordpress Multisite

From SME Server
Revision as of 22:14, 22 June 2013 by Calisun (talk | contribs)
Jump to navigation Jump to search

This is a copy of instructions originally created and published by Calisun: http://wiki.contribs.org/User_talk:Calisun

Introduction

Following Step-by-Step instructions are for installing wordpress in an i-Bay of SME 8.x


 Notice: When installing ANY web application in an iBay of the SME server, there is always a danger of internal network
 users changing (intentionally or accidentally) files in the application iBay. 
 If there is a possible security issue with internal network users, it is recommended to install wordpress 
 contribution from here: http://wiki.contribs.org/Category:Contrib
 If there is no internal network user security issue, or the server only has admin access, you may continue.
 Administrators should make use of Groups to only allow authorized users to have access to ibay files via samba/Windows
 filesharing.

PART ONE:

A) Wordpress install in an iBay of SME server:


A1) Create an iBay in which you wish to install wordpress on.

When creating the iBay in server-manager:

   * - Change the group from Admin to everyone. - This will allow users to create blogs and post pictures without having permission issues.
   * - Change User access to Write=group, Read=everyone
   * - Under Public access via web, choose Entire internet without password.
   * - Enable Execution of dynamic content. 


A2) Issue a following command to enable PHP temporary upload folder in that iBay.(Change "iBay" to the name of your ibay and remove quote marks)

  db accounts setprop "iBay" PHPBaseDir /home/e-smith/files/ibays/"iBay":/tmp
  signal-event ibay-modify "iBay"


A3) Issue a following command to enable Symlinks in that iBay.(Change "iBay" to the name of your ibay and remove quote marks)

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

A4) Create mysql database and database user for wordpress to use. Make sure database user has all the privileges to the database you have created. For security reasons, allow access to the database from localhost only.

A5) Download latest version from www.wordpress.org to your computer and unzip it. Upload unzipped wordpress to desired "iBay"/html


A6) In the SME admin panel, Create a new domain and point it to the iBay where the wordpress is installed. (Assuming you have already created a domain with domain registrar and pointed it to your server IP)


A7) Point your web browser to your domain and go through the installation process.

   * If you want to have a single blog (personal blog) on one domain, you are done. 


B) Enable a Multisite:


B1) Open wp-config.php and add the folowing code:


  define('WP_ALLOW_MULTISITE', true);

- just above

  define('DB_NAME', .....


B2) Log into your wordpress Dashboard

Under: Tools, Network


Choose desired settings and click on Install

   * NOTE- By default SME Server does not support Wildcard Subdomains, so you will need to choose Subfolder. 

If you want or need to use a Subdomain, you will need to create a custom template for SME Server to support Wildcard Subdomains. For instructions on how to create custom template for Wildcard Subdomains, go below to PART TWO for instructions.


B3) After you click install, you will be taken to a "Create a Network of WordPress Sites" screen

Make sure you follow ALL 3 steps.

   * If you are planning to run several blogs under one domain, than you are done. 


C) To run several Domains on one wordpress install:


C1) You will need to install Wordpress Domain Mapping plugin.

Find it here: http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/

Just follow installation instructions from the plugin download site.


C2) Create all your domains in the SME server-manager and point them to the iBay where you installed wordpress.

C3) create new sites in wordpress dashboard that will handle new domains created in step 2

SME Specific Change:

SME Server and wordpress use the same name "files" for totally different folders, and that is causing issues displaying images inside blogs that use Domain mapping. In order for the images to show up correctly, we need to create a custom template to fix the conflict. Go below to PART TWO for instruction on how to create the custom template.

PART TWO:

Custom Templates


1) Enable Wildcard Subdomains

Inside following folder location:

  /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts/

Create a text file named:

  03ServerAlias

Contents of the text file:

  ServerAlias *.{$virtualHost}


To activate the custom template:

  signal-event post-upgrade; signal-event reboot


2) Fix Image display problem.

Inside following folder location:

  /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts/

Create a text file named:

  20IbayContent

Contents of the text file:


  {
      use esmith::AccountsDB;
      my $accounts = esmith::AccountsDB->open_ro;
  
      use esmith::DomainsDB;
      my $domains = esmith::DomainsDB->open_ro;
  
      $OUT = "";
  
      my $ibay = $virtualHostContent;
      my $basedir = "/home/e-smith/files/ibays/$ibay";
      my $cgiBin = $accounts->get_prop($ibay, "CgiBin") || "";
  
      $OUT .= "    DocumentRoot         $basedir/html\n";
  
      if ($cgiBin)
      {
  	$OUT .= "    ScriptAlias /cgi-bin $basedir/cgi-bin\n";
      }
      else
      {
  	$OUT .=
  		"    # To add cgi-bin ScriptAlias for this i-bay, run:\n"
  	      . "    #   /sbin/e-smith/db accounts setprop $ibay CgiBin "
  			    . "enabled\n"
  	      . "    #   /sbin/e-smith/signal-event console-save\n";
      }
      $OUT .= "#    Alias       /files   $basedir/files\n";
      
      if (($domains->get_prop($virtualHost, 'SystemPrimaryDomain') || 'no')
           eq 'yes')
      {
  	my @ibays = $accounts->ibays;
  	foreach my $ibay (@ibays)
  	{
  	    my $key = $ibay->key;
  	    next if $key eq $virtualHostContent;
  	    my $basedir = "/home/e-smith/files/ibays/$key";
  	    my $cgiBin = $ibay->prop("CgiBin") || "";
  	    my $name = $ibay->prop("Name") || "";
  	    
  	    $OUT .= "\n";
  	    $OUT .= "    # $key ibay ($name)\n";
  	    $OUT .= "\n";
  	    
  	    if ($cgiBin)
  	    {
  		$OUT .= "    ScriptAlias /$key/cgi-bin $basedir/cgi-bin\n";
  	    }
  	    else
  	    {
  		$OUT .= 
  		    "    # To add cgi-bin ScriptAlias for this i-bay, run:\n"
  		    . "    #   /sbin/e-smith/db accounts setprop $key CgiBin "
  				. "enabled\n"
  		    . "    #   /sbin/e-smith/signal-event console-save\n";
  	    }
  
  	    $OUT .= "    Alias       /$key/files   $basedir/files\n";
  
  	    # Make sure this one is last since it's a prefix of the above
  	    # aliases. If we put it first, it would get expanded before the
  	    # other aliases, creating problems.
  
  	    $OUT .= "    Alias       /$key        $basedir/html\n";
  	}
  	$OUT .= "    # No ibays in system\n" unless @ibays;
      }
  }
  
  

To activate the custom template:

  signal-event post-upgrade; signal-event reboot


Good Luck

And have fun with your new Wordpress install.