Много гуглил и не нашел для этого решения. Нашел несколько принятых ответов здесь, в 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
.