Назад | Перейти на главную страницу

Vagrant, nginx 404 - fastcgi, отправленный в stderr, не может открыть основной скрипт

Много гуглил и не нашел для этого решения. Нашел несколько принятых ответов здесь, в stackoverflow, но они мне не помогли.

Я использую vagrant для разработки или, по крайней мере, пытаюсь его использовать. Установите его без проблем, но когда я пытаюсь запустить веб-сайт, я получаю 404, я предполагаю, что это скорее проблема nginx, чем проблема с бродяжничеством.

Я добавил на свой хост Windows 127.0.0.1 lara.dev

Это моя конфигурация сайта nginx ниже:

server {
    listen 80;
    server_name lara.dev;
    root C:/xampp/htdocs/lara/public;

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/lara.dev-error.log error;

    error_page 404 /index.php;

    sendfile off;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    location ~ /\.ht {
        deny all;
    }
}

В файле журнала я получаю следующее:

FastCGI sent in stderr: "Unable to open primary script: /usr/share/nginx/C:/xampp/htdocs/lara/public/index.php (No such file or directory)" while reading response header from upstream, client: 10.0.2.2, server: lara.dev, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "lara.dev:8000"

и мой файл усадьбы

---
ip: "192.168.10.10"
memory: 2048
cpus: 1

authorize: C:/Users/Tim/.ssh/general.pub

keys:
    - C:/Users/Tim/.ssh/general

folders:
    - map: C:/xampp/htdocs/
      to: /home/vagrant/html

sites:
    - map: lara.dev
      to: /home/vagrant/html/lara/public/

databases:
    - homestead

variables:
    - key: APPLICATION_ENV
      value: env-localhost

Бродячий файл:

require 'json'
require 'yaml'

VAGRANTFILE_API_VERSION = "2"

homesteadYamlPath = File.expand_path("~/.homestead/Homestead.yaml")
afterScriptPath = File.expand_path("~/.homestead/after.sh")
aliasesPath = File.expand_path("~/.homestead/aliases")

require_relative 'scripts/homestead.rb'

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    if File.exists? aliasesPath then
        config.vm.provision "file", source: aliasesPath, destination: "~/.bash_aliases"
    end

    Homestead.configure(config, YAML::load(File.read(homesteadYamlPath)))

    if File.exists? afterScriptPath then
        config.vm.provision "shell", path: afterScriptPath

конец конец

Скорее всего, что-то не так с конфигурацией для php5-fpm. Но что, не знаю. Tnx заранее.

На основе вывода:

Невозможно открыть основной скрипт: /usr/share/nginx/C:/xampp/htdocs/lara/public/index.php (такого файла или каталога нет)

Похоже, вы ссылаетесь на пути в стиле Windows (C:/), но запуск nginx на виртуальной машине Linux (/usr/share/nginx). По умолчанию Vagrant разделяет только одну папку, который является папкой проекта на вашем хост-компьютере (Windows) и /vagrant на вашей гостевой машине (Linux).

Ваша гостевая машина не может получить доступ к общим папкам, поэтому nginx тоже не может.

Большинство проектов на основе Vagrant помещают содержимое приложения в корень папки проекта, и в этом случае вы можете изменить root директива:

root /vagrant

Если ваш проект находится в папке с именем app:

root /vagrant/app

Вы также можете выбрать отображение большего количества папок, отредактировав свой Vagrantfile, перезапустив гостевую машину, а затем используя новые синхронизированные папки в root.