Ubuntu16.04配置Apache支持多个站点

怎样在一个Ubuntu的机器上(虚拟机)配置Apache支持多个网站呢?

比如你有一台独立的Ubuntu虚拟机,配有一个外网的IP(45.46.47.48),并且注册了两个域名AAA.com和BBB.com,将这两个域名DNS解析到你虚机的IP地址。假设你已经安装好了Apache,一切都是默认的设置。
我们需要在这一个server上面,同时host AAA.com,BBB.com

第一步:修改hosts文件

在Ubuntu系统中,hosts文件目录为/etc/hosts,可以用vi编辑
sudo vi /etc/hosts
添加一下两行内容:
127.0.0.1 AAA.com
127.0.0.1 BBB.com

第二步:创建站点目录

默认一个站点,我们的站点目录为/var/www/html,这里我们分别为两个站点创建两个目录:
创建目录/var/www/html/AAA/, 并创建一个index.html文件,添加内容”Hello, site AAA”
然后,
创建目录/var/www/html/BBB/, 并创建一个index.html文件,添加内容”Hello, site BBB”

第三步:修改apache config文件

进入目录 /etc/apache2/sites-available/
可以看到有一个默认文件000-default.conf,我们可以直接将其作为A站点的config文件,它的内容如下:

<VirtualHost *:80>
        ServerName AAA.com
		ServerAlias www.AAA.com
        <Directory /var/www/html/AAA/>
            AllowOverride All
        </Directory>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/AAA
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

运行命令为BBB.com创建配置文件:
sudo cp 000-default.conf 001-default.conf
修改其内容如下:

<VirtualHost *:80>
        ServerName BBB.com
		ServerAlias www.BBB.com
        <Directory /var/www/html/BBB/>
            AllowOverride All
        </Directory>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/BBB
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

第四步:启动站点

运行命令:
sudo a2ensite 000-default.conf
sudo a2ensite 000-default.conf
如果提示需要运行apache load,你可以按照提示运行命令。

第五步:重启Apache service

运行命令:
sudo service apache2 restart

第六步:验证

你可以在浏览器中分别输入AAA.com和BBB.com查看是否和index里面的内容一致。如果和预期一致,那么就完成了Apache多站点的配置了。

是不是很简单?有问题欢迎直接留言。

 

参考官方文档:https://httpd.apache.org/docs/2.4/vhosts/name-based.html

By by Code问答 | CodeWenda.com

“Ubuntu16.04配置Apache支持多个站点”的4个回复

  1. 有问题请教:ubuntu+apache2+python+wsgi+flask配置第二个站点,怎么让apache2自动加载?
    目前apache2配置环境情况:
    1、默认的/var/www/html/ 放置了纯HTML静态网站。
    2、在/var/www/hello/ 放置了python+wsgi+flask动态网站。
    问题描述:
    1、当输入URL为locallhost时或者192.168.1.2时都可以直接默认访问到静态网站。
    2、当输入URL为localhost:5000时,无法访问python+wsgi+flask动态网站,我不知道怎么去调试好这个动态网站的apache2配置,能否有这方面的详细配置吗?
    需求描述:
    1、我是希望在apache2上配置2个站点,一个是静态站点,一个是动态站点。
    2、我希望动态站点通过apache2来自动启动,而不是通过python hello.py来启动。
    配置历史:
    1、增加/var/www/hello/hello.py和/var/www/hello/hello.wsgi文件后,我尝试在port.conf中增加Listen 5000,依然无法访问。
    2、配置/etc/apache2/sites-available/hello.conf文件后,sudo a2ensite hello.conf后,sudo service apache2 reload后,依然无法访问。
    3、用python /var/www/hello/hello.py运行服务器,可以访问localhost:5000。
    4、终止python /var/www/hello/hello.py服务器,出现无法访问localhost:5000。

    1. 所以你的问题是:如何通过Apache来启动python程序吗?我可能无法直接回答你的这个问题,之前没有做过类似的尝试。不过我之前在做一个微信公众号的时候,是Apache+index.php,然后再PHP中启动Python程序。

      1. 当我关闭000-default.conf后单独配置一个动态站点hello.conf,apache2是可以自动加载的。
        但当我配置第二个动态站点的时候,在ports.conf中添加一个Linsten 5000后,在/etc/apache2/sites-available/hello2.conf中写入这样的配置后,执行sudo a2ensite hello2.py && sudo service apache2 reload后,访问localhost:5000还是无法访问第二个动态站点?
        我不知道apache2的配置哪里出现了问题,我想问:
        1、/etc/apache2.conf 这个文件是不是需要什么样的配置才能开启多个站点吗?
        2、还是需要在/etc/apache2/sites-available/hello2.conf中增加其它什么配置吗?

        1. 我试了一下,将改成是不能访问的,改了端口重启Apache之后,访问第二个网站会跳转至我的默认网站(即第一个网站)。
          另外,apache2.conf并没有其它特殊的配置。
          你的场景和这篇博文的使用场景不太相同。我这里是将两个域名网站host在同一个Apache上。VM支持多站点有其它的办法,你可以Google上找找答案。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

18 − = 12