Всё о web

Для чайников и не только


Переезд на новый сервер

Апрель 27, 2016

В апреле этого года вышла ubuntu 16.04LTS, которая "из коробки" поддерживает php7. А в свете глобальных изменений в ядре php стало очень заманчиво переехать на обновлённую систему. Кроме этого, давно хотел перейти с apache на ngnix и с mysql на mariadb. Этим мы сегодня и займёмся.

Переезжать будут:

  • пара сайтов на wordpress;
  • сайт на joomla;
  • форум на fluxbb;
  • тестовый opencart;
  • тестовый hotbackup.

1. Шаг первый, создаём сервер

Заказываем новую виртуалку и ставим на неё ubuntu 16.04X32. Подключаемся и первым делом устанавливаем mariadb. По опыту работы с mysql, знаю, что его нужно ставить в первую очередь. На разных хостингах установочные образы вроде бы одной и той же ubuntu могут очень сильно отличаться, и часто пакет mysql идёт в комплекте битый. Digitalocean этим никогда не грешил, но перестраховаться стоит.

> apt-get install mariadb-server

Установка проходит без проблем. База ставится с пустым паролем от пользователя root.

Подключаемся к базе и меняем пароль:

> mysql -u root -h localhost
> use mysql;
> update user set password='your_new_password' where User='root';

По умолчанию в mariadb под рутом можно подключаться только из консоли, поэтому сразу добавляем нового пользователя - администратора:

> CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
> FLUSH PRIVILEGES;

2. База готова, переходим к ngnix

Для этого есть шикарный мануал: http://help.ubuntu.ru/wiki/nginx-phpfpm. Только не забываем, что у нас php7, а не php5.

В дополнении к мануалу, в конфиг ngnix (/etc/ngnix/ngnix.conf), в секцию "http" нам нужно будет добавить строчку:

client_max_body_size 16m;

По умолчанию client_max_body_size выставлен в 1Мб, этого будет очень мало.

3.После этого можем переносить сайты

Для каждого сайта создаём отдельный конфиг в /etc/nginx/sites-available/

> touch any_domain.ru

Пример конфига для wordpress:

server {
        server_name any_domain.ru;
        root /var/www/any_domain.ru; # путь к WP
        index index.html index.htm index.php;
        proxy_read_timeout 20;
        proxy_send_timeout 20;
        gzip on; # включаем сжатие gzip
        gzip_disable "msie6";
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

        location ~ /\. {
                deny all; # запрет для скрытых файлов
        }

        location ~* /(?:uploads|files)/.*\.php$ {
                deny all; # запрет для загруженных скриптов
        }

        location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
                access_log off;
                log_not_found off;
                # expires max;
                # кеширование статики
        }

        location / {
                try_files $uri $uri/ /index.php?$args; # permalinks
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                # fastcgi_index index.php;
        }
}

После чего делаем ссылку на него:

> ln -s /etc/ngnix/sites-available/any_domain.ru ../sites-enabled/any_domain.ru

И создаём папку для нашего сайта:

> mkdir /var/www/any_domain.ru

Копируем всё со старого сервера на новый, переносим дб, и повторяем эти действия для всех сайтов. Всё, теперь можем посмотреть что получилось.

4. Совместимость

Открываю свой свежеперенесённый allwebstuff.info и вижу, что отвалился плагин "WP Code Highlight". Чтобы узнать, в чём именно ошибка, открываем index.php и в самом верху добавляем:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

Обновляем страницу и видим следующую ошибку:

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /var/www/allweb/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

Это значит, что плагин не готов к переезду на php7. Отключаем его, и, перебрав пачку никчёмных модулей, находим "Crayon Syntax Highlighter", его и оставляем.

Больше проблем нет, joomla 3.5, fluxbb 1.5.9 и hotbackup запускаются без каких-либо проблем.

5. Результаты

Ещё перед переездом, замерил скорость работы wordpress (этот сайт) на старом сервере. Теперь сравним, что мы получили.

Старый сервер (apache/2.4.12, mysql/5.6.28, php/5.6.11)

apache2 php5.6

apache2 php5.6

Среднее (n=10) время генерации главной страницы: 0.2373621с. Минимальное: 0.120145. Максимальное: 0.320761.

Новый сервер: (nginx/1.9.15, mariadb/10.0.24, php/7.0.4-7)

nginx php7

nginx php7

Среднее (n=10) время генерации главной страницы: 0.0518795с. Минимальное: 0.046535. Максимальное: 0.071338.

Итого: выиграли пару секунд на загрузку всего сайта и на порядок ускорили генерацию страниц. Вывод однозначный- оно того стоит!



Комментарии

Оставить комментарий:

Ваш e-mail не будет опубликован. Обязательные поля помечены *