Настраиваю сервер 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-d...
Но можно и проще (?):
https://www.digitalocean.com/community/articles/how-to-use-sshfs-to-moun...
Вроде неплохая подборка видео по переносу:
http://www.youtube.com/playlist?list=PL91978F0CB6BC302B
2. Установка сервера:
https://www.digitalocean.com/community/articles/how-to-install-drupal-wi...
Написано под Ubuntu 13.04, я ставил в Debian 7, всё норм.
# Сначала ставим всё необходимое:
sudo apt-get install mysql-server php5-mysql
sudo apt-get install nginx
# Запускаем сервер:
# Устанавливаем PHP:
# Настраиваем PHP:
открываем php.ini
# Меняем на 0 (для безопасности):
# Далее редактируем конфигурацию php5-fpm:
# В нём находим строку listen = 127.0.0.1:9000, и меняем 27.0.0.1:9000 на /var/run/php5-fpm.sock:
# Рестарт php5-fpm:
# Загружаем друпал:
7.25 - меняем на актуальную версию.
(я делал драшем)
# Распаковываем:
7.25 - меняем на актуальную версию.
## Создаем БД и юзера:
# Заходим:
# Создаем БД:
вместо drupal - можно любое название
# создаем юзера:
# Устанавливаем пароль нового юзера password
# Даем юзеру привилегии:
# Обновляем MySQL:
# Выходим из MySQL:
# Копируем файлы:
Директория сервера в Ubuntu 13.04 находится в /usr/share/nginx/html/.
(У меня в Debian 7 в /usr/share/nginx/www/)
# Создаем директорию drupal:
# Копируем файлы друпала из своей домашней директории:
sudo mv drupal-7.25/* /usr/share/nginx/html/drupal/
## Настройка Друпала:
# Копируем default.settings.php и переименовываем в settings.php
# Даем права на запись:
# Меняем права для директории:
ИЛИ Есть классный скрипт (https://www.drupal.org/node/244924) который автоматически проставляет везде нужные права :
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 модуль:
# Рестартим
## Настраиваем виртуальные хосты:
# Копируем дефолтный конфиг и переименовываем в drupal (конфиг для нашего сайта):
# Редактируем наш конфиг:
Как то так:
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
# Активируем конфигурацию:
# Удаляем дефолтную:
# Перегружаем сервер:
# Открываем 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-s...
4. настройка DNS:
я просто добавил домены в ДНС на оушене и прописал у регистратора - ns1.digitalocean.com ns2.digitalocean.com ns3.digitalocean.com.
5. Кэширование:
http://www.echoditto.com/blog/more-drop-bucket-drupal-8-nginx-and-microc...
# Микрокэширование
в файле конфига твоего сайта на nginx добавляешь
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-...
http://www.accella.net/drupal-7-memcached-apc-nginx-php5-fpm-squeeze-opt...
# Сжатие gzip:
http://stackoverflow.com/questions/15999606/enable-gzip-compression-with...
я просто вот так раскомментировал в конфиге 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-drup...
PS: Кому что непонятно пишите в коментах, это позволит мне лучше расписать тему.
________________________________________________________________________________________________________________
<<<ПРОДОЛЖЕНИЕ ЗДЕСЬ>>>, т.к. сюда уже не вмещается.
Комментарии
как-то так
спасибо, на досуге полистаю
Вроде Drupal 7 плохо дружит с php 5.4
вроде как memcahe плохо дружит, якобы стабильной версии пока нет.
а друпал норм летает.
куча варнингов и тому подобное у друпал 7 на php 5.4.
не знаю, у меня всё чисто D7:
PHP 5.4.4-14+deb7u7 (cli) (built: Dec 12 2013 08:42:07)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
Спасибо, сейчас попробую все заново!
Конфигом mysql можешь поделится?
а он (пока) у меня дефолтный, я его никак не правил /etc/mysql/my.cnf
MySQLTuner
получается ты вообще от индейца (apache) отказался?
да.
«Apache is like Microsoft Word, it has a million options but you only need six. Nginx does those six things, and it does five of them 50 times faster than Apache.»
-- Chris Lea
ох ох, главное что б сео-слайдер улетно работал и конфиг ngnix-а грамотно настрой, а то еще через статику кто проникнет )))
Брал конфиг nginx отсюда, всё шикарно работает.
а сервер из сорцев собирал (+Upload Progress Module)?
уже не помню, но скорее всего из его же репозитария http://debian.perusio.net/unstable/
ага теперь понятно.
Благодарю.
ядрышко норм работает а вот при большом числе контрибов варнинги будут сыпаться, тот же кикстартер изобилует ими на 5.4
а конфиг мне нравится https://github.com/perusio/drupal-with-nginx
Вот такая строчка в логе есть, оно?
[pool www1] child 15530, script '/home/oldsaratov/www/index.php' (request: "GET /index.php") executing too slow (6.188998 sec), logging
да только чаще там бывает тысячи секунд, сейчас правда пропало может изза keepalive 1 (вместо 5), но было проблемой
Посмотрел логи за последний месяц - дольше 10 секунд нигде нет
я не стал его слепо использовать, я начал с простого, голого конфига, с осмысления каждого изменения, его тестированием, материал брал из разных источников, в т.ч. и из этого конфига тоже. К сожалению, в этой теме дополнения/изменения уже не добавляются, видимо исчерпал лимит, полную версию поста сделаю на отдельном ресурсе.
полезно будет, так что ждем!
Читаю
Подводный камень №1:
интересную вещь обнаружил - кернел на лету в можно менять Settings - Kernel, поменял на 32 разрядность Debian 7.1., т.к. памяти меньше 3 Гб, то якобы лучше 32, меньше памяти ест, проверим.
!!!изменил, перегрузил, не перегрузилась, пришлось из образа восстанавливать и вернуть версию кернела, надо было сразу при создании дроплетки.
Чем оно лучше? если даже и лучше мы этого не заметим.
очень интересная статья - http://pastebin.com/ZkY99qFe
да, я читал об этом в гугле. Но ведь если это действительно однозначно так, то оушен по идее не должен предлагать х64 дроплеты в случае если мы выбираем дроплет с маленькими ресурсами 500мб
да, почему же, типа свобода, не знаю, я на 64 512 мб, норм, летает, быстрее чем на it-patrol было.
еще вопрос к автору - сколько памяти у вас (оперативной), и ядер?
UPD
не обновил страницу.
Выходит 512 и одно ядро, уже понял. Я тоже начал с этого тарифа, но если удастся настроить чтобы не падало, перейду на тариф с гигом памяти.
Я пока сижу на ЛАМПе, но если не получится, попробую вашу инструкцию
пока не торопись, скоро выйдет обновленный пост, но на другом ресурсе, дам ссылку позже.
ок, буду ждать.
А почему выбрал Debian 7 64? Там большая будет разница между ним и убунтой 12.04 или 13.04?
но что 64 пожалел, для 512 Мб надо бы 32, а Debian он вылизанный, стабильный, обкатанный.
не, там пути к сайту разные и всё.
ок, при написании статьи прошу учесть существование таких материалов (может что-то найдется полезное)
https://github.com/perusio/drupal-with-nginx
http://pastebin.com/ZkY99qFe
https://www.digitalocean.com/community/articles/how-to-install-drupal-wi...
https://www.digitalocean.com/community/articles/how-to-install-linux-ngi...
Немного критики:
Не очень удачное решение. т.к. при такой конфигурации может не работать модуль globalredirect.
На мой взгляд лучше будет так:
try_files $uri @drupal;
}
location @drupal { ...
Почему?
У Вас imagecache и агрегация js/css работают?
Обычно выглядит:
Бессиыссленно:
подумаю, но у меня всё работает и глобалредирект и картинки и сжатие (css точно).
но по картинкам я дописывал (сюда инфа уже не добавляется):
try_files $uri @rewrite;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
текущая конфигурация здесь описана - http://saitodelatel.ru/nastroika-servera-na-digital-ocean-pod-drupal
я пока не дошел до этапа осмысления, пока просто поиск решений и их тестирование, всё работает как бы.
Сделал все по как описано в статье, при попытке открыть страницу выдает 403 ошибку, почему - не могу разобраться. Сменил владельца папки с сайтом на www-data и вообще доступ выставил на 777, где еще может быть собака зарыта?
перечитай здесь, сравни конфиги, выложи логи - http://saitodelatel.ru/nastroika-servera-na-digital-ocean-pod-drupal
перенос сайта, новый сайт?
логин пароль базы сеттингс?
использовалась панель?
Делаю перенос сайта, конфиги переправил на те что по ссылке, логи какие именно?
В error.log 2014/04/28 15:28:35 [error] 5760#0: *1 directory index of "/usr/share/nginx/html//" is forbidden, client: 5.18.184.29, server: **, request: "GET / HTTP/1.1", host: "188.226.***.***"
Логин\пароль от базы прописал в сеттингах друпала
Все делаю по ssh
если структура не /usr/share/nginx/www/, то соответственно и в руководстве нужно использовать эту структуру, соответственно и в конфигах не root /usr/share/nginx/www/_наш_сайт_;, а /usr/share/nginx/html/ /_наш_сайт_;.
+ покажи
ps faxu
Пасибки, интерестно. Настроил на DO.
не за что, а было на чем?
Было на it-patrol.
Кстати по панелям. Есть у меня веста на другом проекте. Красивая, удобная и т.д. Но везде пишут что память она отжирает неплохо.
я панель не ставил, мне проще через командную, но планирую поэкспериментировать с вестой и isp менеджером.
Еще поставил APC. Настроил как кэширующий бэкэнд c помощью модуля https://www.drupal.org/project/apc.
Вроде норм работает. Конфиг APC
extension=apc.so
;включено
apc.enabled=1
;сегменты
apc.shm_segments=1
;память
apc.shm_size=64
;через сколько милисекунд очищать кэш
apc.ttl=0
;процесс загрузки
apc.rfc1867=1
;кэшируем все файлы или не все
apc.cache_by_default = 0
;то что кэшируем
apc.filters = "+_папка вашего сайта_"
В settings.php дописываем
$conf['cache_backends'] = array('sites/all/modules/apc/drupal_apc_cache.inc');
$conf['cache_default_class'] = 'DrupalAPCCache';
молодец, а я все хочу попробывать так - http://drupalace.ru/kesh-stranic-snizhenie-nagruzki-na-server-s-pomoshch...
Отпишь о результатах если попробуешь.
ок
Бесплатный тест на Loadimpact:
удивительны дела: сейчас перенес один из своих сайтов на DO с патруля, так он стал в 5 раз быстрее летать и бесплатно (т.к. на DO там остальные сайты крутятся уже, а этот не решался, получалось на две кассы платить.) на патруле его обслуживание стоило в 2 раза дороже, чем на DO.
Блин когда я на патруль пришел, все было хорошо. Потом все хуже и хуже. Вплоть последний раз бэпак базы не смог сделать (нужен был когда переезжал). Написали что модуль какой то мешает. Хер сним мне там нужна была одна таблица вручную забэпапил ее. Не считая того что половина их ней админки работает еле еле. Да и скорость земля и небо по сравнению с тем же do. Во общем съехал и рад.
поменял в control panel кернел на самый свежий и сайты стали намного лучше работать (http://www.webpagetest.org):
Странные какието результаты. У тебя все А. У меня не все но Score больше
score оценивает степень оптимизации,на ссылку score нажмешь, увидишь.
у меня картинки в спрайты не скомбинированы.
мне больше интересно, почему у меня была картинка как у тебя и при смене кернела всё ушло в зеленую зону.
поставил Memcache Storage (https://www.drupal.org/project/memcache_storage)
визуально раз в 5 быстрее начала админка работать и вообще.
http://drupalace.ru/kesh-stranic-snizhenie-nagruzki-na-server-s-pomoshch...
https://www.drupal.org/node/2046551
Забодали боты, проблему решил, сайты опять летают - http://saitodelatel.ru/zashchita-ot-botov-fail2bancsf-servera-nginx-c-dr...
СРОЧНО пропатчить сервера - http://www.drupal.ru/node/115351
По мотивам мануала автора, написал немного обновленный для таких же как и я чайников: http://gavzav.ru/blog/33-shaga-k-digitalocean-perenosim-sayt-na-hosting-...
Из коробки работает только защита от брутфорса ssh паролей. А может он куда больше.
И это правильно - панель нужна только тогда, когда предоставляется хостинг внешним клиентам. И она сразу связывает руки в плане конфигов веб сервера и.т.п.
Фаерволл поставить надо. Также, неплохо чем-нибудь мониторить нагрузку, хотя бы munin.
Если пользоваться сокетами, стоит установить listen_backlog явно в 4096 или больше. Иначе бывают глюки неприятные.
Там находится шаблончик для виртуального хоста по умолчанию. А сайты надо класть в директорию пользователя-хозяина сайта или в /var/www/
Вообще, для серьёзного продакшена ещё очень немало надо сделать, начать стоит с владельца файлов и прав... Владельцем файлов должен быть отнюдь не www-data, а другой пользователь.
Также, например, разумно настроить лимиты в php и open_basedir, и сделать отдельную tmp папку для сайта выше его wwwroot.
Очень важная тема пропущена - настройка mysql innodb хранилища.
Также не раскрыт вопрос настройки почты, хотя в условиях мелкого VPS, лучше воспользоваться внешним сервисом, в Drupal использовать отправку через SMTP, и поставить/настроить какой-нибудь ssmtp для релея через него сообщений сервера.
И перечисленное выше, это только очевидные вещи - некая вершина айсберга.
В общем, как обычно, для пошаговых руководств по настройке VPS, даны только минимально необходимые шаги, для хоть какой-нибудь работы, и надо понимать, что это только 1/10 того, что реально надо настраивать на сервере в итоге... Ну и чайникам реально не место в настройке серверов, как бы на это кто не обижался - это сложная тема, требующая много специфичных знаний - куда больше, чем создание сайта на друпал, с программированием на PHP вместе. А следование таким пошаговым руководствам ведёт к пополнению ботнетов, в основном, и дальнейшему разочарованию: "Ааа у меня всё перестало почему-то работать"/"Как у меня взломали сайт?" и.т.п.
спасибо.
да.
так настроил - http://www.drupal.ru/node/114079
Сколько память дроплет и своим my.cnf под неё поделитесь?
1GB Ram 30GB SSD Disk London 1 Debian redis
my.cnf стандартный, не затачивал, т.к. и так всё прекрасно работает.
А вот это напрасно, особенно, при использовании innodb.
благодарю, есть место для совершенства.
Я пока на апаче сижу в DO, дроплет с Debian7, так как нагрузки на бложик практически никакой. Чтобы почта отправлялась с сайта использую postfix.
Серверное администрирование глубокая тема и надо действительно реально в этом шарить, чтобы настраивать сервер для хостинга
Минимум:
innodb_flush_method = O_DIRECT
innodb_buffer_pool_size
В идеале иметь чуть больше объёма базы, но это не всегда возможно. В любом случае лучше выделить по возможности больше.
innodb_file_per_table
Очень полезная опция, позволяющая не тратить лишнее место в разрастающемся ibdata, и уменьшить последствия при повреждении его структуры.
innodb_flush_log_at_trx_commit
Часто, полезно изменить на 2, или даже 0.
так дополнил
innodb_buffer_pool_size = 11G
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
но с параметром innodb_buffer_pool_size, mysql не рестартнула. С остальными параметрами сайт начал заметно тормозить.
Всё равно в итоге прийдешь к связке nginx+apache.
php-fpm работает практически так же как mod-php апача, обрабатывая запросы php в цикле и поэтому имеет смысл оставить php апачу, а статику и медленных клиентов отдать nginx, тогда будет баунти. А так... шило на мыло. Может я в чем то и ошибаюсь...
посмотрим, пока всё летает, были проблемы только с китайскими ботами, разобрался - 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-ther...
ну да.
11 гигов это явно больше, чем есть на виртуалке. Надо было читать внимательнее, и подходить разумно.
Остальное надо измерять после прогрева кеша запросов.
Медленнее уж точно быть не должно.
Toshik:По скорости также, тут все почти время занимает работа самого php. А вот памяти, специализированный менеджер процессов, тратит в пустую куда меньше апача, с массой модулей до кучи.
11518512 /var/lib/mysql
11518512/1024=11248.546875 MB
11G total
mysqltuner ставьте, погоняйте пару дней и настраивайте, У меня сильный прирост был.
ок, так и сделаю
Вот только проблема в том, что этот параметр управляет выделением памяти под страничный кеш innodb. А 11ГБ оперативки на виртуалке вашей конечно нет.
Кстати, с помощью du считать объём данных в базах не правильно - их меньше, возможно, очень значительно.
Это не совсем хороший совет, если рассматривать его как "запустил - настроил как написано". Рекомендации, которые даёт этот скрипт весьма общие, и не учитывают, например, количество памяти, которую _стоит_ выделить mysql, если это не единственное приложение на сервере, да и многое другое, кстати.
Но им удобно смотреть статистику, например, тот же общий объём innodb баз, общий объём индексов myisam, эффективность кешей и.т.п.
пробовал, рекомендуемый percona, объем в 512MB, но та же история - mysql не запустилась.
А в логе что?
а уже ничего, с такими запустилась:
innodb_buffer_pool_size = 512M
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
сейчас по скорости оттестирую.
вроде такая же (в целом), но ощущение, что пошустрее стал работать.
Там же естественно смотреть сколько по максимуму будет используемый обьем оперативки и складывать с уже используемыми например php java. И подгонять значения. А то падать будет. У меня например solr постоянно валялся из за превышения.
Да, уже ознакомился с нюансами. Спасибо.
p.s.ради любопытства и не только прикрутил пока nginx к апачу, отключил кеш и запустил простую проверку без фанатизма на loaddy. сервер лег ),вернее не с ервер, а mysql пошла в отказ, там всего несколько нод и вьюсов пока. Апач вчера в одиночку выдержал запросы без кеша, mysql не отключился. Но в принципе, я еще ничего особо не настраивал. У меня правда дроплет всего с 512 метров оперативы
Вот мой результат по loaddy http://joxi.ru/Vm67bBDfE91N2Z
Что-то с завидной регулярность раз в 4-5 дней валится MySQL, По ходу там иди диски битые или косяк где-то в дроплете.
swap?
"Swap fixed my issues" - MySQL drops out every few days?
https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubunt...
http://www.drupal.ru/node/107234
что в логах?
Та врядли:
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 попробовать.
может помочь.
по ходу, база повредилась:
https://forums.cpanel.net/threads/innodb-corruption-repair-guide.418722/
http://www.percona.com/blog/2011/05/13/connecting-orphaned-ibd-files/
так почитал по инету, ребята начали уходить с ДО, хвалят VULTR, с виду похоже, но мне пока цены понравились.
Это понятно но тут нет InnoDB таблиц и это происходит с ужасающей частотой раз в ~4-5 дней.
А места на диске свободного достаточно? Такое часто происходит, при нехватке места. При этом на совершенно целых дисках.
Всё же есть.
Как минимум ~16-17Gb.
Вы шутите ?
Engine: MyISAM
Version: 10
Row_format: Dynamic
...
Судя по скупым логам MySQL что точно глючит понять сложно.
Ищет то, чего нет априори и валится. Стартует после startsos
Пока ждем следующего раза.
х.м. с такой суммы можно и в другом месте импровизировать
Очередной завал... Кто расшифровать сможет 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
Тут нашлось решение. Будем наблюдать...
поставил nginx с postgresql, мускуль не стал ставить и дедик ожил.админка пошустрее работает.падения прекратились, как было с мускулем. беда только что восьмерка в бете на постгрес становитьсо не желает. придется патчить ради игрушки).
Какая OS и панель? Сколько памяти?
Ещё раз завалится - поставлю постгри...
панели нет, только та, что на do. ram 512 debian 7, самый дешевый.
Просто мускуль валился даже на пустом сайте в админке, но тогда правда стояли nginx с apache, сейчас только nginx с php-fpm и apc, но apc и php-fpm я особо не настраивал, делал по нескольким мануалам, была трабла с пулами для каждого домена свой, не сразу вкурил, поэтому успокаивал себя апачем некоторое время. постгрес настраивается шикарно, но в него погружаться надо, поизучать чутка. если модули с запросами на мускуль написаны по стандарту sql, то постргрес их проглотит и не чихнет. в идеале конечно было бы замерить с TOP работу сервера с мускулем для сравнения, но я как то не предусмотрел этот вариант,а переустанавливать неохота.
UPD:
Я немного дурью помаялся. Девелом сгенерировал 10000 нод на свежую инсталяшку. Время генерации 62 минуты. После, с loaddy ( под зареганным с бесплатным тарифом они 100 юзеров эмитируют), не могу сказать , что прям летает , под кешем
потом отключил кеш и тоже самое, без кеша страницы отдавались до 15 секунд, но постгрес не отказал, что хорошо.
добил: http://www.drupal.ru/node/117265
промокод DROPLET10, чтобы получить $10.
кстати DO без проблем возвратил деньги оставшиеся на балансе (полностью на vultr перешел, защита лучше и немного дешевле).