хуйу нас не матерятся
В апреле этого года вышла ubuntu 16.04LTS, которая "из коробки" поддерживает php7. А в свете глобальных изменений в ядре php стало очень заманчиво переехать на обновлённую систему. Кроме этого, давно хотел перейти с apache на ngnix и с mysql на mariadb. Этим мы сегодня и займёмся.
Переезжать будут:
Заказываем новую виртуалку и ставим на неё 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;
Для этого есть шикарный мануал: 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
Копируем всё со старого сервера на новый, переносим дб, и повторяем эти действия для всех сайтов. Всё, теперь можем посмотреть что получилось.
Открываю свой свежеперенесённый 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 запускаются без каких-либо проблем.
Ещё перед переездом, замерил скорость работы wordpress (этот сайт) на старом сервере. Теперь сравним, что мы получили.
Среднее (n=10) время генерации главной страницы: 0.2373621с. Минимальное: 0.120145. Максимальное: 0.320761. Новый сервер: (nginx/1.9.15, mariadb/10.0.24, php/7.0.4-7)
Среднее (n=10) время генерации главной страницы: 0.0518795с. Минимальное: 0.046535. Максимальное: 0.071338.
Итого: выиграли пару секунд на загрузку всего сайта и на порядок ускорили генерацию страниц. Вывод однозначный- оно того стоит!