Задать вопрос
Literator
@Literator

Как правильно перенести WordPress на другой сервер?

Всем привет!

Возникла проблема с сайтом на WordPress после его переноса на другой сервер.

По итогу сейчас имею 1 сервер, к которому привязаны 2 домена с подключенным SSL:
1. WordPress, который стоял там изначально. Работает корректно;
2. WordPress, который перенес с другого сервера. Не работает;

Конечно БД тоже была перенесена и параметры подключения к ней в wp-config.php были обновлены. Причем WordPress к БД подключается, т.к. если параметры подключения изменить, то он показывает ошибку подключения к БД. Если же все параметры верные, то генерируется просто пустая страница (абсолютно пустая).

Далее привожу содержимое двух файлов из sites-available (NGINX):
1. Для первого домена, который изначально работал на этом сервере и продолжает адекватно работать сейчас:
server {
    listen 80 default_server;
	server_name firstdomen.ru www.firstdomen.ru;
    return 301 https://firstdomen.ru$request_uri;
} 

upstream memcached-servers {
	server 127.0.0.1:11211;

}

server {
			 listen 443 ssl spdy;
			 server_name firstdomen.ru www.firstdomen.ru;
			 resolver 127.0.0.1;
			 root /var/www/firstdomen.ru/www;
			 index index.html index.htm index.nginx-debian.html index.php;
			 
				ssl_stapling on;
				ssl on;
				ssl_certificate 								"/etc/letsencrypt/live/firstdomen.ru/fullchain.pem";
				ssl_certificate_key 							"/etc/letsencrypt/live/firstdomen.ru/privkey.pem";
				ssl_trusted_certificate 						"/etc/letsencrypt/live/firstdomen.ru/chain.pem"; #Если используете OCSP
				ssl_dhparam 									"/etc/letsencrypt/live/firstdomen.ru/dhparam.pem";
				ssl_session_timeout 							24h;
				ssl_session_cache shared:SSL:2m;			
				ssl_protocols       		TLSv1 TLSv1.1 TLSv1.2;
				#ssl_ciphers         		HIGH:!aNULL:!MD5;
				ssl_ciphers 				kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
				ssl_prefer_server_ciphers 	on;
				add_header Strict-Transport-Security 			"max-age=31536000;";
				add_header Content-Security-Policy-Report-Only 	"default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";				
			 
				# Limit methods, allowed on server to GET, HEAD and POST
					if ($request_method !~ ^(GET|HEAD|POST)$ ) {
						return 444;
					}

					location ~* \.(ico|gif|jpeg|jpg|png|eot|ttf|swf|woff)$ {
						root /var/www/firstdomen.ru/www;
						expires 30d;
						access_log off;
					}

					location ~* \.(css|js)$ {
						root /var/www/firstdomen.ru/www;
						expires 7h;
						access_log off;
					}

			location / {
						try_files $uri $uri/ /index.php?$args;
			}					
			 
			 location ~ \.php$ {
			 include snippets/fastcgi-php.conf;
			 fastcgi_pass unix:/var/run/php5-fpm.sock;
			 fastcgi_param HTTPS on;
			 }				
				
			 location ~ /\.ht {
			 deny all;
			 }
			 
			  location ~ ^/(wp-admin|wp-login\.php) {
							allow 10.11.12.13;
							deny all;
			  }			 
			 
			 location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
			   
				auth_basic "Enter Password";
				auth_basic_user_file /home/firstdomen.ru/user/htpasswd; 
			   
               location ~^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php5-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
               }
				   location ~*^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
						   root /usr/share/;
				   }
				}
				location /phpMyAdmin {
					   rewrite ^/* /phpmyadmin last;
				}
				
}


2. Второй домен, который был перенесен с другого сервера:
server {
    listen 80;
	server_name www.seconddomen.ru seconddomen.ru;
    return 301 https://seconddomen.ru$request_uri;
}






server {
			 listen 443 ssl spdy;
			 server_name seconddomen.ru www.seconddomen.ru;
			 resolver 127.0.0.1;
			 root /var/www/seconddomen.ru;
			 index index.html index.htm index.nginx-debian.html index.php;
			 
				ssl_stapling on;
				ssl on;
				ssl_certificate 								"/etc/letsencrypt/live/seconddomen.ru/fullchain.pem";
				ssl_certificate_key 							"/etc/letsencrypt/live/seconddomen.ru/privkey.pem";
				ssl_trusted_certificate 						"/etc/letsencrypt/live/seconddomen.ru/chain.pem"; #Если используете OCSP
				ssl_dhparam 									"/etc/letsencrypt/live/seconddomen.ru/dhparam.pem";
				ssl_session_timeout 							24h;
				ssl_session_cache shared:SSL:2m;			
				ssl_protocols       		TLSv1 TLSv1.1 TLSv1.2;
				#ssl_ciphers         		HIGH:!aNULL:!MD5;
				ssl_ciphers 				kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
				ssl_prefer_server_ciphers 	on;
				add_header Strict-Transport-Security 			"max-age=31536000;";
				add_header Content-Security-Policy-Report-Only 	"default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";				
			 
				# Limit methods, allowed on server to GET, HEAD and POST
					if ($request_method !~ ^(GET|HEAD|POST)$ ) {
						return 444;
					}

					location ~* \.(ico|gif|jpeg|jpg|png|eot|ttf|swf|woff)$ {
						root /var/www/seconddomen.ru;
						expires 30d;
						access_log off;
					}

					location ~* \.(css|js)$ {
						root /var/www/seconddomen.ru;
						expires 7h;
						access_log off;
					}

			location / {
						try_files $uri $uri/ /index.php?$args;
			}					
			 
			 location ~ \.php$ {
			 include snippets/fastcgi-php.conf;
			 fastcgi_pass unix:/var/run/php5-fpm.sock;
			 fastcgi_param HTTPS on;
			 }				
				
			 location ~ /\.ht {
			 deny all;
			 }
			 
			  location ~ ^/(wp-admin|wp-login\.php) {
			  				allow 10.11.12.13;
			  				deny all;
			  }			 
			 
			 location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
			   
				auth_basic "Enter Password";
				auth_basic_user_file /home/firstdomen.ru/user/htpasswd; 
			   
               location ~^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php5-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
               }
				   location ~*^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
						   root /usr/share/;
				   }
				}
				location /phpMyAdmin {
					   rewrite ^/* /phpmyadmin last;
				}
				
}


Файл auth_basic_user_file для обоих доменов один и тот же.
При попытке попасть в админку второго домена почему-то происходит перенаправление на админку первого домена.

Пробовал добавить еще пару доменов на сервер без WordPress и SSL. Работают без нареканий:
server {
    listen 80;
	server_name test.ru www.test.ru www.test.com;
    return 301 http://test.com$request_uri;
} 

server {
		 listen 80;
		 server_name test.com;
		 root /var/www/test.com;
		 index index.html index.htm index.nginx-debian.html index.php;	 
 }


На сколько я могу судить - ошибка именно в конфигах NGINX, хотя могу быть не прав.

Что может помочь исправить данную ситуацию?
  • Вопрос задан
  • 385 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
ShadowOfCasper
@ShadowOfCasper
Middle User Interface Web Developer
Конфигурации серверов должны полностью совпадать по версиям. От ngnix до php, mysql и их расширений. Конфигурация должна быть одинаковой, ну или как можно более схожей. Таков WordPress - надо было ставить MODX.
А вообще в конфиге включается показ ошибок. Очень советую тебе применить данную функцию)))
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Какая версия Nginx? Чтобы работать с разными доменами по SSL, Nginx должен быть с поддержкой SNI. Выполните nginx -V для начала и убедитесь, что в выводе есть TLS SNI support enabled

UPDATE: Как оказалось, проблема в Memcached. Используемый плагин Memcached Redux может корректно работать, если в wp-config.php каждого сайта добавлять константу WP_CACHE_KEY_SALT, например:
define('WP_CACHE_KEY_SALT', md5( DB_NAME . $table_prefix . __FILE__ ) );

И пояснение:

Why do I need to add the WP_CACHE_KEY_SALT definition in wp-config.php?

This step is good for anyone to do, but is highly recommended for servers that host multiple WordPress installations that are using memcached.

An example of what could happen if you don’t take the step on a multi-install server is any blog using a common database prefix (default is wp_) could take on portions of other sites using the same prefix.

I haven’t done extensive testing, but it appears that sites that use different database prefixes are likely ok to exclude this extra definition, but better to be safe than sorry.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы