Multiple blogs on same installation

Sep 12, 2009 at 3:38 AM

I know you must be sick of been asked this question as I see it being mentioned time and time again in this forum about "Multiple blogs on same installation"

I know you have collected lots of votes for this feature in your future feature requests thread and you do have it listed in the road map.

I guess what many are wanting to know is this something you are working on and is there a time frame for this feature?

 You have developed some really great software by the way

Sep 13, 2009 at 8:25 PM

up

Sep 14, 2009 at 9:08 PM

up

Sep 15, 2009 at 5:18 AM
2xs wrote:

I know you must be sick of been asked this question as I see it being mentioned time and time again in this forum about "Multiple blogs on same installation"

I know you have collected lots of votes for this feature in your future feature requests thread and you do have it listed in the road map.

I guess what many are wanting to know is this something you are working on and is there a time frame for this feature?

 You have developed some really great software by the way

I would like to see the current dev plan, if it exists yet.  If I knew we/they/you were going to use SqlBlogProvider, and even integrate it into the core, I would like to help.  If there was also a way to allow mutiple blogs within a single application, that would be great too.  Should everyone just create a new branch?

If we don't know the future plans, dates, implementation, etc., we're stuck deciding whether to wait or risk going forward with an alternative branch and missing out.  Communication would be good.  I may be missing something.  I've stated recently that I spend more time modifying current BE.NET code than I ever do Blogging and I have over a dozen blogs.  1.5.1.22 is currently stable, from my perspective with SqlBlogProvider supporting all of those blogs on a single folder, with a single SQL database and schema.  The only (minor) issue is still creating multiple Web Applications and pointing them to the same folder.  I can live with that on an 8-way server with 2 GB of RAM.

Sep 16, 2009 at 1:40 AM

I am sure many including myself would be grateful for some feedback on this issue.

What is the timeline for this feature?

Coordinator
Sep 16, 2009 at 2:12 AM

I don't have any official word, but it's possible this could be worked on after the next release.

I have a BE based blogging community setup now.  In my community, I have each person's blog setup in its own application (i.e. separate web applications within the same site).  Have you considered that?  I've had this community for just about a year, and the multiple application setup has worked well.

Sep 16, 2009 at 8:27 PM

Hi Ben,

I have considered that and I am sure it works very well, BE is a great app.

It would just make it so much easier if you could run multiple blogs off the same app.

You can see in BizTron's post above, it becomes a night mare when you are running many blogs (a dozen in his case) as you have so many more apps to maintain.

Every time you have a new release you have to run the update procedures on every application.

Coordinator
Sep 17, 2009 at 8:14 AM

That's a good point.  The blogging community I have would take some extra effort to update all the individual blogs to the latest version.

After this next release, multiple blogs in the same instance may be implemented.  One other thing the team talked about doing at the same time was making BE more scalable by not storing so much data in memory at once.  There's a chance we'll try to do both of these things at the same time, since they're somewhat related.  It would be great to get both of these things done, but it can also be a little daunting in terms of the magnitude of changes to make at once.

Sep 17, 2009 at 2:53 PM

Ben, that's great.  How can we help?

Sep 17, 2009 at 6:09 PM
2xs wrote:

Every time you have a new release you have to run the update procedures on every application.

 There's a BlogEngine.Net SQL Server-specific data provider that will allow you to use multiple blogs from the same database and same files (though you still have to have them configured as separate applications in IIS). Updating is much easier in that configuration because the pain is felt only when first setting up each blog.

Jacob

Sep 18, 2009 at 2:34 AM

It is great to see all the enthusiasm to implement this feature.

I would like to help but I am afraid my skills would be more a hindrance than help.

Sep 20, 2009 at 12:03 AM

I was browsing the issuetracker section and noticed reference to Multi Blog Engine http://www.codeplex.com/multiblogengine Is this part of the same project? Are there two versions of blogengine: single blog and a multi blog branch?

Sep 20, 2009 at 1:57 AM
2xs wrote:

I was browsing the issuetracker section and noticed reference to Multi Blog Engine http://www.codeplex.com/multiblogengine Is this part of the same project? Are there two versions of blogengine: single blog and a multi blog branch?

That project is "defunct" is memory serves.  You should look deeper.  They are not related, at least not anymore.

Jacob create the SqlBlogProvider for his own reasons, but it uses Linq to SQL, necessarily .NET 3.5, and a multi-blog capability that now even includes multiple hosts per blog.  It achieves this by adding a Blogs table and associating many of the built-in tables with this table.  The end result is that I can support 16 Blogs (and growing) via one SQL DB and one application folder.  I still have to create a separate IIS application per blog, but it's purely configuration.  All of the code sits in a single folder.

Correcting THAT behaviour would require a rather invasive core architectural change.  This is what I'd like to see and the scalability that Ben pointed out.

Let me know if you need help setting up a few blogs to see how it works.  Starting from scratch is still rather easy.  I only run into problems with schema changes or breaking changes that require a complex migration.  I did one last week for 3 days, then found a bug that was introduced (or perhaps discovered) in 1.5.1.20 and fixed by the morning of my deployment.  I upgraded without a hitch later in the afternoon.

Oct 1, 2009 at 1:56 PM
Edited Oct 2, 2009 at 4:46 PM

hi,

I'm migrating from a single BlogEngine install to a two-blog install that needs to run in a VB.NET site. After setup of SQL backend I ran AddNewBlog.sql ... but now face numerous problems to get the site to launch in our web-dev WindowsServer2003/IIS 6.0/ASP2.0 environment.

First, I got an error 'BlogEngine.Core.Web.Controls.ExtensionAttribute' does not contain a constructor that takes '4' arguments (which went away after deleting the 'Port' field at the be_Blogs table, since Jacob told me the port is not required actually) ... but the web.config now hangs with:

'BlogEngine.Core.Web.Controls.ExtensionAttribute' does not contain a definition for 'Priority' and no extension method 'Priority' accepting a first argument of type 'BlogEngine.Core.Web.Controls.ExtensionAttribute' could be found (are you missing a using directive or an assembly reference?)

There seems to be a mix-up of .dll's now, because the BlogengineSQLServer v1.5\Releases\Release 1.1 ships with version BlogEngine.Core.dll v1.4.5 - I had to copy the Blogengine.core.dll from the 1.5 web release for otherwise the schema can't find the engine core

@Jacob, in your article http://theruntime.com/blogs/jacob/archive/2009/04/02/multi-blog-obsession.aspx you state to copy all the .dll's into the root /bin folder, but which version #'s? Also, what about the other files? I have with BlogengineSQLServer v1.5\Releases\Release 1.1 the following files:

BlogEngine.Core.dll v1.4.5.0 (2/20/2009)

BlogEngine.Core.pdb (2/20/2009)

BlogEngine.Core.xml (2/24/2009)

BlogEngine.SQLServer.dll v1.0.0.0 (3/4/2009)

BlogEngine.SQLServer.dll.config (2/19/2009)

BlogEngine.SQLServer.pdb (3/4/2009)

Are these the correct version's, and do they all need to be at /bin?

@BizTron, about the late fix:

I did one last week for 3 days, then found a bug that was introduced (or perhaps discovered) in 1.5.1.20 and fixed by the morning of my deployment.  I upgraded without a hitch later in the afternoon.

Is there a new version release already?

Any help with this is much appreciated!

Diego

p.s. Jacob create the SqlBlogProvider for his own reasons, but it uses Linq to SQL, necessarily .NET 3.5 

will it not work in a 2.0 environment? The live-site will have 3.5, but our dev-server doesn't

I've got the same error:

CS1061: 'BlogEngine.Core.Web.Controls.ExtensionAttribute' does not contain a definition for 'Priority' and no extension method 'Priority' accepting a first argument of type 'BlogEngine.Core.Web.Controls.ExtensionAttribute' could be found (are you missing a using directive or an assembly reference?)

.. when running it on my local machine in VS2008 w. framework 3.5 ...

Oct 3, 2009 at 12:33 AM

Hi all

I would like to add my voice to the chorus. I have been looking around for months now for a multi-blog server that uses the asp.net membership framework. So far I have found SubText that uses its own security, or BlogEngine that natively supports only one blog at a time. I also need the ability to create different "looks" for each blog, which is do-able but problematic in Subtext. I have not tried this with BE simply because I could not get a multi-blog version working.

So I would be cheering loud and long for the multi-blog feature with support for the asp.net membership framework.

Thanks

Richard

Dec 16, 2009 at 1:40 PM

Hello

i use iis6,0, i need BE with "Multiple blogs on same installation", does the next release support it?

Feb 9, 2010 at 9:36 PM

ive not tried, but if youre using SQL server, could you use a schema other than dbo?? looking at the code, nothing explicity references the dbo schema, so you could setup multiple blogs using a schema per blog.

eg:

blog1.be_pages

blog2.be_pages

 

etc etc...

not sure its much better than using a different table prefix, but should make the query browser cleaner when you login as you will only see one set of blog engine tables...

 

 

 

 

Feb 10, 2010 at 2:02 AM

Either way, you're still using 'n' distinct schemas or table sets per blog.

Jacob Proffitt's solution was to create a provider that accounts for that in a single schema, but adds a Blog table to associate those elements that are specific to each Blog.  It's a rather simple and element solution, and I don't see why it was not considered openly for the 1.6 release given the community desire to use it.  Of course I haven't heard of a press release as to anything that's happening with new development efforts of BlogEngine.NET so I'm not surprised either.

SqlBlogProvider is a good start if you don't want to completely rewrite BE.NET.

I'm working on an Entity Framework "provider" that I'm sure will ultimately replace the provider model later.  There are so many things I've learned from this tool and various fixes that a new BlogEngine is merely a few (extra) months away. :)

ps - My version of Jacob's SqlBlogProvider is currently up to date with BlogEngine Core, yet it's still considered 1.5.1.46, and has more than 12 blogs and growing.  (just need to push the rebuilt core binaries to get to 1.6.)

Feb 11, 2010 at 4:51 PM

I too have been waiting for BE to support multiblogging.  Our organization installed BE and loves its simplicity of use, however we could not bring it to production because we can't collapse all the topics into one blog.    

Feb 11, 2010 at 6:08 PM

Let me know if you still want to go that route.  I'd be happy to discuss the mods I've gone through to get there.  It's not too difficult, but I'd have to think about it again and diff the code bases completely.  I've been tracking diffs of the past 6 months or so and adding my fixes with the teams fixes over that time.  I've even collected and cleaned up several Extensions, Widgets and Themes.

To be honest, it's really easy to implement the code base I've been keeping, but it's even easier to start from a new install since you wouldn't have to migrate Blogs.  I built some rudimentary admin console(s) for migrating DB data, but not without issues, and to create new blogs instead of using a script.  I would like that to be done remotely, but haven’t spent time on it yet.

I’ll be glad to talk more about this anytime.

Mar 1, 2010 at 11:13 AM
Edited Mar 1, 2010 at 11:16 AM

@BizTron: Do you have your code branched at all, or is it a personal set of updates?  It sounds like what you have done is what many people are looking for - reading this post I'm not sure if I should just go with Jacob's version or search for your updates.

What concerns me a little about Jacob's solution is that it hasn't been updated in so long - is that an issue, or is it just a provider and the changes needed are all in the BE core?

My setup is new, no posts to migrate.  I took a look at WordpressMU, but am much more comfortable using BE.Net since I can integrate with the rest of my site using the Membership and Roles providers.  Plus I'm hosting with GoDaddy and WP seems to have FastCGI 500 errors which I couldn't resolve.

TIA!

 

Mar 1, 2010 at 2:29 PM

Currently, my code is stored locally in my own repository.  I have been keeping track of it for my own benefit.  I have been waiting to see if there was any interest in gathering it together to share.  I can look today and decide what effort it will take and post to my Blog first.

Mar 2, 2010 at 4:29 PM

@Ben - how have you accomplished this? I've been trying to run two blogs: one in the root and another as an application off the root, but I'm getting web.config errors (add name="*" handlers, and add verb="*" httpHandlers are causing conflicting with the parent web.config). What is your solution to this?

Coordinator
Mar 2, 2010 at 5:58 PM

In the parent web.config file, you can wrap the <system.web> and <system.webServer> in location tags as shown below.  This will prevent settings from the parent application from propagating down to the child application(s).

<location path="." inheritInChildApplications="false">
        <system.web>
                   ............ existing content .............
        </system.web>
</location>

<location path="." inheritInChildApplications="false">
        <system.webServer>
                   ............ existing content .............
        </system.webServer>
</location>

Mar 5, 2010 at 8:46 PM

@BizTron: Were you able to evaluate if you'd be able to share your version with us?

Mar 5, 2010 at 8:57 PM

Actually, I'm tracking down a bug right now that may have been introduced with comment moderation.  Another issue with trying to keep 2 code bases in "sync".  I have lots of extensions, themes and widgets I've modified/fixed for 1.5/1.6 that I'll split out.  I'm still diffing "my version" against 1.6 but will at least post something this weekend.  Other than this one defect that is months old, I'm ready to split this out, it's just that this issue takes precedence on my agenda because it has been bothering me for so long.  I can delete comments but can’t approve them and propagate to the DB.

If I can’t get it today, I’ll have to bundle this as-is and fix it later.

If you don't mind, let me know how urgent your need is.  Maybe we can help each other.

Mar 7, 2010 at 1:44 PM

I'm not in any major hurry - my initial need would be for about 5 concurrent blogs which I can handle with separate MySQL databases and unique web application BE instances.  Of course, the question then, is how easy would it be to migrate that scenario to your multi-hosted environment?

I'm more than happy to help out however I can.

Mar 7, 2010 at 2:23 PM

Since this is based (currently) on Linq to SQL, it might be better to wait for Entity Framework and the MySQL provider.  I'm working on an Entity Framework (with SQL Server) solution as well, but that's on hold while I fix this.  I'd much rather build a .NET 4.0 MVC version of BlogEngine...but it will take help and time.  So, if you want to (or can) go with the Linq2SQL approach I can at least help get something ready this week.  If SQL Express 2008 is not something you want to use as a backend, then maybe we can talk in more detail.

I'd ask you to hit my blog and leave a comment, but then that's what I'm fixing.  At least we can start an e-mail thread and talk more directly.  Comments aren't lost, they're just moderated due to the proliferation of morons called comment spammers.

Another thought is that the Provider model was positioned to allow for a multi-blog solution.  All you need is a few enhancements to the DB schema, and a provider.  Maybe the schema is the place to start.  But since Jacob Proffitt built his SqlBlogProvider, we can all learn from it if not just use it as is.  I wonder why it hasn't been incorprated into the base framework (out loud I might add) but it is a good starting point.  It's more robust than I need since I only want the multi-blog capabilites, and don't need it for singletons.  I also found code maintenance to be easier by removing the need to check for multi v. single blogs and added columns to table schema where possible and only created new tables that were absolutely necessary.  There are better ways to lay out "my" solution, but I'd rather NOT debate it.  I'm "eating my own dog food" and am prepared to cleanup, fix and enhance it at every opportunity I get...while maintaining compatibility with the latest source release of BlogEngine.NET.  Currently running against "1.6.0.1" core.

Mar 11, 2010 at 12:44 AM
Edited Mar 11, 2010 at 1:29 AM

Hi, I need to create a web site that contains 4 blogs. I downloaded your source code and followed the config instructions. But the website now doesn't allow to post any comment even though this feature is enabled in the setting. I noticed the source code was last updated in Apirl last year.  Have you fixed any known problems since then? Where can I get a copy of your lastest source code? Thanks.

Mar 11, 2010 at 2:55 PM

Who's source code? 

SqlBlogProvider is based on BlogEnigne.NET that was released at that time, plus a few improvements written by Jacob Proffitt and later incorporated into this base.  Since SqlBlogProvider was based on BlogEngine.Net v1.5, with enhancements for BlogRollItems, Referrer, the DataStoreSetting table, and the addition of a Hosts table (to help with identification of mutiple host headers [Thanks Jacob]) you can expect it to work with BE.NET 1.5 with those same features.  The problem is that it was not incorporated into the core so you can't expect it to work today with 1.6 or current source (1.6.0.3).

I have a version that does, and will post it to my Blog this afternoon.  I expect comments and issues as they arrise since I don't have a regression test or a relentless test team as I would on a commercial project or product.

Mar 11, 2010 at 6:53 PM

After configuring SqlBlogProvider to support mutiple blogs, do I just need to add a folder for each blog in IIS? and change the connection string in web.config file for each blog to point to the same database?

Jan 13, 2011 at 2:44 PM
Edited Jan 13, 2011 at 2:44 PM

Does this mean that you could have blogs with different languages on the same installation? or the language will still be only the one set in configurations.

Coordinator
Jan 14, 2011 at 2:27 AM

Yes, different languages will be possible.  Each blog will have its own set of settings.