[РЕШЕНО] настройка Nginx на Digital Ocean под Drupal

Пнд, 06/01/2014 - 06:38

Настраиваю сервер Nginx для сайта c Domain Access на Диджитал Оушене (можно и на vultr.com, он дешевле и даже немного лучше).

Есть ли какие-нибудь особенности настройки его под Друпал для максимальной пользы?

----------------------------------------------------------------------------------------------------------------------

Настроил, может кому пригодится, использовал:

каплю - Debian 7 64 php 5.4 NGINX

1. Перенос:

# использовал SCP:

https://www.digitalocean.com/community/articles/how-to-migrate-a-mysql-database-between-two-servers

Но можно и проще (?):

https://www.digitalocean.com/community/articles/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh

Вроде неплохая подборка видео по переносу:

http://www.youtube.com/playlist?list=PL91978F0CB6BC302B

2. Установка сервера:

https://www.digitalocean.com/community/articles/how-to-install-drupal-with-nginx-on-an-ubuntu-13-04-vps

Написано под Ubuntu 13.04, я ставил в Debian 7, всё норм.

# Сначала ставим всё необходимое:

sudo apt-get update

sudo apt-get install mysql-server php5-mysql

sudo apt-get install nginx

# Запускаем сервер:

sudo service nginx start

# Устанавливаем PHP:

sudo apt-get install php5-fpm

# Настраиваем PHP:

открываем php.ini

sudo nano /etc/php5/fpm/php.ini

# Меняем на 0 (для безопасности):

cgi.fix_pathinfo=0

# Далее редактируем конфигурацию php5-fpm:

sudo nano /etc/php5/fpm/pool.d/www.conf

# В нём находим строку listen = 127.0.0.1:9000, и меняем 27.0.0.1:9000 на /var/run/php5-fpm.sock:

listen = /var/run/php5-fpm.sock

# Рестарт php5-fpm:

sudo service php5-fpm restart

# Загружаем друпал:

wget http://ftp.drupal.org/files/projects/drupal-7.25.tar.gz

7.25 - меняем на актуальную версию.

(я делал драшем)

# Распаковываем:

tar xzvf drupal-7.25.tar.gz

7.25 - меняем на актуальную версию.

## Создаем БД и юзера:

# Заходим:

mysql -u root -p

# Создаем БД:

CREATE DATABASE drupal;

вместо drupal - можно любое название

# создаем юзера:

CREATE USER drupaluser@localhost;

# Устанавливаем пароль нового юзера password

SET PASSWORD FOR drupaluser@localhost= PASSWORD("password");

# Даем юзеру привилегии:

GRANT ALL PRIVILEGES ON drupal.* TO drupaluser@localhost IDENTIFIED BY 'password';

# Обновляем MySQL:

FLUSH PRIVILEGES;

# Выходим из MySQL:

# Копируем файлы:

Директория сервера в Ubuntu 13.04 находится в /usr/share/nginx/html/.

(У меня в Debian 7 в /usr/share/nginx/www/)

# Создаем директорию drupal:

sudo mkdir /usr/share/nginx/html/drupal

# Копируем файлы друпала из своей домашней директории:

cd ~
sudo mv drupal-7.25/* /usr/share/nginx/html/drupal/

## Настройка Друпала:

# Копируем default.settings.php и переименовываем в settings.php

sudo cp /usr/share/nginx/html/drupal/sites/default/default.settings.php /usr/share/nginx/html/drupal/sites/default/settings.php

# Даем права на запись:

sudo chmod a+w /usr/share/nginx/html/drupal/sites/default/settings.php

# Меняем права для директории:

sudo chmod a+w /usr/share/nginx/html/drupal/sites/default

ИЛИ Есть классный скрипт (https://www.drupal.org/node/244924) который автоматически проставляет везде нужные права :

<pre>#!/bin/bash
if [ $(id -u) != 0 ]; then
        printf "This script must be run as root.\n"
        exit 1
fi
drupal_path=${1%/}
drupal_user=${2}
httpd_group="${3:-www-data}"
# Help menu
print_help() {
cat <<-HELP
This script is used to fix permissions of a Drupal installation
you need to provide the following arguments:
1) Path to your Drupal installation.
2) Username of the user that you want to give files/directories ownership.
3) HTTPD group name (defaults to www-data for Apache).
Usage: (sudo) bash ${0##*/} --drupal_path=PATH --drupal_user=USER --httpd_group=GROUP
Example: (sudo) bash ${0##*/} --drupal_path=/usr/local/apache2/htdocs --drupal_user=john --httpd_group=www-data
HELP
exit 0
}
# Parse Command Line Arguments
while [ $# -gt 0 ]; do
        case "$1" in
                --drupal_path=*)
drupal_path="${1#*=}"
;;
--drupal_user=*)
drupal_user="${1#*=}"
;;
--httpd_group=*)
httpd_group="${1#*=}"
;;
--help) print_help;;
*)
printf "Invalid argument, run --help for valid arguments.\n";
exit 1
esac
shift
done
if [ -z "${drupal_path}" ] || [ ! -d "${drupal_path}/sites" ] || [ ! -f "${drupal_path}/core/modules/system/system.module" ] && [ ! -f "${drupal_path}/modules/system/system.module" ]; then
printf "Please provide a valid Drupal path.\n"
print_help
exit 1
fi
if [ -z "${drupal_user}" ] || [ $(id -un ${drupal_user} 2> /dev/null) != "${drupal_user}" ]; then
printf "Please provide a valid user.\n"
print_help
exit 1
fi
cd $drupal_path
printf "Changing ownership of all contents of "${drupal_path}":\n user => "${drupal_user}" \t group => "${httpd_group}"\n"
chown -R ${drupal_user}:${httpd_group} .
printf "Changing permissions of all directories inside "${drupal_path}" to "rwxr-x---"...\n"
find . -type d -exec chmod u=rwx,g=rx,o= '{}' \;
printf "Changing permissions of all files inside "${drupal_path}" to "rw-r-----"...\n"
find . -type f -exec chmod u=rw,g=r,o= '{}' \;
printf "Changing permissions of "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n"
cd sites
find . -type d -name files -exec chmod ug=rwx,o= '{}' \;
printf "Changing permissions of all files inside all "files" directories in "${drupal_path}/sites" to "rw-rw----"...\n"
printf "Changing permissions of all directories inside all "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n"
for x in ./*/files; do
find ${x} -type d -exec chmod ug=rwx,o= '{}' \;
find ${x} -type f -exec chmod ug=rw,o= '{}' \;
done
echo "Done settings proper permissions on files and directories"

Копируешь код данный выше в файл и называешь его, нарример "fix-permissions.sh" и запускаешь: <pre>sudo bash fix-permissions.sh --drupal_path=your/drupal/path --drupal_user=your_user_name</pre> т.е. с нашими данными, это примерно так: <pre>sudo bash fix-permissions.sh --drupal_path=/usr/share/nginx/www/директория_нашего_сайта --drupal_user=www-data</pre>

# Устанавливаем php модуль:

sudo apt-get install php5-gd

# Рестартим

sudo service php5-fpm restart

## Настраиваем виртуальные хосты:

# Копируем дефолтный конфиг и переименовываем в drupal (конфиг для нашего сайта):

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/drupal

# Редактируем наш конфиг:

sudo nano /etc/nginx/sites-available/drupal

Как то так:

server {
        listen   80;
        root /usr/share/nginx/html/drupal;
        index index.php index.html index.htm;
        server_name 162.243.9.129;
        location / {
                try_files $uri $uri/ /index.php?q=$uri&$args;
        }
        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/html/drupal;
        }
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9$
        location ~ \.php$ {
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;

                 }

Т.е.:

- поменяли root на /usr/share/nginx/html/drupal

- поменяли server_name из localhost на доменное имя твоего сайта или его IP

- поменяли "try_files $uri $uri/ /index.html;" на "try_files $uri $uri/ /index.php?q=$uri&$args;"

!!! Есть более интересный вариант, если установить

sudo apt-get install nginx-doc

то в директории /usr/share/doc/nginx-doc/examples/, уже есть готовый конфиг, заточенный под друпал:

cd /usr/share/doc/nginx-doc/examples/
gunzip drupal.gz

# Активируем конфигурацию:

sudo ln -s /etc/nginx/sites-available/drupal /etc/nginx/sites-enabled/drupal

# Удаляем дефолтную:

sudo rm /etc/nginx/sites-enabled/default

# Перегружаем сервер:

sudo service nginx restart

# Открываем IP сайта (или домен)/drupal/setup.php и устанавливаем друпал.
-------------------------------------------------------------------------------------------

А вот здесь уже готовый конфиг, но немного сложноватый:

https://github.com/perusio/drupal-with-nginx/blob/D7/README.md

с этим (от perusio) конфигом используем сборку сервера из http://debian.perusio.net/unstable/

3. Настройка мультисайтинга:

https://www.digitalocean.com/community/articles/how-to-enable-multiple-sites-on-a-drupal-installation-on-ubuntu-12-04

4. настройка DNS:

я просто добавил домены в ДНС на оушене и прописал у регистратора - ns1.digitalocean.com ns2.digitalocean.com ns3.digitalocean.com.

5. Кэширование:

http://www.echoditto.com/blog/more-drop-bucket-drupal-8-nginx-and-microcaching

# Микрокэширование

в файле конфига твоего сайта на nginx добавляешь

location ~ \.php$ {
set $no_cache "";
if ($request_method !~ ^(GET|HEAD)$) {
set $no_cache "1";
}
if ($no_cache = "1") {
add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/";
add_header X-Microcachable "0";
}
if ($http_cookie ~ SESS) { #checks an auth'd user
set $no_cache "1";
}
#... lots of fastcgi stuff to do the caching
}

http://valic.me/article/how-configure-nginx-php-fpm-mysql-memcached-apc-and-drush-drupal-7-debian-70-wheezy-20#.UtQKovQW2Pt

http://www.accella.net/drupal-7-memcached-apc-nginx-php5-fpm-squeeze-optimization/

# Сжатие gzip:

http://stackoverflow.com/questions/15999606/enable-gzip-compression-with-nginx

я просто вот так раскомментировал в конфиге nginx /etc/nginx/nginx.conf:

##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

6. Защита:

- связка nginx, logwatch, fail2ban и ufw http://habrahabr.ru/post/153589/

пока только fail2ban поставил, якобы из коробки работает, посмотрим:

- http://putty.org.ru/articles/fail2ban-ssh.html

Мэмкеш настроить пока не получилось (php 5.4).

Панель не ставил - но хорошие отзывы по веста.

7. Для внеклассного чтения подробные/детальные руководства/гайды:

Очень неплохое руководства в друпал-nginx группе: https://groups.drupal.org/node/388488

С картинками + защита от атак +SSL: http://dashohoxha.blogspot.ru/2012/10/using-nginx-as-web-server-for-drupal.html

PS: Кому что непонятно пишите в коментах, это позволит мне лучше расписать тему.

________________________________________________________________________________________________________________

<<<ПРОДОЛЖЕНИЕ ЗДЕСЬ>>>, т.к. сюда уже не вмещается.

1 Спасибо

Комментарии

Аватар пользователя Moel
3 года 4 недели назад Moel #

Отпишь о результатах если попробуешь.

0 Спасибо
Аватар пользователя ttenz
3 года 4 недели назад ttenz #
Moel написал:

ок

0 Спасибо
Аватар пользователя Moel
3 года 3 недели назад Moel #

Бесплатный тест на Loadimpact:

0 Спасибо
Аватар пользователя ttenz
2 года 11 months назад ttenz #

удивительны дела: сейчас перенес один из своих сайтов на DO с патруля, так он стал в 5 раз быстрее летать и бесплатно (т.к. на DO там остальные сайты крутятся уже, а этот не решался, получалось на две кассы платить.) на патруле его обслуживание стоило в 2 раза дороже, чем на DO.

0 Спасибо
Аватар пользователя Moel
2 года 11 months назад Moel #

Блин когда я на патруль пришел, все было хорошо. Потом все хуже и хуже. Вплоть последний раз бэпак базы не смог сделать (нужен был когда переезжал). Написали что модуль какой то мешает. Хер сним мне там нужна была одна таблица вручную забэпапил ее. Не считая того что половина их ней админки работает еле еле. Да и скорость земля и небо по сравнению с тем же do. Во общем съехал и рад.

0 Спасибо
Аватар пользователя ttenz
2 года 10 months назад ttenz #

поменял в control panel кернел на самый свежий и сайты стали намного лучше работать (http://www.webpagetest.org):

0 Спасибо
Аватар пользователя Moel
2 года 10 months назад Moel #

Странные какието результаты. У тебя все А. У меня не все но Score больше

0 Спасибо
Аватар пользователя ttenz
2 года 10 months назад ttenz #
Moel написал:

score оценивает степень оптимизации,на ссылку score нажмешь, увидишь.

у меня картинки в спрайты не скомбинированы.

мне больше интересно, почему у меня была картинка как у тебя и при смене кернела всё ушло в зеленую зону.

0 Спасибо
Аватар пользователя bsyomov
2 года 5 months назад bsyomov #
ttenz написал:
пока только fail2ban поставил, якобы из коробки работает, посмотрим

Из коробки работает только защита от брутфорса ssh паролей. А может он куда больше.

ttenz написал:
Панель не ставил - но хорошие отзывы по веста.

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

Фаерволл поставить надо. Также, неплохо чем-нибудь мониторить нагрузку, хотя бы munin.

ttenz написал:
В нём находим строку listen = 127.0.0.1:9000, и меняем 27.0.0.1:9000 на /var/run/php5-fpm.sock:

Если пользоваться сокетами, стоит установить listen_backlog явно в 4096 или больше. Иначе бывают глюки неприятные.

ttenz написал:
Директория сервера в Ubuntu 13.04 находится в /usr/share/nginx/html/.
(У меня в Debian 7 в /usr/share/nginx/www/)

Там находится шаблончик для виртуального хоста по умолчанию. А сайты надо класть в директорию пользователя-хозяина сайта или в /var/www/

Вообще, для серьёзного продакшена ещё очень немало надо сделать, начать стоит с владельца файлов и прав... Владельцем файлов должен быть отнюдь не www-data, а другой пользователь.
Также, например, разумно настроить лимиты в php и open_basedir, и сделать отдельную tmp папку для сайта выше его wwwroot.

Очень важная тема пропущена - настройка mysql innodb хранилища.

Также не раскрыт вопрос настройки почты, хотя в условиях мелкого VPS, лучше воспользоваться внешним сервисом, в Drupal использовать отправку через SMTP, и поставить/настроить какой-нибудь ssmtp для релея через него сообщений сервера.

И перечисленное выше, это только очевидные вещи - некая вершина айсберга.

В общем, как обычно, для пошаговых руководств по настройке VPS, даны только минимально необходимые шаги, для хоть какой-нибудь работы, и надо понимать, что это только 1/10 того, что реально надо настраивать на сервере в итоге... Ну и чайникам реально не место в настройке серверов, как бы на это кто не обижался - это сложная тема, требующая много специфичных знаний - куда больше, чем создание сайта на друпал, с программированием на PHP вместе. А следование таким пошаговым руководствам ведёт к пополнению ботнетов, в основном, и дальнейшему разочарованию: "Ааа у меня всё перестало почему-то работать"/"Как у меня взломали сайт?" и.т.п. =)

0 Спасибо
Аватар пользователя ttenz
2 года 5 months назад ttenz #
bsyomov написал:

спасибо.

bsyomov написал:
Фаерволл поставить надо

да.

так настроил - http://www.drupal.ru/node/114079

0 Спасибо
Аватар пользователя ttenz
2 года 4 months назад ttenz #
bsyomov написал:
установить listen_backlog явно в 4096 или больше

listen.backlog
0 Спасибо
Аватар пользователя PVasili
2 года 4 months назад PVasili #

Сколько память дроплет и своим my.cnf под неё поделитесь?

0 Спасибо
Аватар пользователя ttenz
2 года 4 months назад ttenz #
PVasili написал:
Сколько память дроплет и своим my.cnf под неё поделитесь?

1GB Ram 30GB SSD Disk London 1 Debian redis

my.cnf стандартный, не затачивал, т.к. и так всё прекрасно работает.

0 Спасибо
Аватар пользователя bsyomov
2 года 4 months назад bsyomov #

А вот это напрасно, особенно, при использовании innodb.

0 Спасибо
Аватар пользователя ttenz
2 года 4 months назад ttenz #
bsyomov написал:
А вот это напрасно, особенно, при использовании innodb.

благодарю, есть место для совершенства.

0 Спасибо
Аватар пользователя toshic
2 года 4 months назад toshic #

Я пока на апаче сижу в DO, дроплет с Debian7, так как нагрузки на бложик практически никакой. Чтобы почта отправлялась с сайта использую postfix.
Серверное администрирование глубокая тема и надо действительно реально в этом шарить, чтобы настраивать сервер для хостинга

0 Спасибо
Аватар пользователя bsyomov
2 года 4 months назад bsyomov #
ttenz написал:
благодарю, есть место для совершенства.

Минимум:
innodb_flush_method = O_DIRECT

innodb_buffer_pool_size
В идеале иметь чуть больше объёма базы, но это не всегда возможно. В любом случае лучше выделить по возможности больше.

innodb_file_per_table
Очень полезная опция, позволяющая не тратить лишнее место в разрастающемся ibdata, и уменьшить последствия при повреждении его структуры.

innodb_flush_log_at_trx_commit
Часто, полезно изменить на 2, или даже 0.

0 Спасибо
Аватар пользователя ttenz
2 года 4 months назад ttenz #

так дополнил

innodb_flush_method = O_DIRECT
innodb_buffer_pool_size = 11G
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2

но с параметром innodb_buffer_pool_size, mysql не рестартнула. С остальными параметрами сайт начал заметно тормозить.

0 Спасибо
Аватар пользователя toshic
2 года 4 months назад toshic #

Всё равно в итоге прийдешь к связке nginx+apache.
php-fpm работает практически так же как mod-php апача, обрабатывая запросы php в цикле и поэтому имеет смысл оставить php апачу, а статику и медленных клиентов отдать nginx, тогда будет баунти. А так... шило на мыло. Может я в чем то и ошибаюсь...

0 Спасибо
Аватар пользователя ttenz
2 года 4 months назад ttenz #
toshic написал:
Может я в чем то и ошибаюсь...

посмотрим, пока всё летает, были проблемы только с китайскими ботами, разобрался - http://www.drupal.ru/node/114079

"Apache/Nginx/Lighttpd/other web server. Does it matter which one I choose? In short, No."

http://drupal.stackexchange.com/questions/71610/nginx-vs-apache-are-there-any-actual-usage-comparisons-and-statistcs-out-there

0 Спасибо
Аватар пользователя toshic
2 года 4 months назад toshic #

ну да.

0 Спасибо
Аватар пользователя bsyomov
2 года 4 months назад bsyomov #

11 гигов это явно больше, чем есть на виртуалке. =) Надо было читать внимательнее, и подходить разумно.
Остальное надо измерять после прогрева кеша запросов.
Медленнее уж точно быть не должно.

Toshik:По скорости также, тут все почти время занимает работа самого php. А вот памяти, специализированный менеджер процессов, тратит в пустую куда меньше апача, с массой модулей до кучи.

0 Спасибо
Аватар пользователя ttenz
2 года 4 months назад ttenz #
bsyomov написал:
11 гигов это явно больше, чем есть на виртуалке. =)

du -sk /var/lib/mysql
11518512        /var/lib/mysql

11518512/1024=11248.546875 MB

du -ch /var/lib/mysql | grep total
11G     total
0 Спасибо
Аватар пользователя Moel
2 года 4 months назад Moel #
PVasili написал:
Сколько память дроплет и своим my.cnf под неё поделитесь?

mysqltuner ставьте, погоняйте пару дней и настраивайте, У меня сильный прирост был.

0 Спасибо
Аватар пользователя ttenz
2 года 4 months назад ttenz #
Moel написал:
mysqltuner ставьте, погоняйте пару дней и настраивайте, У меня сильный прирост был.

ок, так и сделаю

0 Спасибо
Аватар пользователя bsyomov
2 года 4 months назад bsyomov #
ttenz написал:
du -sk /var/lib/mysql
11518512 /var/lib/mysql

Вот только проблема в том, что этот параметр управляет выделением памяти под страничный кеш innodb. А 11ГБ оперативки на виртуалке вашей конечно нет.
Кстати, с помощью du считать объём данных в базах не правильно - их меньше, возможно, очень значительно.

Moel написал:
mysqltuner ставьте, погоняйте пару дней и настраивайте,

Это не совсем хороший совет, если рассматривать его как "запустил - настроил как написано". Рекомендации, которые даёт этот скрипт весьма общие, и не учитывают, например, количество памяти, которую _стоит_ выделить mysql, если это не единственное приложение на сервере, да и многое другое, кстати.
Но им удобно смотреть статистику, например, тот же общий объём innodb баз, общий объём индексов myisam, эффективность кешей и.т.п.

0 Спасибо
Аватар пользователя ttenz
2 года 4 months назад ttenz #
bsyomov написал:
А 11ГБ оперативки на виртуалке вашей конечно нет.

пробовал, рекомендуемый percona, объем в 512MB, но та же история - mysql не запустилась.

0 Спасибо
Аватар пользователя bsyomov
2 года 4 months назад bsyomov #
ttenz написал:
но та же история - mysql не запустилась.

А в логе что?

0 Спасибо
Аватар пользователя ttenz
2 года 4 months назад ttenz #
bsyomov написал:
А в логе что?

а уже ничего, с такими запустилась:

innodb_flush_method = O_DIRECT
innodb_buffer_pool_size = 512M
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2

сейчас по скорости оттестирую.

0 Спасибо
Аватар пользователя ttenz
2 года 4 months назад ttenz #
ttenz написал:
сейчас по скорости оттестирую.

вроде такая же (в целом), но ощущение, что пошустрее стал работать.

0 Спасибо
Аватар пользователя Moel
2 года 4 months назад Moel #
bsyomov написал:
Это не совсем хороший совет

Там же естественно смотреть сколько по максимуму будет используемый обьем оперативки и складывать с уже используемыми например php java. И подгонять значения. А то падать будет. У меня например solr постоянно валялся из за превышения.

0 Спасибо
Аватар пользователя toshic
2 года 4 months назад toshic #
bsyomov написал:
Toshik:По скорости также, тут все почти время занимает работа самого php. А вот памяти, специализированный менеджер процессов, тратит в пустую куда меньше апача, с массой модулей до кучи.

Да, уже ознакомился с нюансами. Спасибо.
p.s.ради любопытства и не только прикрутил пока nginx к апачу, отключил кеш и запустил простую проверку без фанатизма на loaddy. сервер лег ),вернее не с ервер, а mysql пошла в отказ, там всего несколько нод и вьюсов пока. Апач вчера в одиночку выдержал запросы без кеша, mysql не отключился. Но в принципе, я еще ничего особо не настраивал. У меня правда дроплет всего с 512 метров оперативы

0 Спасибо
Аватар пользователя toshic
2 года 4 months назад toshic #
Moel написал:
Вот мой результат по loaddy http://joxi.ru/Vm67bBDfE91N2Z

шикарно, учитывая объем сайта
у меня под кешем также, только скорость загрузки 0.23 с, но сайт практически еще пустой

0 Спасибо
Аватар пользователя PVasili
2 года 4 months назад PVasili #

Что-то с завидной регулярность раз в 4-5 дней валится MySQL, По ходу там иди диски битые или косяк где-то в дроплете.

0 Спасибо
Аватар пользователя PVasili
2 года 4 months назад PVasili #

Та врядли:

InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Error: trying to add tablespace 14 of name './my_base/any_table.ibd'
InnoDB: to the tablespace memory cache, but tablespace
InnoDB: 14 of name './roundcube/system.ibd' already exists in the tablespace
InnoDB: memory cache!
150407 15:55:54 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

Каждый раз (пока 3 инцидента было) на разные файлы пишет. Хотя InnoDB таблиц нет вообще в базах.
Я CentOS поставил с Vesta. Такое ощущение: как диски битые.
С ключом startsos запустилось.
Думаю, если повторяться будет убить MySQL и PostgreSQL попробовать.

0 Спасибо
Аватар пользователя ttenz
2 года 4 months назад ttenz #
PVasili написал:
Такое ощущение: как диски битые.

так почитал по инету, ребята начали уходить с ДО, хвалят VULTR, с виду похоже, но мне пока цены понравились.

0 Спасибо
Аватар пользователя PVasili
2 года 4 months назад PVasili #
ttenz написал:
по ходу, база повредилась

Это понятно :) но тут нет InnoDB таблиц и это происходит с ужасающей частотой раз в ~4-5 дней.

0 Спасибо
Аватар пользователя bsyomov
2 года 4 months назад bsyomov #

А места на диске свободного достаточно? Такое часто происходит, при нехватке места. При этом на совершенно целых дисках.

PVasili написал:
Хотя InnoDB таблиц нет вообще в базах.

Всё же есть. =)

0 Спасибо
Аватар пользователя PVasili
2 года 4 months назад PVasili #
bsyomov написал:
А места на диске свободного достаточно? Такое часто происходит, при нехватке места. При этом на совершенно целых дисках.

Как минимум ~16-17Gb.

bsyomov написал:
Всё же есть. =)

Вы шутите ? :)

...
Engine: MyISAM
Version: 10
Row_format: Dynamic
...

Судя по скупым логам MySQL что точно глючит понять сложно.
Ищет то, чего нет априори и валится. Стартует после startsos :(
Пока ждем следующего раза.

0 Спасибо
Аватар пользователя PVasili
2 года 4 months назад PVasili #
kosHta написал:
с $20 на DO можно импровизировать

х.м. с такой суммы можно и в другом месте импровизировать

Очередной завал... Кто расшифровать сможет mysqld.log:

....
150407 16:27:22 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
150407 16:27:22 [Note] Plugin 'FEDERATED' is disabled.
150407 16:27:22 InnoDB: The InnoDB memory heap is disabled
150407 16:27:22 InnoDB: Mutexes and rw_locks use GCC atomic builtins
150407 16:27:22 InnoDB: Compressed tables use zlib 1.2.3
150407 16:27:22 InnoDB: Using Linux native AIO
150407 16:27:22 InnoDB: Initializing buffer pool, size = 8.0M
150407 16:27:22 InnoDB: Completed initialization of buffer pool
150407 16:27:22 InnoDB: highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 157342092
150407 16:27:22  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Error: trying to add tablespace 14 of name './my_base/file.ibd'
InnoDB: to the tablespace memory cache, but tablespace
InnoDB: 14 of name './roundcube/system.ibd' already exists in the tablespace
InnoDB: memory cache!
150407 16:27:22 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

InnoDB вообще таблиц нет в базе :) Какая то пародия, а не SQL сервер этот MySQL

0 Спасибо
Аватар пользователя PVasili
2 года 4 months назад PVasili #

Тут нашлось решение. Будем наблюдать...

0 Спасибо
Аватар пользователя toshic
2 года 4 months назад toshic #

поставил nginx с postgresql, мускуль не стал ставить и дедик ожил.админка пошустрее работает.падения прекратились, как было с мускулем. беда только что восьмерка в бете на постгрес становитьсо не желает. придется патчить ради игрушки).

0 Спасибо
Аватар пользователя PVasili
2 года 4 months назад PVasili #
toshic написал:
дедик ожил.

Какая OS и панель? Сколько памяти?

Ещё раз завалится - поставлю постгри...

0 Спасибо

Страницы