Я настроил виртуальный хост с помощью PuPHPet (Vagrant-Puppet-PHP). Очевидно, PuPHPet создает сайт по умолчанию для меня с этой конфигурацией 10-default_vhost_80.conf
<VirtualHost *:80>
ServerName default
## Vhost docroot
DocumentRoot "/var/www/html"
## Directories, there should at least be a declaration for /var/www/html
<Directory "/var/www/html">
Options Indexes FollowSymlinks MultiViews
AllowOverride All
Require all granted
<FilesMatch "\.php$">
Require all granted
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>
</Directory>
## Logging
ErrorLog "/var/log/apache2/default_vhost_80_error.log"ServerSignature Off
CustomLog "/var/log/apache2/default_vhost_80_access.log" combined
</VirtualHost>
И я создал этот конфиг сайта site_dev.conf
<VirtualHost *:80>
ServerName site.dev
## Vhost docroot
DocumentRoot "/var/www/web"
## Directories, there should at least be a declaration for /var/www/web
<Directory "/var/www/web">
Options Indexes FollowSymlinks MultiViews
AllowOverride All
Require all granted
<FilesMatch "\.php$">
Require all granted
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>
</Directory>
## Logging
ErrorLog "/var/log/apache2/av_0rjxvm6sfxhm_error.log"ServerSignature Off
CustomLog "/var/log/apache2/av_0rjxvm6sfxhm_access.log" combined
## Server aliases
ServerAlias www.site.dev
## SetEnv/SetEnvIf for environment variables
SetEnv APP_ENV dev
</VirtualHost>
Конфигурация по умолчанию apache2.conf
ServerName "local.puphpet"ServerRoot "/etc/apache2"PidFile ${APACHE_PID_FILE}
Timeout 120
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15
User www-data
Group www-data
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
HostnameLookups Off
ErrorLog "/var/log/apache2/error.log"LogLevel warn
EnableSendfile Off
#Listen 80
Include "/etc/apache2/mods-enabled/*.load"Include "/etc/apache2/mods-enabled/*.conf"Include "/etc/apache2/ports.conf"
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional "/etc/apache2/conf.d/*.conf"IncludeOptional "/etc/apache2/sites-enabled/*"
Я уже отключил 10-default_vhost_80
и перезагрузил apache, однако мой DocumentRoot по-прежнему указывает на /var/www/html/
я что-то пропустил?
Так что я сделал /var/www/html
в символическую ссылку и указать на /var/www/web
, Это решило мою проблему в настоящее время.
ОБНОВИТЬ
Я нашел еще одну проблему, используя решение выше, это влияет на xdebug
Конфигурация у меня есть, и процесс не может найти файлы в /var/www/web
потому что ищет файлы в символической ссылке /var/www/html
, Так
другая работа — это изменить 10-default_vhost_80.conf
файл и изменение /var/www/html
в /var/www/web
вручную и перезагрузите сервер. Все идет нормально.
ОБНОВЛЕНИЕ 2
Таким образом, правильное решение заключается в том, что вам нужно убедиться, что Directory Block
заполнен в puphpet
Конфигуратор и будет производить directories
раздел, который вы видите в yaml
файл ниже. Я думаю, что это связано с этим обновлением apache 2.4
почему это нужно сделать.
Итак, я закончил с этим config.yaml
av_s4zfpb2muecx:
servername: sandbox.dev
serveraliases:
- www.sandbox.dev
docroot: /var/www/web
port: '80'
setenv:
- 'APP_ENV dev'
custom_fragment: ''
ssl: '0'
ssl_cert: ''
ssl_key: ''
ssl_chain: ''
ssl_certs_dir: ''
ssl_protocol: ''
ssl_cipher: ''
directories:
avd_e84h116m6dg3:
path: /var/www/web
options:
- Indexes
- FollowSymlinks
- MultiViews
allow_override:
- All
require:
- 'all granted'
custom_fragment: ''
files_match:
avdfm_e84h116m6dg3:
path: \.php$
sethandler: 'proxy:fcgi://127.0.0.1:9000'
custom_fragment: ''
provider: filesmatch
provider: directory
Также, если вы видите, что ваш PHP
файлы не разбираются, убедитесь, что включить files_match
раздел. Это не добавлено puphpet
Конфигуратор автоматически, так что вам нужно добавить это через жесткий код.
Я изменил путь к документированию и пути к каталогам на / var / www / www, как показано ниже. Это все еще создает папку html, но служит из папки www, что я и хочу.
vhosts:
av_dpp1xawpupht:
servername: mysite.local
serveraliases:
- www.mysite.local
docroot: /var/www/www
port: '80'
setenv:
- 'APPLICATION_ENV development'
custom_fragment: ''
ssl: '0'
ssl_cert: ''
ssl_key: ''
ssl_chain: ''
ssl_certs_dir: ''
ssl_protocol: ''
ssl_cipher: ''
directories:
avd_rtgzo3tlwbux:
path: /var/www/www
options:
- Indexes
- FollowSymlinks
- MultiViews
allow_override:
- All
require:
- 'all granted'
custom_fragment: ''
files_match:
avdfm_q9dzltiv10d5:
path: \.php$
sethandler: 'proxy:fcgi://127.0.0.1:9000'
custom_fragment: ''
provider: filesmatch
provider: directory
У меня тоже была эта проблема.
Для меня это было вызвано servername
собственность в моем puphpet/config.yaml
файл не соответствует домену, указанному в моем hosts
файл.
Я обеспечил IP-адрес и домен, указанные в моем puphpet/config.yaml
файл:
vm:
network:
private_network: 192.168.56.199
.
.
.
vhosts:
av_9kfiq4m95oac:
servername: mysite.dev
serveraliases:
- www.mysite.dev
соответствует тому, что я указал в моем hosts
файл:
192.168.56.199 mysite.dev www.mysite.dev
Ох, и не забудь бежать vagrant provision
после внесения изменений в puphpet/config.yaml
файл (который поймал меня несколько раз).