我要将2个wordpress网站(其中一个是子域)移到Docker容器下的本地计算机上进行开发。
我想使用hosts文件通过其域名在开发计算机中访问它们,但是我正在努力使我的apache虚拟主机正常工作。
比方说:
网站1是“ www.example.com”
网站2是“ sub.example.com”
每个都有自己的MySQL数据库和wordpress代码库,分别在不同的docker-compose容器上设置。
所以:
网站1:http://localhost:8000上的wwww.example.com
网站2:http://localhost:8001上的sub.example.com
都可以通过localhost:8000和localhost:8001正常工作
我将本地主机文件更改为:
127.0.0.1 localhost
127.0.0.1 example.com www.example.com sub.example.com
在这种情况下,我正在努力设置apache虚拟主机, 这是我尝试过的:
<VirtualHost *:80>
ServerName www.example.com
ProxyPass / http://localhost:8000/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
<VirtualHost *:80>
ServerName sub.example.com
ProxyPass / http://localhost:8001/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
直接进入http://localhost:8000和http://localhost:8001即可。
我去http://www.example.com时遇到以下错误:
服务不可用
由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后再试。
网址为www.example.com端口80的Apache / 2.4.25(Debian)服务器
服务不可用
由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后再试。
sub.example.com端口80上的Apache / 2.4.25(Debian)服务器
有人可以向我指出如何设置虚拟主机的正确方向吗?
谢谢
答案 0 :(得分:0)
您可以尝试检查var/log/httpd
中的日志(也可以尝试sudo locate access.log
)以查看实际发生的错误。
您缺少的一件事是ProxyPassReverse
,如果您的网站正在重定向,它将重写URL。有了它,您的配置将如下所示
<VirtualHost *:80>
ServerName www.example.com
ProxyPass / http://localhost:8000/
ProxyPassReverse / http://localhost:8000/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
<VirtualHost *:80>
ServerName sub.example.com
ProxyPass / http://localhost:8001/
ProxyPassReverse / http://localhost:8001/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
答案 1 :(得分:0)
我了解我的问题在这里可能不合时宜,但是由于我设法解决了我的问题,因此希望您将我的回答保留在这里,以便对他人有所帮助。 < / p>
我没有提到apache服务器正在其自己的Docker容器中运行。
这是我解决问题的方法:
在主机文件中包含www.example.com,example.com和sub.example.com:
127.0.0.1 localhost
127.0.0.1 example.com www.example.com sub.example.com
由于apache在其自己的docker容器中运行,因此localhost:8000指向apache docker容器的localhost,在此不正确。
它需要指向主机的IP地址,在我的情况下是192.168.1.100。
<VirtualHost *:80>
ServerName www.example.com
ProxyPass / http://192.168.1.100:8000/
ProxyPassReverse / http://192.168.1.100:8000/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
<VirtualHost *:80>
ServerName sub.example.com
ProxyPass / http://192.168.1.100:8001/
ProxyPassReverse / http://192.168.1.100:8001/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
重新启动apache
最后要做的是更改“ site_url”和“ home”设置以指向主机的ip地址(此处为192.168.1.100)。
这可以通过2种方式完成:
通过转到wordpress数据库,表wp_options并进行以下修改:
site_url 和 home 到 http://192.168.1.100:8000 以访问www.example.com和example.com;和
site_url 和 home 到sub.example.com
或登录到Wordpress信息中心(/ wp-admin),然后转到设置并进行以下修改:
将 WordPress地址(URL)和站点地址(URL)更改为 http://192.168.1.100:8000 用于www.example.com和example.com;和
WordPress地址(URL)和网站地址(URL)到sub.example.com
您不需要重新启动Wordpress容器,但是如果遇到任何错误,请重新启动它们并再次检查。