如何在Apache上运行2个站点?复杂情况

时间:2016-04-19 21:08:26

标签: wordpress apache azure dns cname

我的目标是在同一个虚拟机上托管两个不同的站点,并且都在端口80上。一个是domain.com上的Wordpress站点,另一个是app.domain.com上的基于Web的应用程序。如果无法做到这一点,那么我的另一个目标是只在Domain.com端口80上运行Wordpress网站。

我的注册商是1and1.com,DNS设置如下(如下)。请注意,他们不允许主域名的CNAME记录,仅适用于子域名。这是我的A记录(这篇文章中的IP地址和域名不是我的真实记录):

   Type: A Record   Value: 123.456.789.10

我的主机是Azure,我的虚拟机IP地址为123.456.789.10。此Azure VM的端点配置如下:

   TCP    Public Port 8080    Private Port 8080
   TCP    Public Port 80      Private Port 80
   TCP    Public Port 2121    Private Port 21
   TCP    Public Port 22      Private Port 22

在Azure上,我有一个DNS区域配置如下:

    Name: www    Type: A    TTL: 3600    Value: 123.456.789.10

我的apache默认文件配置如下:

# FOR WORDPRESS WEBSITE (DOMAIN.COM)
      Listen 80
      <VirtualHost *:80>
      DocumentRoot /var/www/html/wordpress/
      <Directory "/var/www/html/wordpress/">
          AllowOverride All
      </Directory>
      </VirtualHost>          
 # FOR APPLICATION (APP.DOMAIN.COM)
      <VirtualHost *:80>
      DocumentRoot /var/www/application/
      <Directory "/var/www/application/">
          AllowOverride All
      </Directory>
      </VirtualHost>

Wordpress根文件夹中的.htaccess文件配置如下:

 # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
 # END WordPress
    <IfModule mod_suphp.c>
    AddHandler application/x-httpd-php54 .php .php5 .php4 .php3
    </IfModule>

Wordpress配置文件:

    It's totally standard and the site was running last week without 
    issue while on port 8090, but I wanted to use port 80 instead.

Ubuntu托管文件:

    127.0.0.1 localhost
    ServerName domain.com
# The following lines are desirable for IPv6 capable hosts
    ::1 ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    ff02::3 ip6-allhosts

目前我在浏览器中收到错误消息&gt;&gt;这个网站无法访问domain.com花了太长时间才能回复。 ERR_CONNECTION_TIMED_OUT但有时在调整我的设置时(上图)我会在浏览器中看到一个目录列表,其中显示了apache的默认目录/ var / www

我的感觉是我需要更多A和CNAME记录设置,但我不确切知道如何配置它们。我已经花了整整5天时间研究这个并且谷歌搜索解决方案对我不起作用。任何指针都会很棒!

3 个答案:

答案 0 :(得分:0)

你尝试过ServerName吗?并将其添加到hosts文件中。

<VirtualHost *:80>
    ServerName domain.com
    DocumentRoot /var/www/html/wordpress/
    ErrorLog /var/www/html/wordpress/error.log

<VirtualHost *:80>
    ServerName app.domain.com
    DocumentRoot /var/www/application/
    ErrorLog /var/www/application/error.log

答案 1 :(得分:0)

我不知道Azure,但你需要公开打开80端口 - 看起来目前只设置了8080.

另外,你肯定需要:

ServerName

指令。

如果您可以提供真实的域名,我们可以为您检查DNS /端口等。

答案 2 :(得分:0)

我得到了它!这个网站是从另一个网站的副本构建的,我注意到当我将我的Wordpress文件夹的内容直接复制到/ var / www /时,地址栏不会加载网站但是它会显示domain.com:8090 (其中&#34; domain.com&#34;是我的新网站&#34; 8090&#34;是旧网站以前使用的端口号)在地址栏中RELENTLESSLY,即使我的apache中没有包含此指令配置文件。这让我觉得由于某种原因,某些代码行指向这个端口。所以通过phpmyadmin我修改了Wordpress&#34;网站名称&#34;和&#34; url&#34;我的数据库中的值(包含此端口号)与我的新域匹配,没有端口号和中提琴。对我来说,为什么这有帮助是没有意义的,但无论如何,该网站然后加载了很棒!但这只是问题的一半,因为我不应该将我的wordpress内容直接放在/ var / www中,而是放在我想要的任何地方。

当我的同事决定复制我的文件&#34; / etc / apache2 / sites-available / default&#34;问题的后半部分已经解决了。到一个新文件&#34; /etc/apache2/sites-enabled/default.conf"由于我不明白的原因。根据他的说法,这使得apache实际上开始在/ etc / apache2 / sites-available / default文件中监听我的指令,因此齿轮再次开始转动。对我来说这没有任何意义,因为它与我运行的其他apache服务器相矛盾,所以如果值得,我会得到澄清并再次发布。