Running Magento for multiple clients - one Installaton and multiple installations

I am looking to install Magento (Community Edition) for several clients and have been researching this issue for several days.

I see that the Enterprise Edition has what I need, but surprisingly, I don't want to distribute the odd annual subscription for $ 12,000.

There seem to be a few options, but I'm worried about the performance that I will choose from the various options.

Option 1) A single installation using the AITOC Advanced Permissions Module So this is really what I want; one installation, so that I can simultaneously update my main files, as well as manage all users of my store from one place. The problem here is that I don’t know anything about the reliability of this add-on product and that I have to pay a little more. I am also concerned that if I have 10 stores that run away from this installation, all this can greatly slow down and stall, as I heard, about Magento's slowness.

Link to the module: http://www.aitoc.com/en/magentomods_advanced_permissions.html

Option 2) Several Magento installations on one server for each store So, I have 10 Magento installations on one server, which all work happily, without using any extra money, but now I have 10 separate stores for updating and support, which can be annoying . In addition, I could not find many other people using this method, and when I have it, they usually ask how to stop their servers from dying. Thus, this route seems to be even worse on my server, since I will have more features on my server, but if my server could accept it, then every Magento installation would be easier and less likely to slow down because each of them had to launch 10 stores on their own?

Option 3) Use multiple servers and multiple installations of Magento . I just don’t want to do this.

Option 4) Buy Magento Enterprise I have no money to do this.

So, which route is less likely to blow my server? And does anyone have experience in this holy grail of the module?

Thanks for reading and thanks in advance for any help - Chris Hopkins

+7
magento
source share
6 answers

Allow immediately to get rid of unnecessary options. You do not want to do # 3 and # 4 - this is not a solution. Magento Enterprise Edition does not add any features that allow you to run multiple customers from the same store.

Now, on the options. As you state, # 1 will allow you to update one version of the code, but, of course, this carries some risks. As far as I understand, should your customers access stores? If you have several clients working in one database and one code base, you always encounter problems that they affect each other. For example, who will control product attributes that are global in nature? If one store removes a product attribute, other stores may lose data as a result. If you solve this problem, then regarding promotion in the catalog and product categories, etc. Magento was created to handle several websites, but not to isolate them from each other, and because of this you will have problems. In terms of performance, a large product catalog or customer base will slow down the site, but you can mitigate this by using a flat product catalog and effectively using caching.

For option # 2, you can run several Magento stores, which causes two main problems. Firstly, as you say, the site is being updated. If you use the Magento vanilla installation and do not modify the kernel files, this should be a non-transition. Magento updater is quite simple for these installations, it is difficult to increase, as you make more mods and must use more manual processes for updating.

In terms of performance, launching multiple purple sites may be slower, but it depends on how you structure them. Regardless of the presence of one or more sites, you will have to upload data for each site, so the size of the database will not differ much. The file size on the server is largely unrelated. In any case, when a client requests a page, Magento must roll out the entire structure to serve the request, as a result of which performance problems begin to appear. One of the big mitigations for this is to use an operation code cache such as Xcache, but with multiple machines you need to provide Xcache with a lot more memory to store the entire installation code. Legitimate problem.

My recommendation? Start with one machine, several installations. Work on the number of installations, and when the server no longer supports, continue. Save code changes outside the kernel and use extensions that can be easily updated, so the updates are simple. This should mitigate as many problems as possible.

Hope this helps!

Thanks Joe

+7
source share

I think getting a vps account and scaling it when it becomes necessary will give you the best options for your cost requirements.

+1
source share

At my two cents, I think that you will encounter more problems than pluses, throwing everyone into a single Magento installation when everyone bumps into each other. Not to mention that client X on website Y cannot understand why he cannot create an account on website Z that he has never been to (this is a configuration problem, but it can happen)

I would recommend that you install the git repository where your "base" Magento installation is installed, and then all your clients on different versions that you could clone from this main installation.

This will give you only one real code base for the update (database changes are another story), and each one is separate.

+1
source share

We handle a couple dozen magento “installs” using a single code base, but several databases. In fact, we did the hard work of creating a multi-user Magento.

Here's how we do it:

  • Use nginx as a reverse proxy to handle some basic routing rules and to set some server variables (fastcgi_params) based on the request.
  • We set routing rules in Nginx Config based on the requested domain, browser language, and visitor location.
  • Set the server variable using Nginx fastcgi_params as "client-id"
  • Make copies of the app / etc folder using the agreement with the application / [client-id] / etc
  • override the variable Mage.php $ etcDir to $ etcDir = self :: getRoot (). Ds. $ _SERVER ['CLIENT_ID']. '/'. 'etc'; (Here you will need to apply some logic to make sure that this can fail)
  • Edit the application / etc / [client-id] /local.xml to point to the new db with purple tables and already imported base content. (You also need to set the url in the core_config table or in the local.xml file for something to work)
  • Change the path include / code / local /, which will be app / code / local / [client-id] / in Mage.php (yes, run me to override the kernel code, but this is the only way to find)
  • Setting up a processing session in Redis db, with db # unique to each client
  • Override getVarDir () in Mage_Core_Model_Config_Options to include [client-id] in the path. (This is to ensure that you do not share the cache between clients)

You probably still understand the point.

Other things you want to consider:

Allocating the environment by client ID, Consolidating all the Admin Panel URLs and asking the Admin user to select [client-id], Configuring Luck in a reasonable sense, Configuring CDN in a way that is reasonable, Modifying the Magento installer to support this method and automatic configuration of the basic configuration.

+1
source share

We run multiple clients on a single Magento CE installation and use the AITOC Advanced Permissions module to control visibility for our different clients. The module works well, although it has several hiccups and lacks functionality in several areas that we had to handle with our own internal modules. Apparently, this does not have a noticeable effect on performance, since we have been running it this way for several months now without any problems. (However, we use Amazon EC2 and autoscaling.)

As I understand it, EE provides advanced permissions for a role that would make the AITOC module useless. However, I also heard that in EULA, only 1 client per installation is required for EE. I couldn’t find any serious facts about this, but if it’s true, it’s really the end of the deal, as having an additional EE installation for each client will be extremely expensive, extremely fast. (Maybe someone can confirm yes / no, though?)

0
source share

I found this topic while researching the same topic. I have a large store with several managers. I wanted to give each of them access to certain categories and products so that they could only change them and could not change anything else (unfortunately, I have bad experience with this). Thus, I found several extensions: those that were made by itoc come and go. I installed the latter and I am quite satisfied. it takes some time to configure all user roles, but it definitely pays.

0
source share

All Articles