在Google Compute Engine上使用IP地址的虚拟主机

时间:2018-02-14 13:27:47

标签: php google-cloud-platform apache2 google-compute-engine virtualhost

我已经在Google Compute引擎上创建了LAMP实例,并且它在早期工作正常,但是一旦我创建了生产和开发环境,它就无法正常工作。

到目前为止我所做的如下: -

  • 我没有域名所以它在公共IP地址上运行 - 例如30.30.30.205

  • 我在/ etc / apache2 / sites-available /中创建了 development.conf 文件。

development.conf的内容如下:

dl.Array1D.new([1,2,3]);

根据以上配置,我希望在网址中实现的目标是 http://30.30.30.205/production ,对于开发,它将类似于 http://30.30.30.205/development

我在/ var / www / html中有2个文件夹 - 生产和开发,我在其中设置了不同的环境。

创建配置文件后,我还在/ sites-enabled文件夹中运行 sudo a2ensite 命令。

我还没有在/ etc中设置主机,因为我认为我没有域名但对此不确定所以如果我需要在这里做任何事情,请引导我。

按照上述步骤操作后,当我尝试点击网址时,我无法访问Google云端的网站。

请帮助或指导我如何解决问题。

1 个答案:

答案 0 :(得分:1)

如果在尝试创建虚拟主机之前这是有效的,那么就排除了防火墙或网络配置,因此我将专注于apache2方面。

我只是尝试实现类似于您正在做的事情并设法使其正常工作,尽管每个虚拟主机的环境都相当简单。

您的帖子中有一点需要注意的是,您已为生产& development.conf'命名了配置文件。将它命名为“production.conf”是不是更有意义。 (并命名开发的conf文件' development.conf'而不是)。

以下是我创建基本工作环境所遵循的步骤。试试这个,看看它是否有效,那么你可以建立它,如果是这样的话。

1)在/ var / www / html /我创建了两个名为' development'和'生产'。

2)在两个文件夹中我创建了一个index.html文件:

/var/www/html/development/index.html

<html>
   <head>
        <p> "This is development" </p>
   </head>
</html>

/var/www/html/production/index.html

<html>
  <head>
          <p> "This is production"
  </head>
</html>

3)在/etc/apache2/sites-available中创建名为&#39; development.conf&#39;的2个配置文件。和&#39; production.conf&#39;。

development.conf

<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/development

    <Directory "/var/www/html/development">
              Options Indexes FollowSymLinks MultiViews
              AllowOverride all
              Require all granted
              Order allow,deny
              allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

production.conf

<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/production

    <Directory "/var/www/html/production">
              Options Indexes FollowSymLinks MultiViews
              AllowOverride all
              Require all granted
              Order allow,deny
              allow from all
    </Directory>


    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

4)现在确保您在/ etc / apache2 / sites-available中并运行以下两个命令,目标是您创建的两个配置文件:

$ sudo a2ensite development.conf 

$ sudo a2ensite production.conf 

5)重启apache2:

$ sudo systemctl reload apache2

现在,当您导航到http://EXTERNAL_IP/development时,您会看到:

"This is development"

同样,当您导航到http://EXTERNAL_IP/production时,您会看到:

"This is production"

编辑:

回应&#34;无法访问此网站&#34;您收到的错误,您确定要使用http而不是https搜索地址吗?即确保您尝试在浏览器中解决:

http://EXTERNAL_IP/development

而不是

https://EXTERNAL_IP/development

值得注意的是,如果您在GCP控制台的VM实例页面中单击外部IP地址,它将尝试使用HTTPS解析地址,如果您没有配置SSL ,您将收到您收到的错误。

作为另一个故障排除步骤,您可以在/ var / www / html中放置一个基本的index.html文件,并通过在浏览器中导航到http://EXTERNAL_IP来查看是否通过http请求解析。如果您收到相同的错误,可能确实存在防火墙规则问题。

关于你的htaccess配置,我尝试了上面的默认配置。最初尝试启动并运行虚拟主机,然后在此步骤之上添加更复杂的配置可能是值得的。