Речь пойдет конечно же об обновлениях на OS Debian и Ubuntu. Но я думаю, что на других OS те же похожие проблемы, с которыми можно столкнуться.
В этом посте я опишу решение нескольких из них.
Установка
Во первых nginx стоит обновлять только либо из родных репозиториев, либо из проверенных либо из оффициальных nginx.
Для Debian это будет http://nginx.org/ru/linux_packages.html
1 2 3 4 |
deb http://nginx.org/packages/debian/ codename nginx deb-src http://nginx.org/packages/debian/ codename nginx |
Для Ubuntu есть PPA https://launchpad.net/~nginx/+archive/ubuntu/stable
1 2 3 |
sudo apt-add-repository ppa:nginx/stable |
Есть еще репозитории на любителя, например dot.deb.
Дальше установка стандартная для обоих систем. Предварительно если есть старая версия nginx то
1 2 3 |
aptitude purge nginx nginx-full |
При установке новой версии при предложениях заменить конфиг лучше соглашаться. Лучше настроить заново на основе текущей версии потом, чем в панике решать проблемы, когда все упало.
1 2 3 4 |
aptitude update aptitude install nginx |
И вот тут и начинается самое веселое ради чего и сделан пост – решение проблем.
Проблема с устаревшими конфигами постов или php показывает пустые белые страницы
Вся проблема тут в том, что вместо устаревшей инструкции в конфиге хоста
1 2 3 |
include fastcgi_params |
нужно вставить
1 2 3 |
include fastcgi.conf |
Если хостов много, то можно замену сделать автоматически
1 2 3 4 5 6 7 8 9 |
cd /etc/nginx/sites-available find ./ -type f -exec sed -i 's/include fastcgi_params;/include fastcgi.conf;/g' {} \; #если надо обратно при откате на 1.6 #find ./ -type f -exec sed -i 's/include fastcgi.conf;/include fastcgi_params;/g' {} \; service nginx restart |
Все должно заработать.
Проблема с тем, что nginx обрезает ответ (response), выдает не целиком
Во первых надо проверить директивы в конфиге nginx.conf
1 2 3 4 |
client_body_buffer_size 32K; client_max_body_size 300M; |
Они должны быть достаточно большие. Если это не помогает – стоит заглянуть в error.log, там может быть ошибка указываюшая на то, что нет доступа к папке кеша.
В зависимости от версии это может быть папка /usr/local/nginx/fastcgi_temp или /var/cache/nginx/fastcgi_temp/. Тут исправить просто
1 2 3 |
chmod 777 -R /var/cache/nginx/ |
Проблема 502 gateway или проблема с php fpm сокетом
Банально если в error.log валятся ошибки связанные с unix:/var/run/php5-fpm.sock то либо fpm не запущен, либо нет прав доступа. Быстрый фикс тут это сделать chmod на файл сокета, но это слетит после рестарта сервера или fpm. Поэтому надо поменять конфиг /etc/php5/fpm/pool.d/www.conf
1 2 3 4 5 |
listen.owner = www-data listen.group = www-data listen.mode = 0660 |
Можно хоть 777 поставить. :)