Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Wiki Markup
Get \[Wordpress|http://wordpress.org/\] running on Apache 2.4 using PHP-FPM.

I am running multiple wordpress sites on a single web server, but want to keep them as isolated as possible.

This config emulates the .htaccess setup traditionally found in wordpress sites, but is a lot faster

No Format
## No longer needed
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^ /index.php [L]

Here is the VirtualHost setup:

No Format
<VirtualHost *:80>
 ServerName blog1.example.com
 ServerAlias *.blog1.example.com
 DocumentRoot "/var/www/html/blog1.example.com"
 <Directory "/var/www/html/blog1.example.com">
  Require all granted
  DirectoryIndex index.php
  AllowOverride FileInfo
  FallbackResource /index.php
 </Directory>
 <Directory "/var/www/html/blog1.example.com/wp-admin">
  FallbackResource disabled
 </Directory>
 ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9001/var/www/html/blog1.example.com/$1
</VirtualHost>

<VirtualHost *:80>
 ServerName blog2.example.com
 ServerAlias *.blog2.example.com
 DocumentRoot "/var/www/html/blog2.example.com"
 <Directory "/var/www/html/blog2.example.com">
  Require all granted
  DirectoryIndex index.php
  AllowOverride FileInfo
  FallbackResource /index.php
 </Directory>
 <Directory "/var/www/html/blog2.example.com/wp-admin">
  FallbackResource disabled
 </Directory>
 ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9002/var/www/html/blog2.example.com/$1
</VirtualHost>

My php-fpm setup (should be improved to include chroot) is pretty stock from php.net

Note these are not complete files, but just the main snippets to show what was done

No Format
#/etc/php-fpm.conf
include=/etc/php-fpm.d/*.conf
No Format
#/etc/php-fpm.d/blog1.conf
[wp_blog1]
listen = 127.0.0.1:9001
listen.allowed_clients = 127.0.0.1
user = wp_blog1
group = apache
...
No Format
#/etc/php-fpm.d/blog2.conf
[wp_blog2]
listen = 127.0.0.1:9002
listen.allowed_clients = 127.0.0.1
user = wp_blog2
group = apache
...

Then on my web servers:

No Format
useradd -d /var/www/html -s /sbin/nologin -g apache wp_blog1
useradd -d /var/www/html -s /sbin/nologin -g apache wp_blog2