Налаштування Nginx – PHP-FPM для роботи багато-сайтовості в WordPress

По замовчуванню, Wordpress працює в одно-сайтовому режимі. Якщо Ви бажаєте включити багато-сайтовість, то зробіть наступні дії:

1. Відкрийте файл wp-config.php. В нього додайте програмний код:

/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );
2. Налаштуйте мережу. Для цього, зайдіть в Administration > Tools > Network Setup (Инструменты - Установка сети).

3. Wordpress вам повідомить скрипт, призначений для роботи в Apache2.

Скрипт для додавання в wp-config.php (він підходить як для нашого випадку, так і для Apache2).

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'nerusoft.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
Скрипт для Apache2, який потрібно додати в файл .htaccess в корні сайту (не підходить для варіанта Nginx, бо від не виконує ці файли :))

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
Для зв'язки Nginx - PHP-FPM необхідно вставляти інший скрипт в налаштування домену Nginx. Цей скрипт різний в залежності від вибраної Вами схеми багато-сайтовості Wordpress.

Скрипт для Nginx для багато-сайтового Wordpress, що використовує підкаталоги:

map $uri $blogname{
 ~^(?P<blogpath>/[^/]+/)files/(.*) $blogpath ;
}
 
map $blogname $blogid{
 default -999;
 
 #Ref: http://wordpress.org/extend/plugins/nginx-helper/
 #include /var/www/wordpress/wp-content/plugins/nginx-helper/map.conf ;
}
 
server {
 server_name example.com ;
 
 root /var/www/example.com/htdocs;
 index index.php;
 
 location ~ ^(/[^/]+/)?files/(.+) {
  try_files /wp-content/blogs.dir/$blogid/files/$2 /wp-includes/ms-files.php?file=$2 ;
  access_log off; log_not_found off; expires max;
 }
 
 #avoid php readfile()
 location ^~ /blogs.dir {
  internal;
  alias /var/www/example.com/htdocs/wp-content/blogs.dir ;
  access_log off; log_not_found off; expires max;
 }
 
 if (!-e $request_filename) {
  rewrite /wp-admin$ $scheme://$host$uri/ permanent; 
  rewrite ^(/[^/]+)?(/wp-.*) $2 last; 
  rewrite ^(/[^/]+)?(/.*\.php) $2 last; 
 }
 
 location / {
  try_files $uri $uri/ /index.php?$args ;
 }
 
 location ~ \.php$ {
  try_files $uri =404;
  include fastcgi_params;
  fastcgi_pass php;
 }
 
 #add some rules for static content expiry-headers here
}
Скрипт для Nginx, що використовує багато-доменність для Wordpress:

map $http_host $blogid {
    default       -999;
 
    #Ref: http://wordpress.org/extend/plugins/nginx-helper/
    #include /var/www/wordpress/wp-content/plugins/nginx-helper/map.conf ;
 
}
 
server {
 server_name example.com *.example.com ;
 
 root /var/www/example.com/htdocs;
 index index.php;
 
 location / {
  try_files $uri $uri/ /index.php?$args ;
 }
 
 location ~ \.php$ {
  try_files $uri =404;
  include fastcgi_params;
  fastcgi_pass php;
 }
 
 #WPMU Files
        location ~ ^/files/(.*)$ {
                try_files /wp-content/blogs.dir/$blogid/$uri /wp-includes/ms-files.php?file=$1 ;
                access_log off; log_not_found off;      expires max;
        }
 
 #WPMU x-sendfile to avoid php readfile()
 location ^~ /blogs.dir {
  internal;
  alias /var/www/example.com/htdocs/wp-content/blogs.dir;
  access_log off; log_not_found off; expires max;
 }
 
 #add some rules for static content expiry-headers here
}


 
По замовчуванню,
WordPress працює в одно-сайтовому режимі. Якщо Ви бажаєте включити
багато-сайтовість, то зробіть наступні дії:

1. Відкрийте файл wp-config.php. В нього додайте програмний код:
/* Multisite */ define( 'WP_ALLOW_MULTISITE', true );
1
2

/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );

2. Налаштуйте мережу. Для цього, зайдіть в Administration > Tools
> Network Setup (Инструменты – Установка сети).

3. WordPress вам повідомить скрипт, призначений для роботи в Apache2.

Скрипт для додавання в wp-config.php (він підходить як для нашого
випадку, так і для Apache2).
define('MULTISITE', true); define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'nerusoft.com');
define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
1
2
3
4
5
6

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'nerusoft.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Скрипт для Apache2, який потрібно додати в файл .htaccess в корні сайту
(не підходить для варіанта Nginx, бо від не виконує ці файли :))
RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # add a
trailing slash to /wp-admin RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME}
-d RewriteRule ^ - [L] RewriteRule ^(wp-(content|admin|includes).*) $1
[L] RewriteRule ^(.*\.php)$ $1 [L] RewriteRule . index.php [L]
1
2
3
4
5
6
7
8
9
10
11
12
13

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

Для зв’язки Nginx – PHP-FPM необхідно вставляти інший скрипт в
налаштування домену Nginx. Цей скрипт різний в залежності від вибраної
Вами схеми багато-сайтовості WordPress.

Скрипт для Nginx для багато-сайтового WordPress, що використовує
підкаталоги:
map $uri $blogname{ ~^(?P/[^/]+/)files/(.*) $blogpath ; } map
$blogname $blogid{ default -999; #Ref:
http://wordpress.org/extend/plugins/nginx-helper/ #include
/var/www/wordpress/wp-content/plugins/nginx-helper/map.conf ; } server {
server_name example.com ; root /var/www/example.com/htdocs; index
index.php; location ~ ^(/[^/]+/)?files/(.+) { try_files
/wp-content/blogs.dir/$blogid/files/$2 /wp-includes/ms-files.php?file=$2
; access_log off; log_not_found off; expires max; } #avoid php
readfile() location ^~ /blogs.dir { internal; alias
/var/www/example.com/htdocs/wp-content/blogs.dir ; access_log off;
log_not_found off; expires max; } if (!-e $request_filename) { rewrite
/wp-admin$ $scheme://$host$uri/ permanent; rewrite ^(/[^/]+)?(/wp-.*) $2
last; rewrite ^(/[^/]+)?(/.*\.php) $2 last; } location / { try_files
$uri $uri/ /index.php?$args ; } location ~ \.php$ { try_files $uri =404;
include fastcgi_params; fastcgi_pass php; } #add some rules for static
content expiry-headers here }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

map $uri $blogname{
~^(?P/[^/]+/)files/(.*) $blogpath ;
}
map $blogname $blogid{
default -999;
#Ref: http://wordpress.org/extend/plugins/nginx-helper/
#include /var/www/wordpress/wp-content/plugins/nginx-helper/map.conf ;
}
server {
server_name example.com ;
root /var/www/example.com/htdocs;
index index.php;
location ~ ^(/[^/]+/)?files/(.+) {
try_files /wp-content/blogs.dir/$blogid/files/$2
/wp-includes/ms-files.php?file=$2 ;
access_log off; log_not_found off; expires max;
}
#avoid php readfile()
location ^~ /blogs.dir {
internal;
alias /var/www/example.com/htdocs/wp-content/blogs.dir ;
access_log off; log_not_found off; expires max;
}
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^(/[^/]+)?(/wp-.*) $2 last;
rewrite ^(/[^/]+)?(/.*\.php) $2 last;
}
location / {
try_files $uri $uri/ /index.php?$args ;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass php;
}
#add some rules for static content expiry-headers here
}

Скрипт для Nginx, що використовує багато-доменність для WordPress:
map $http_host $blogid { default -999; #Ref:
http://wordpress.org/extend/plugins/nginx-helper/ #include
/var/www/wordpress/wp-content/plugins/nginx-helper/map.conf ; } server {
server_name example.com *.example.com ; root
/var/www/example.com/htdocs; index index.php; location / { try_files
$uri $uri/ /index.php?$args ; } location ~ \.php$ { try_files $uri =404;
include fastcgi_params; fastcgi_pass php; } #WPMU Files location ~
^/files/(.*)$ { try_files /wp-content/blogs.dir/$blogid/$uri
/wp-includes/ms-files.php?file=$1 ; access_log off; log_not_found off;
expires max; } #WPMU x-sendfile to avoid php readfile() location ^~
/blogs.dir { internal; alias
/var/www/example.com/htdocs/wp-content/blogs.dir; access_log off;
log_not_found off; expires max; } #add some rules for static content
expiry-headers here }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

map $http_host $blogid {
default -999;
#Ref: http://wordpress.org/extend/plugins/nginx-helper/
#include /var/www/wordpress/wp-content/plugins/nginx-helper/map.conf
;
}
server {
server_name example.com *.example.com ;
root /var/www/example.com/htdocs;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args ;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass php;
}
#WPMU Files
location ~ ^/files/(.*)$ {
try_files /wp-content/blogs.dir/$blogid/$uri
/wp-includes/ms-files.php?file=$1 ;
access_log off; log_not_found off; expires max;
}
#WPMU x-sendfile to avoid php readfile()
location ^~ /blogs.dir {
internal;
alias /var/www/example.com/htdocs/wp-content/blogs.dir;
access_log off; log_not_found off; expires max;
}
#add some rules for static content expiry-headers here
}





© 2014, rudjuk.kiev.ua. Все права защищены. Rudyuk Sergey. К2®

Read more at: http://rudjuk.kiev.ua/ | Сайт Рудюка Сергея

Комментарии

Популярные сообщения