在Vagrant框上托管现有的Wordpress安装

时间:2016-01-11 10:07:45

标签: wordpress nginx vagrant

我接管了一些网站的开发,目前我正在尝试在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"替换了索引文件。它显示。

有人能看出为什么会这样吗? 感谢

1 个答案:

答案 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