Set up Magento backend on a separate node

Last modified by sashka_ua on Sun, September 4, 2011 14:03
Source|Old Revisions  

This is an old revision of the document!


That is article describes how to handle access to Magento backend, include how to set up backend on a separate node.

Version can be used for such set up: EE 1.10.X, EE 1.9.X, CE 1.4, CE 1.5 Separate node and different domain config will not work for: EE 1.11.0.0, CE 1.6

Change backend path entity

This will change name of path entity used to get access to backend.

Edit “app/etc/local.xml” and change

 # <frontName><![CDATA[admin]]></frontName>

to something you like

 # <frontName><![CDATA[hidden_path]]></frontName>

and then clear Magento cache in backend.

After that backend will be accessible through such URL:

 # http://www.domain.com/index.php/hidden_path

Configure domain for backend access to the same node

If you want just set up different domain for your backend and use, for example, some VirtualHost related features like HTTP auth for your domain, access by IP, you can do this with “Custom admin path”.

WARNING!

it MUST be the same Magento installation with the same document root as for frontend. 
In other case it will break your Magento installation.

Steps:

1. Set

"System->Configuration->General->Web->URL Options->Auto-redirect to Base URL" to "No"

2. Configure VirtualHost. You MUST ensure that Magento is accessible with your new domain. Suppose it’s “admin.domain.com”.

3. Set

"System->Configuration->Advanced->Admin->Admin Base URL->Use Custom Admin Path" to "Yes"

then set

"System->Configuration->Advanced->Admin->Admin Base URL->Custom Admin Path" to "http://admin.domain.com/"

That’s should be full URL with “http://”, admin domain, slash at the end “/”.

Now, backend should be accessible on URLhttp://admin.domain.com/admin/

Configure backend on separate node

You can set up backend on a separate node. It can be useful if you actively work with backend, if you want to decrease indexing impact on frontend and so on.

1. You should set up shared cache Memcached+DB:

- install memcached (http://memcached.org/) and PHP memcache extension (http://php.net/manual/en/book.memcache.php). It should be accessible from both frontend and backend nodes.

- set such config in local.xml. Pay attention and change IP address of memcached server.

For EE up to 1.10.1.1 and CE any version (For EE 1.11.0.0 additional FPC config required).

        <cache>
            <backend>memcached</backend>
            <slow_backend>database</slow_backend>
            <id_prefix>cache_</id_prefix>
            <memcached>
                <servers>
                    <server1>
                        <host><![CDATA[!!IP_ADDRESS!!]]></host>
                        <port><![CDATA[11211]]></port>
                        <persistent><![CDATA[0]]></persistent>
                        <weight><![CDATA[1]]></weight>
                        <timeout><![CDATA[60]]></timeout>
                        <retry_interval><![CDATA[10]]></retry_interval>
                    </server1>
                </servers>
                <compression><![CDATA[0]]></compression>
                <cache_dir><![CDATA[]]></cache_dir>
                <hashed_directory_level><![CDATA[]]></hashed_directory_level>
                <hashed_directory_umask><![CDATA[]]></hashed_directory_umask>
                <file_name_prefix><![CDATA[]]></file_name_prefix>
            </memcached>
        </cache>

Once shared cache got to work, do next

2. Export media directory with NFS.

When you upload product images on a separate server you should make them available in some way for frontend server. The best way is to share media catalog with NFS and mount it on a backend server in a document root.

there is some notices for permissions:

* use the same UID for running web-server (apache for instance). Default is “48” in RHEL * use idmapd to map any UID’s to single UID (RHEL: /etc/idmapd.conf)

Sample config “/etc/exportfs” for frontend. 48 is single web-user UID:

/var/www/html/media 192.168.0.0/24(rw,insecure,nohide,sync,anonuid=48,anongid=48)

sample fstab mount options:

192.168.0.1:/var/www/html/media /var/www/html/media nfs proto=udp,hard,bg,intr,noatime,rsize=32k,wsize=32k,noatime 0 0

Don’t forget enable run on boot “/etc/init.d/netfs” in RHEL

 # chkconfig netfs on

this will enable automount NFS share on boot.

3. (Optionally) Shared sessions

We should mention that shared sessions in memcache is recommended for such set up. For that you should set up second memcached and set such config in local.xml:

<session_save><![CDATA[memcache]]></session_save>
<session_save_path><![CDATA[tcp://192.168.0.1:11212?persistent=0&weight;=2&timeout;=10&retry;interval=10]]></session_save_path>

4. Set URL option in backend

"System->Configuration->General->Web->URL Options->Auto-redirect to Base URL" to "No"

5. Configure VirtualHost. You MUST ensure that Magento is accessible with your new domain. Suppose it’s “admin.domain.com”.

6. Set custom URL in backend

"System->Configuration->Advanced->Admin->Admin Base URL->Use Custom Admin Path" to "Yes"

then set

"System->Configuration->Advanced->Admin->Admin Base URL->Custom Admin Path" to "http://admin.domain.com/"

That’s should be full URL with “http://”, admin domain, slash at the end “/”.

7. Cron set up

You should run cron only on backend server. Normaly it should run every 5 minutes:

/etc/crontab

*/5 * * * * /bin/sh /var/www/html/cron.sh

Now, backend should be accessible on URLhttp://admin.domain.com/admin/” located on a separate server.

WARNING!

Remember keep your code in a synchronized state on nodes frontend and backend. 
If you install something in Magento you should copy modules, updates to other node. 

A good way to do that is set up rsync for code, for example from backend to frontend.
Also it can be done with NFS, but it's not recommended!

Fix broken backend access

Once something went wrong and you cannot get access to admin anymore you can back everything with such steps:




 

Magento 2 GitHub Repository

Magento Job Board - Some sort of tag line goes here

Latest Posts| View all Jobs