export TEMP=/home/tmp/ export PASSENGER_TMPDIR=/home/tmp/
Архив рубрики: nginx
Решение проблемы: nginx: [emerg] listen() to 0.0.0.0:80 failed (98: Address already in use)
link
Сегодня при попытке обновить конфигурацию nginx, вылетела ошибка:
# /etc/init.d/nginx reload
... nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use) nginx: configuration file /etc/nginx/nginx.conf test failed
Ну а когда сделал так:
# /etc/init.d/nginx restart
то с той же ошибкой nginx уже не запустился.
Из описания ошибки следует, что 80-ый порт занят, поэтому nginx не может запуститься:
# netstat -nap | grep 80
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4658/apache2 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 488/nginx
Исправляем ситуацию, убив подвисший процесс на 80-ом порту:
# fuser -k 80/tcp
Запускаем nginx:
# /etc/init.d/nginx start
Starting nginx: nginx.
Nginx configs passenger and unicorn
Nginx, ошибка accept() failed (24: Too many open files)
Для одного хостинга картинок арендован выделенный сервер. На нем LAMP с nginx-фронтендом.
В один прекрасный день Nginx начинает периодически выдавать ошибку 500 при заходе на страницы.
В логах что-то похожее на
Цитата:
[alert] 8668#0: accept() failed (24: Too many open files)
Это значит, превышен лимит количества одновременно открытых файлов.
Решаем:
В конец файла /etc/security/limits.conf нужно добавить такие строки:
Цитата:
* soft nofile 16384
* hard nofile 16384
В текущей консоли от рута (от судо не пашет) сделать
Цитата:
ulimit -n 16384
Хотя это необязательно, если есть возможность перезагрузить сервер.
В /etc/nginx/nginx.conf прописать новое значение worker_connections, равное 16384 поделить на значение worker_processes.
Если не делали ulimit -n 16384, нужно выполнить перезагрузку, после чего проблема отступит.
1) Читаем логи. (Если пустые чиним)
2) Если после починки видна в логах ошибка accept() failed (24: Too many open files)
В конфиг nginx прописвыем(к примеру):
worker_processes 2;
worker_rlimit_nofile 16384;
events {
worker_connections 8192;
}
Исходя из статьи:
В /etc/nginx/nginx.conf прописать новое значение worker_connections, равное 16384 поделить на значение worker_processes.
uploads wp
Аналог php_value engine off для nginx
В Apache проблема решается просто: в каталог uploads
помещается .htaccess
следующего содержания:
В nginx .htaccess
не предусмотрен (что можно рассматривать и как достоинство, и как недостаток), поэтому там нужно применить несколько другой подход.
В описание виртуального хоста помещаем следующие строки:
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php last;
}types {
text/plain php php3 php4 php5 phtml phps pl pm;
}
}
И заставить nginx перечитать конфигурацию:
Для nginx 0.7.32 и выше есть другой вариант:
types {
text/plain php php3 php4 php5 phtml phps pl pm;
}try_files $uri $uri/ @wordpress;
}
Как выглядит location @wordpress
, можно прочитать здесь.
Всё просто!™
nginx upstream response is buffered to a temporary file
proxy_buffer_size 4k; proxy_buffers 32 4k; # до 132K + ядерные буфера
proxy_max_temp_file_size 0;
nginx + php + mysql install
yum install openssh-server wget yum -y update yum repolistrpm -ihv http:
//mirror.yandex.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ihv http:
//nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum install yum-priorities vi /etc/yum.repos.d/epel.repo vi /etc/yum.repos.d/nginx.repo priority=10 yum install mysql mysql-serverchkconfig --levels
235
mysqld on
/usr/bin/mysql_secure_installation service mysqld start yum install nginxchkconfig --levels
235
nginx on yum remove httpd service nginx start
CentOS/RHEL 7.x:
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
CentOS/RHEL 6.x:
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
yum install php56w php56w-opcache php56w-gd php56w-imap php56w-pdo php56w-mysql php56w-xml php56w-common php56w-process php56w-mbstring php56w-cli php56w-ldap php56w-devel php56w-fpm php56w-mssql php56w-magickwand php56w-mcrypt php56w-odbc php56w-pear php56w-shout php56w-snmp php56w-soap php56w-tidy php56w-xmlrpc
vi /etc/php.ini
files.upload_max_filesize = 100M
post_max_size = 100M
cgi.fix_pathinfo = 0
chkconfig --levels
235
php-fpm on
/etc/init.d/php-fpm start
yum install htop
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.
default
vi /etc/nginx/nginx.conf
client_max_body_size 100m;
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; server { listen 80; server_name _; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } }
nginx + passenger + service + autorun
gem install passenger -v —no-rdoc —no-ri
#gem update —system ***
if no swap
dd if=/dev/zero of=/swap bs=1M count=1024
mkswap /swap
swapon /swap
df -h
passenger-install-nginx-module
/opt/nginx/sbin/nginx -s stop
vim /etc/init.d/nginx
#!/bin/sh
#
# nginx — this script starts and stops the nginx daemin
#
# chkconfig: — 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /opt/nginx/conf/nginx.conf
# pidfile: /opt/nginx/logs/nginx.pid# Source function library.
. /etc/rc.d/init.d/functions# Source networking configuration.
. /etc/sysconfig/network# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0nginx=»/opt/nginx/sbin/nginx»
prog=$(basename $nginx)NGINX_CONF_FILE=»/opt/nginx/conf/nginx.conf»
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $»Starting $prog: »
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}stop() {
echo -n $»Stopping $prog: »
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}restart() {
configtest || return $?
stop
start
}reload() {
configtest || return $?
echo -n $»Reloading $prog: »
killproc $nginx -HUP
RETVAL=$?
echo
}force_reload() {
restart
}configtest() {
$nginx -t -c $NGINX_CONF_FILE
}rh_status() {
status $prog
}rh_status_q() {
rh_status >/dev/null 2>&1
}case «$1″ in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $»Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}»
exit 2
esac
chmod +x /etc/init.d/nginx
service nginx start
service nginx stop
service nginx reload
service nginx restart
service nginx status
service nginx configtest
#cool autorun1
/sbin/chkconfig nginx on
#or autorun2
vim /etc/rc.local
/opt/nginx/sbin/nginx
nginx
worker_processes 1; events { worker_connections 1024; } http { passenger_root /usr/local/rvm/gems/ree-1.8.7-2012.02/gems/passenger-4.0.14; passenger_ruby /usr/local/rvm/wrappers/ree-1.8.7-2012.02/ruby; client_max_body_size 100m; server_names_hash_bucket_size 64; include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost _ tgym.ru www.tgym.ru; root /var/www/tgym/public; passenger_enabled on; } }