我有两个开发环境:工作中的电脑(env1),家中的电脑(env2)。 两台机器都运行Ubuntu 15.10和Apache 2.4.12。 一旦完成,项目将被部署到公共Web服务器(env3)。 我使用Git进行版本控制,并使用Bitbucket进行分布式存储库pipe理。
我的项目是一个WordPress的网站。 因此,我将WordPress根目录,一些额外的源目录以及最新的Mysql数据库转储SQL文件添加到开发存储库中,我目前正在使用它。 如果我在另一个环境中提取并检出最新的分支更新,我也在本地数据库上运行数据库转储文件。 因此,开发环境始终保持一致,包括通过pipe理后端对WordPress进行的所有内容和设置更改。
但是,服务器名称保持不同。 可湿性粉剂(我也假设其他的networking应用程序)有configuration设置,如主机名 ,这是存储在数据库中,但实际上是在每个环境不同。 Env1可以使用私有IP,例如192.168.xxx.yy,而env2可能不能连接到局域网,因此只能监听localhost / 127.0.0.1,env3需要官方主机名,比如说mydomain.com。
我的问题是,如何在env1和env2上configurationApache Web服务器,他们使用一些虚拟主机名称,为相应的虚拟主机说localdevname ? 所以我可以设置WPconfigurationhostname = localdevname:91并在env1调用localdevname:91parsing为192.168.xxx.yy:91而在env2调用的localdevname:91将parsing为localhost:91?
我在这里find了一个类似的问题。 但唯一的答案并不能解决我的问题。 另外,我玩弄指令ServerName,ServerAlias,VirtualHostName没有成功。
我的build议是为每个环境创build一个不同的/etc/apache2/conf-available/network.conf文件(和a2enconf它)。 这些文件可能是这样的:
/etc/apache2/conf-available/network.conf <VirtualHost 192.168.1.1:91> ServerName localdevname SetEnv environment env1 SetEnv dbserver 192.168.1.1 Include /etc/apache2/sites-available/wordpress-project.conf </VirtualHost>
/etc/apache2/conf-available/network.conf <VirtualHost 127.0.0.1:91> ServerName localdevname SetEnv environment env2 SetEnv dbserver 127.0.0.1 Include /etc/apache2/sites-available/wordpress-project.conf </VirtualHost>
/etc/apache2/conf-available/network.conf <VirtualHost 11.22.33.44:80> ServerName mydomain.com SetEnv environment prod SetEnv dbserver mysql-prod.mydomain.com Include /etc/apache2/sites-available/wordpress-project.conf </VirtualHost>
您的wordpress-project.conf和WordPressconfiguration文件在所有主机上都可以相同。 他们可以利用环境variables来改变他们的行为。
另外,你可能会发现mod_macro是有用的。
您还需要configuration/etc/hosts和/或本地DNSconfiguration,以使localdevname以您想要的方式解决。