Enviar pesquisa
Carregar
Multi tenant CMSes using php
•
Transferir como ODP, PDF
•
0 gostou
•
3,174 visualizações
K
kae-verens
Seguir
slides for a talk I gave in Dublin Google buildings in March 2011
Leia menos
Leia mais
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 14
Baixar agora
Recomendados
Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)
Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)
Cliff Seal
Introducing Wordpress Multitenancy
Introducing Wordpress Multitenancy
Salesforce Engineering
Varying wordpressdevelopmentenvironment wp-campus2016
Varying wordpressdevelopmentenvironment wp-campus2016
David Brattoli
Get Started in Professional WordPress Design & Development
Get Started in Professional WordPress Design & Development
Cliff Seal
Using multi-tenant WordPress to simplify development
Using multi-tenant WordPress to simplify development
coderaaron
Managing a WordPress Site as a Composer Project by Rahul Bansal @ WordCamp Na...
Managing a WordPress Site as a Composer Project by Rahul Bansal @ WordCamp Na...
rtCamp
Wp migration
Wp migration
cstrommer
Why it's dangerous to turn off automatic updates and here's how to do it
Why it's dangerous to turn off automatic updates and here's how to do it
Onni Hakala
Recomendados
Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)
Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)
Cliff Seal
Introducing Wordpress Multitenancy
Introducing Wordpress Multitenancy
Salesforce Engineering
Varying wordpressdevelopmentenvironment wp-campus2016
Varying wordpressdevelopmentenvironment wp-campus2016
David Brattoli
Get Started in Professional WordPress Design & Development
Get Started in Professional WordPress Design & Development
Cliff Seal
Using multi-tenant WordPress to simplify development
Using multi-tenant WordPress to simplify development
coderaaron
Managing a WordPress Site as a Composer Project by Rahul Bansal @ WordCamp Na...
Managing a WordPress Site as a Composer Project by Rahul Bansal @ WordCamp Na...
rtCamp
Wp migration
Wp migration
cstrommer
Why it's dangerous to turn off automatic updates and here's how to do it
Why it's dangerous to turn off automatic updates and here's how to do it
Onni Hakala
A crash course inscaling wordpress
A crash course inscaling wordpress
GovLoop
High Performance WordPress
High Performance WordPress
vnsavage
DrupalCon Barcelona 2015
DrupalCon Barcelona 2015
Daniel Kanchev
HyperDB, MySQL Performance, & Flavors of MySQL
HyperDB, MySQL Performance, & Flavors of MySQL
Evan Volgas
Using a Private Git Server for Packaging Software
Using a Private Git Server for Packaging Software
Chris Jean
How to Speed Up Your Joomla! Site
How to Speed Up Your Joomla! Site
Daniel Kanchev
WAG the Blog
WAG the Blog
Evan Volgas
WordPress Security - 12 WordPress Security Fundamentals
WordPress Security - 12 WordPress Security Fundamentals
findingsimple
ColdFusion builder plugins
ColdFusion builder plugins
ColdFusionConference
WordCamp SF 2011: Debugging in WordPress
WordCamp SF 2011: Debugging in WordPress
andrewnacin
Best Practices for WordPress in Enterprise
Best Practices for WordPress in Enterprise
Taylor Lovett
Isomorphic WordPress Applications with NodeifyWP
Isomorphic WordPress Applications with NodeifyWP
Taylor Lovett
Apache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middleware
Robert Munteanu
JS digest. Decemebr 2017
JS digest. Decemebr 2017
ElifTech
Anthony Somerset - Site Speed = Success!
Anthony Somerset - Site Speed = Success!
WordCamp Cape Town
Hidden Secrets For A Hack-Proof Joomla! Site
Hidden Secrets For A Hack-Proof Joomla! Site
Daniel Kanchev
Keep Applications Online
Keep Applications Online
ColdFusionConference
Herding cats managing ColdFusion servers with commandbox
Herding cats managing ColdFusion servers with commandbox
ColdFusionConference
AMIMOTO WordPress + Amazon Web Services for ALL Tech Levels
AMIMOTO WordPress + Amazon Web Services for ALL Tech Levels
Kel
Saving Time with WP-CLI
Saving Time with WP-CLI
Taylor Lovett
eZ Publish Cluster Unleashed
eZ Publish Cluster Unleashed
Bertrand Dunogier
Writing webapps with Perl Dancer
Writing webapps with Perl Dancer
Alexis Sukrieh
Mais conteúdo relacionado
Mais procurados
A crash course inscaling wordpress
A crash course inscaling wordpress
GovLoop
High Performance WordPress
High Performance WordPress
vnsavage
DrupalCon Barcelona 2015
DrupalCon Barcelona 2015
Daniel Kanchev
HyperDB, MySQL Performance, & Flavors of MySQL
HyperDB, MySQL Performance, & Flavors of MySQL
Evan Volgas
Using a Private Git Server for Packaging Software
Using a Private Git Server for Packaging Software
Chris Jean
How to Speed Up Your Joomla! Site
How to Speed Up Your Joomla! Site
Daniel Kanchev
WAG the Blog
WAG the Blog
Evan Volgas
WordPress Security - 12 WordPress Security Fundamentals
WordPress Security - 12 WordPress Security Fundamentals
findingsimple
ColdFusion builder plugins
ColdFusion builder plugins
ColdFusionConference
WordCamp SF 2011: Debugging in WordPress
WordCamp SF 2011: Debugging in WordPress
andrewnacin
Best Practices for WordPress in Enterprise
Best Practices for WordPress in Enterprise
Taylor Lovett
Isomorphic WordPress Applications with NodeifyWP
Isomorphic WordPress Applications with NodeifyWP
Taylor Lovett
Apache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middleware
Robert Munteanu
JS digest. Decemebr 2017
JS digest. Decemebr 2017
ElifTech
Anthony Somerset - Site Speed = Success!
Anthony Somerset - Site Speed = Success!
WordCamp Cape Town
Hidden Secrets For A Hack-Proof Joomla! Site
Hidden Secrets For A Hack-Proof Joomla! Site
Daniel Kanchev
Keep Applications Online
Keep Applications Online
ColdFusionConference
Herding cats managing ColdFusion servers with commandbox
Herding cats managing ColdFusion servers with commandbox
ColdFusionConference
AMIMOTO WordPress + Amazon Web Services for ALL Tech Levels
AMIMOTO WordPress + Amazon Web Services for ALL Tech Levels
Kel
Saving Time with WP-CLI
Saving Time with WP-CLI
Taylor Lovett
Mais procurados
(20)
A crash course inscaling wordpress
A crash course inscaling wordpress
High Performance WordPress
High Performance WordPress
DrupalCon Barcelona 2015
DrupalCon Barcelona 2015
HyperDB, MySQL Performance, & Flavors of MySQL
HyperDB, MySQL Performance, & Flavors of MySQL
Using a Private Git Server for Packaging Software
Using a Private Git Server for Packaging Software
How to Speed Up Your Joomla! Site
How to Speed Up Your Joomla! Site
WAG the Blog
WAG the Blog
WordPress Security - 12 WordPress Security Fundamentals
WordPress Security - 12 WordPress Security Fundamentals
ColdFusion builder plugins
ColdFusion builder plugins
WordCamp SF 2011: Debugging in WordPress
WordCamp SF 2011: Debugging in WordPress
Best Practices for WordPress in Enterprise
Best Practices for WordPress in Enterprise
Isomorphic WordPress Applications with NodeifyWP
Isomorphic WordPress Applications with NodeifyWP
Apache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middleware
JS digest. Decemebr 2017
JS digest. Decemebr 2017
Anthony Somerset - Site Speed = Success!
Anthony Somerset - Site Speed = Success!
Hidden Secrets For A Hack-Proof Joomla! Site
Hidden Secrets For A Hack-Proof Joomla! Site
Keep Applications Online
Keep Applications Online
Herding cats managing ColdFusion servers with commandbox
Herding cats managing ColdFusion servers with commandbox
AMIMOTO WordPress + Amazon Web Services for ALL Tech Levels
AMIMOTO WordPress + Amazon Web Services for ALL Tech Levels
Saving Time with WP-CLI
Saving Time with WP-CLI
Semelhante a Multi tenant CMSes using php
eZ Publish Cluster Unleashed
eZ Publish Cluster Unleashed
Bertrand Dunogier
Writing webapps with Perl Dancer
Writing webapps with Perl Dancer
Alexis Sukrieh
Zend Con 2008 Slides
Zend Con 2008 Slides
mkherlakian
On secure application of PHP wrappers
On secure application of PHP wrappers
Positive Hack Days
Childthemes ottawa-word camp-1919
Childthemes ottawa-word camp-1919
Paul Bearne
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
Jon Peck
Introducation to php for beginners
Introducation to php for beginners
musrath mohammad
Extending Zend Framework
Extending Zend Framework
PHPBelgium
extending-php
extending-php
tutorialsruby
extending-php
extending-php
tutorialsruby
extending-php
extending-php
tutorialsruby
extending-php
extending-php
tutorialsruby
extending-php
extending-php
tutorialsruby
extending-php
extending-php
tutorialsruby
Php with my sql
Php with my sql
husnara mohammad
Manage WordPress with Awesome using wp cli
Manage WordPress with Awesome using wp cli
GetSource
Assetic (Zendcon)
Assetic (Zendcon)
Kris Wallsmith
Assetic (Symfony Live Paris)
Assetic (Symfony Live Paris)
Kris Wallsmith
Introducing Assetic: Asset Management for PHP 5.3
Introducing Assetic: Asset Management for PHP 5.3
Kris Wallsmith
Creating Local WordPress Installs
Creating Local WordPress Installs
mcgaritydotme
Semelhante a Multi tenant CMSes using php
(20)
eZ Publish Cluster Unleashed
eZ Publish Cluster Unleashed
Writing webapps with Perl Dancer
Writing webapps with Perl Dancer
Zend Con 2008 Slides
Zend Con 2008 Slides
On secure application of PHP wrappers
On secure application of PHP wrappers
Childthemes ottawa-word camp-1919
Childthemes ottawa-word camp-1919
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
Introducation to php for beginners
Introducation to php for beginners
Extending Zend Framework
Extending Zend Framework
extending-php
extending-php
extending-php
extending-php
extending-php
extending-php
extending-php
extending-php
extending-php
extending-php
extending-php
extending-php
Php with my sql
Php with my sql
Manage WordPress with Awesome using wp cli
Manage WordPress with Awesome using wp cli
Assetic (Zendcon)
Assetic (Zendcon)
Assetic (Symfony Live Paris)
Assetic (Symfony Live Paris)
Introducing Assetic: Asset Management for PHP 5.3
Introducing Assetic: Asset Management for PHP 5.3
Creating Local WordPress Installs
Creating Local WordPress Installs
Multi tenant CMSes using php
1.
Multi-tenanted CMSes (with
some PHP)
2.
3.
Install once, maintain/upgrade
that one instance
4.
Many domain names
5.
Many configurations
6.
7.
Skin/Theme details
8.
User-uploaded file locations
9.
10.
install one copy
of software
11.
all instance data,
configs, etc., installed automatically or using a “point and click” installer
12.
Easier to maintain
and upgrade
13.
fix in one
place, fix everywhere. upgrade once, upgrade everywhere
14.
conversely: bugs/errors are
universal, so be careful
15.
Less resources
needed
16.
less HD space,
as only one software instance
17.
bytecode caching (APC,
etc) for just 1 CMS copy, thus less file-access
18.
19.
all have tutorials
explaining how to do it (not built into core)
20.
Wordpress
21.
WordPress-MU so cool
it was written into the core
22.
Salesforce
23.
Google Apps
24.
Why is it
not more prevalent in OSS?
25.
26.
Finds config associated
with domain name
27.
Sets site-specific variables
such as db details, file locations, theme details
28.
29.
WordPress MU uses
one database
30.
One table holds
details of each domain
31.
WP searches table
to find ID of blog associated with domain name
32.
Each blog's details
kept in numbered tables in the same database (eg: wp_2_links, wp_23_links, etc)
33.
KV-WebME uses multiple
databases
34.
Config found using
sym-links in file-system
35.
Each site's config
kept in a separate directory on the filesystem
36.
Proxy Config /home/webme
/public_html/index.php /.private/config.php /sites.aliases/kvsites.ie /sites/kv-2-30/config.php
37.
Proxy Config <?php
$host=preg_replace( '/^www/', '', preg_replace( '/[^a-z0-9]/', '', strtolower( $_SERVER['HTTP_HOST'] ) ) ); $cfile='/home/webme/ sites.aliases /'.$host.'/config.php'; if (!file_exists($cfile)) { $cfile='/home/webme/ sites /'.$host.'/config.php'; if (!file_exists($cfile)) { echo 'error resolving domain name "' .$_SERVER['HTTP_HOST'].'" to a WebME server'; exit; } } require $cfile; define('CONFIG_FILE', $cfile);
38.
39.
mod_rewrite, nginx, etc
40.
File's actual location
determined by config file
41.
URL is /file/whatever.jpg,
but that's not where it really is
42.
could be /home/webme/sites/kv-2-23/f/whatever.jpg
43.
44.
user-uploaded files kept
in sub-directory (/home/webme/sites/kv-2-23/f)
45.
Rewrite file requests
to route through a script
46.
RewriteRule ^f/(.*)$ /ww.incs/get-file.php?filename=$1
[L]
47.
Retrieve actual file
location
48.
validate the filename,
check that it exists
49.
Push to client
50.
readfile()
51.
52.
example: /f/whatever.php.jpg <--
image or script?
53.
Authentication
54.
require logged-in user,
or that the user be a member of a certain group
55.
Logging
56.
record details such
as what user viewed the file, push the file access to a live log view, etc.
57.
Modification
58.
if an image
is /f/image.jpg , how about resizing it if called as /f/image.jpg,width=200
59.
60.
Keep version number
of core database tables in config file.
61.
Example:
'version'=>'32',
62.
Hard-code version number
into root /index.php
63.
If versions don't
match, run upgrade script, then re-save the config file with latest version if (!isset($DBVARS['version']) || $DBVARS['version']<32 ) { redirect('/ww.incs/upgrade.php'); }
64.
65.
or...
66.
Maintain a reference
installation, and copy that one when creating new installation
67.
68.
Prepopulate with sample
data
69.
Customise
70.
Baixar agora