Re: Wordpress Multiple Blog Configuration
On 20/08/05, Chris Purves <chris.purves@gmail.com> wrote:
> Hi,
>
> I just installed Wordpress and got it running. In the README.Debian
> file there's a mention that the Debian configuration can support
> multiple blogs, but no instructions as how to accomplish that.
>
> From README.Debian:
>
> >>>
>
> #### A little more about the (multiple blog) configuration
>
> The default wp-config.php searches for a (mysql) configuration filename based
> on the blog's host. This allows you to host more than one blog on a Debian
> system.
>
> <<<
>
> The little more is all there is as far as I can tell. Any help would
> be appreciated. Perhaps I would be better off with the multiuser
> edition (not presently in Debian archive)?
>
> Thanks.
Okay, I got it working. Here is what I did:
Apache2 setup:
I renamed /etc/apache2/sites-enabled/000-default to 002-default,
commented out the NameVirtualHost line and changed the <VirtualHost *>
line to <VirtualHost *:80>. I also added a line "ServerName
www.mysite.com". First few lines:
#NameVirtualHost *
<VirtualHost *:80>
ServerName www.mysite.com
ServerAlias mysite.com
ServerAdmin webmaster@localhost...
Then I added a file /etc/apache2/sites-enabled/001-wordpress (taken
from /usr/share/doc/wordpress/examples/apache.conf), containing
NameVirtualHost *:80
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot /srv/www/%0
Options All
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
Then I made sure the vhost_alias.load was included in mods-enabled.
This allowed the site to work as before at www.mysite.com (and
mysite.com), but anything of the form something.mysite.com would be
handled by the 001-wordpress file. For each blog I create a softlink
at /srv/www pointing to /usr/share/wordpress.
MySQL:
The /usr/share/doc/wordpress/examples/setup-mysql script was okay, but
it created a new database for every user. I decided that I wanted to
have only one database with different table name prefixes. What I
ended up doing was running the scipt once to create the initial
database, then deleting all the tables and and modifying the config
file created by the script.
/etc/wordpress/config-person1.mysite.com.php looks like this:
<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'ak2k3WE');
define('DB_HOST', 'localhost');
$table_prefix = 'wp_person1_';
$server = DB_HOST;
$loginsql = DB_USER;
$passsql = DB_PASSWORD;
$base = DB_NAME;
?>
When I want to add a new user I need only create a new link in
/srv/www, for example /srv/www/person2.mysite.com to point to
/usr/share/wordpress, then copy config-person1.mysite.com.php to
config-person2.mysite.com.php and change $table_prefix from
wp_person1_ to wp_person2_.
Final Considerations:
Now I have a setup that allows me to create a new blog by simply
adding a softlink and copying a file and changing a single parameter.
I don't have to restart apache or run any scripts and I don't have to
worry about an endless number of databases being created.
Problems: having one database may be a bit of a security risk and
also if the database is corrupted, it will affect all users, not just
one. This is acceptable for me, as I plan to have frequent backups of
the file.
Also, allowing uploading is a bit of a problem. I can set up each
user to point to a different place on the server to store their files,
but if they know the location of someone elses files, they could
change their settings and gain access. I don't see this as a big
problem, but it's still something I would prefer to do without.
--
Take care, eh.
Chris
Reply to: