我接管了一些网站的开发,目前我正在尝试在Vagrant框中托管一个网站。我对Vagrant非常熟悉,但我有一个奇怪的问题,自上周五以来我一直无法修复。
我创建了Vagrant文件,Wordpress安装的MYSQL数据库已经移动到我的本地(主机)机器,我从客户机上的Wordpress安装指向这个。存在所有Wordpress文件,并且正在与来宾计算机共享该文件夹。
我的Vagrant文件如下所示:
Vagrant.configure("2") do |config|
# Set Vagrant box to use
config.vm.box = "ubuntu/trusty64"
# Configure port forwarding
config.vm.network :forwarded_port, guest: 80, host: 8930, auto_correct: true
# Set synched folder
config.vm.synced_folder "./", "/var/www", create: true, group: "www-data", owner: "www-data"
# Configure the VM
config.vm.provider "virtualbox" do |v|
v.name = "St. David's Lab"
v.customize ["modifyvm", :id, "--memory", "1024"]
end
# Set up shell provisioning
config.vm.provision :shell, :path => "bootstrap.sh"
端
boostrap.sh文件用于在来宾计算机上设置所需的软件和类似文件,如下所示:
#!/bin/bash
echo "Provisioning virtual machine..."
apt-get update
echo "Installing Git"
apt-get install git -y > /dev/null
echo "Installing Nginx"
apt-get install nginx -y >/dev/null
echo "Configuring Nginx"
cp /var/www/nginx_vhost /etc/nginx/sites-available/nginx_vhost > /dev/null
ln -s /etc/nginx/sites-available/nginx_vhost /etc/nginx/sites-enabled/nginx_vhost
rm -rf /etc/nginx/sites-available/default
service nginx restart > /dev/null
echo "Updating PHP repository"
apt-get install python-software-properties build-essential -y > /dev/null
add-apt-repository ppa:ondrej/php5 -y > /dev/null
apt-get update > /dev/null
echo "Installing PHP"
apt-get install php5-common php5-dev php5-cli php5-fpm -y > /dev/null
echo "Installing PHP extensions"
apt-get install curl php5-curl php5-gd php5-mcrypt php5-mysql -y > /dev/null
apt-get install libapache2-mod-php5
以下是在来宾计算机上创建的服务器配置:
server {
listen 80;
server_name localhost;
root /var/www/;
index index.php index.html;
# Important for VirtualBox
sendfile off;
location / {
try_files $uri $uri/ =404;
}
location ~* \.php {
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_cache off;
fastcgi_index index.php;
}
}
我已将Wordpress数据库中的siteurl更改为localhost:8930。
我遇到的问题是,当我尝试访问地址localhost:8930(在我的Vagrant文件中的端口转发中定义)时,我被重定向回localhost默认索引页面(http://localhost)。这不是一个缓存问题,因为我已经清除了它,使用了一个隐身窗口并用一个简单的" hello world"替换了索引文件。它显示。
有人能看出为什么会这样吗? 感谢
答案 0 :(得分:0)
$uri/
指令的try_files
子句导致外部重定向到默认端口。您可能希望避免来自nginx
本身的外部重定向,因为它会使您的8930端口映射规则变得复杂。
一种解决方案是删除index
指令和$uri/
子句。
你真的需要为WordPress添加一个默认控制器,例如:
location / {
try_files $uri /index.php?$args;
}
编辑:
问题的详细分析:
您将http://localhost:8930
提供的网址nginx
显示为http://localhost:80
。位置/
处理请求。 try_files
指令测试是否存在文件和目录。目录的存在会导致外部重定向到http://localhost:80/
。外部重定向是$uri/
子句的无证副作用。
try_files
指令为documented here。