Архив рубрики: 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, ошибка accept() failed (24: Too many open files)

link

Для одного хостинга картинок арендован выделенный сервер. На нем 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 для 

В Apache проблема решается просто: в каталог uploads помещается .htaccessследующего содержания:

[-]
View Code Apache configuration
php_value engine off

В nginx .htaccess не предусмотрен (что можно рассматривать и как достоинство, и как недостаток), поэтому там нужно применить несколько другой подход.

В описание виртуального хоста помещаем следующие строки:

[-]
View Code nginx configuration
location ^~ /wp-content/uploads/ {
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php last;
}types {
text/plain php php3 php4 php5 phtml phps pl pm;
}
}

И заставить nginx перечитать конфигурацию:

[-]
View Code Bash
invoke-rc.d nginx reload

Для nginx 0.7.32 и выше есть другой вариант:

[-]
View Code nginx configuration
location ^~ /wp-content/uploads/ {
types {
text/plain php php3 php4 php5 phtml phps pl pm;
}try_files $uri $uri/ @wordpress;
}

Как выглядит location @wordpress, можно прочитать здесь.

Всё просто!™

nginx + php + mysql install

link

yum install openssh-server wget
yum -y update
yum repolist
rpm -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-server
chkconfig --levels 235 mysqld on
/usr/bin/mysql_secure_installation
service mysqld start

yum install nginx 
chkconfig --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 0

nginx=»/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

vim /opt/nginx/conf/nginx.conf
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; 
}

}