NGINX : failed (2: No such file or directory) in /etc/nginx/nginx.conf
My first configuration of an NGINX server left me high and dry for a while. Coming from an Apache back-ground (where everything is done for you), NGINX felt a little archaic at first. There was not much help out there for this issue so I will fill in the gap.
The error (in this case) was due to my symbolic link not being created correctly in sites-enabled. I will go into a little more detail.
nginx: [emerg] open() «/etc/nginx/sites-enabled/mysite.co.uk» failed (2: No such file or directory) in /etc/nginx/nginx.conf:62
This is the error (above) was being shown with any of the following commands :
Testing the configuration:
Starting or reloading the service:
nginx: [emerg] open() «/etc/nginx/sites-enabled/mysite.co.uk» failed (2: No such file or directory) in /etc/nginx/nginx.conf:62
This message is a bit vague, but there is a subtle hint here. The last path is pointing to the file containing the problem and the appended number correlates to the specific line number in that file.
In my case, line 62 was: include /etc/nginx/sites-enabled/\*;
I know the syntax of the line is correct because I compared it with the default file included in the installation.
Similar to Apache, the sites-enabled directory is meant to store symbolic links of configuration files that are stored in sites-available . Unlike Apache, however, the symbolic links need to be manually created by the admin, as apposed to an Apache command that automatically creates and removes the links when asked.
Navigating to /etc/nginx/sites-enabled , I checked the symbolic link using the following command
$ sudo ls -la $ lrwxrwxrwx 1 root root 32 Jul 19 20:16 mysite.co.uk -> sites-available/mysite.co.uk
I previously created this link whilst in the /etc/nginx folder using the following command:
$ sudo ln -s sites-available/mysite.co.uk sites-enabled/
Looking back at the ls output, the local filename is correct, however the file path that it is pointing to isn’t. The correct path should be: /etc/nginx/sites-available/mysite.co.uk
The solution was to simply create a new symbolic link to the configuration file, but using absolute paths instead of being lazy.
$ sudo ln -s /etc/nginx/sites-available/mysite.co.uk /etc/nginx/sites-enabled/
After this, NGINX complained no more and after a silent reload, instantly served my webpage on the World Wide Web. Nice.
Yes, this was complete user-error spurred from my lack of knowledge of symbolic links, however this is no longer a problem and I can get back to development.
Hopefully this will save someone else loads of time!
joeweller.me
Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.
nginx не исполняет php скрипты, error: open() «. » failed
Ребятушки помогите с Nginx, он меня уже просто достал!)) Вроде и тыкал, старался осознано, но или опыта не хватает или незнаю руки кривые, но зараза не выходит заставить nginx исполнять php скрипты!
2015/01/14 20:03:50 [error] 10601#0: *1 open() "/usr/share/nginx/html/50x.html" failed (2: No such file or directory), client: 127.0.0.1, server: 127.0.0.1, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock", host: "localhost" 2015/01/14 20:03:50 [crit] 10601#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "localhost" 2015/01/14 20:03:50 [error] 10601#0: *1 open() "/usr/share/nginx/html/50x.html" failed (2: No such file or directory), client: 127.0.0.1, server: 127.0.0.1, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock", host: "localhost" 2015/01/14 20:03:53 [crit] 10601#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "localhost" 2015/01/14 20:03:53 [error] 10601#0: *1 open() "/usr/share/nginx/html/50x.html" failed (2: No such file or directory), client: 127.0.0.1, server: 127.0.0.1, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock", host: "localhost" 2015/01/14 20:04:57 [crit] 10601#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "localhost" 2015/01/14 20:04:57 [error] 10601#0: *1 open() "/usr/share/nginx/html/50x.html" failed (2: No such file or directory), client: 127.0.0.1, server: 127.0.0.1, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock", host: "localhost"
Что за копипаста? С другого форума что ли? Оформление ужасное, ПЗ тоже. Конфиги где? Если длинный, то лучше выложить куда-нибудь на paste.ubuntu.com.
connect() to unix:/var/run/php5-fpm.sock (2: No such file or directory)
1. Ты php5-fpm запустил вообще? Файл /var/run/php5-fpm.sock существует?
2. С /usr/share/nginx/html/50x.html ты точно накосячил в конфиге nginx.
d2 ★ ( 14.01.15 19:32:21 MSK )
Последнее исправление: d2 14.01.15 19:32:40 MSK (всего исправлений: 1)
unix:/var/run/php5-fpm.sock failed (2: No such file or directory)
Проверь конфиг fpm, и запущен ли он
в настройках php-fpm сокет указал? сменил папку на /var/lib или вообще /srv/php-fpm.socket
Жалко, что нельзя задать сокет без файла — просто пусть программы друг с другом общаются
Unix-cокет это не файл (не regular file), unix-cокет это unix-cокет, именованный канал общения между программами.
Нафига вообще перемещать сокет? Что-бы побольше бардака создать?
Nginx не исполняет php скрипты потому-что nginx не умеет исполнять php скрипты, потому-что nginx не должен исполнять php скрипты.
Nginx это фронтэнд, его дело отдавать статику и перенаправлять забросы на бэкэнд (генерирующий динамические страницы). В случае с php в качестве бэкэнда обычно используется apache или php-fpm (fastcgi сервер для php). И вот уже бэкэнд выполняет php скрипты. Судя по всему в данном случае nginx пытается использовать в качестве бэкэнда php-fpm. Но либо php-fpm не запущен, либо запущен но ожидает подключения где-то не там где к нему пытается подключиться nginx.
Для начала покажи выхлоп команды ps ax | grep php
И содержимое конфигов php-fpm, для debian/ubuntu это директория /etc/php5/fpm/, в основном интересен файл /etc/php5/fpm/pool.d/www.conf и другие файлы в той-же директории.
он отображается в файловой системе
жалко нельзя создать сокет «в воздухе» — чтобы небыло никакого файла
например, указываешь программе socket = MYSOCKETNAME, и в другой программе тоже — socker = MYSOCKETNAME, и они общаются друг с другом
Например — php-fpm и httpd, php-fpm говорит ядру — создай мне сокет, ядро создает сокет 123, и lighttpd говорит ядру — я хочу подключится к сокету 123
кароче что-то типа cat|less в sh — пайп, только между двумя программами
Таким образом, можно даже шифровать канал общения программ и многое полезное
Я не знаю, умеет ли такое Linux, BSD-системы, и вообще различные операционные системы, но было бы не плохо
А потом нужно прукрутить что-то для контроля доступа к соекту, подружить эту систему с другими ядерными системами контроля доступа (все эти SElinux, apparmor, grsec…). Написать утилиты для отладки (список зарегистрированных сокетов, запись, чтение, создание, удаление, опять-таки утилиты для управления доступом). И конечно-же решать ещё кучу проблем которые я не увидел за 40 секунд размышления на эту тему.
За-то мы получим… получим что? Новую подсистему которая делает то-же самое что и старая подсистема и отличается от старой подсистемы только тем что она непохожа на другие подсистемы? Но зачем? KISS! Keep it simple, stupid!
Возможно эта идея кажется очень удачной, сразу после того как она пришла в голову (вообще у идей есть такой свойство, они кажутся очень удачными тем кто их придумал). Ведь сокет это не файл, так зачем ему выглядеть как файлу? За тем-же зачем, например, жёстким дискам выглядеть как файлам. За тем что это довольно-таки удобный стандартный интерфейс. За тем что в *nix принято использовать файловую систему для всего для чего её получается использовать. Потому-что это удобно, чертовски удобно.
Подскажите плиз. Не принимает письма. при отправлении письма с Roundcube или другой программой выдаёт ошибки: Произошла ошибка! SMTP ошибка (-1): Сбой соединения с сервером. Он работал себе нормально. с сервером ничего не делал. Перезагружал VPS — толку нет.
2016/07/29 00:28:56 [crit] 1074#1074: *195 connect() to unix:/var/run/php-fpm.apache.sock failed (2: No such file or directory) while connecting to upstream, client: 91.199.175.53, server: 7woks.ru, request: «POST /roundcube/?_task=mail&_action=refresh HTTP/1.1», upstream: «fastcgi://unix:/var/run/php-fpm.apache.sock:», host: «7woks.ru», referrer: «http://7woks.ru/roundcube/?_task=mail&_action=compose&_id=11469823335.
2016/07/29 00:29:56 [crit] 1074#1074: *195 connect() to unix:/var/run/php-fpm.apache.sock failed (2: No such file or directory) while connecting to upstream, client: 91.199.175.53, server: 7woks.ru, request: «POST /roundcube/?_task=mail&_action=refresh HTTP/1.1», upstream: «fastcgi://unix:/var/run/php-fpm.apache.sock:», host: «7woks.ru», referrer: «http://7woks.ru/roundcube/?_task=mail&_action=compose&_id=11469823335.
user apache; worker_processes 1;
error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
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;
connect() to unix:/var/run/php-fpm.apache.sock failed (2: No such file or directory)
Вот это вот говорит о том что php-fpm скорее всего не запущен
Так я вообще не юзаю phph-fpm . у меня без него всё работало на nginx+apache. ну ок , я его установил (yum install php-fpm) и запустил ( service php-fpm start )