前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在 Ubuntu 20.04 上设置 Apache 虚拟主机

如何在 Ubuntu 20.04 上设置 Apache 虚拟主机

作者头像
雪梦科技
发布2020-06-28 11:34:29
2.8K0
发布2020-06-28 11:34:29
举报
文章被收录于专栏:ITCoderITCoder

文章目录

  • 一、前提
  • 二、创建目录结构
  • 三、创建虚拟主机
  • 四、总结

一个虚拟主机是一段 Apache 配置指令,它允许你在一台单独的服务器上运行一个或者多个指令。通过 虚拟主机,你可以指定网站根目录(托管网站文件),每个网站创建一个独立的安全策略,使用不同的 SSL 证书,等等。

本文描述如何在 Ubuntu 20.04 上 设置 Apache 虚拟主机。

一、前提

在继续下面的指南之前,确保你满足下面的必要条件:

  • 指向公网服务器 IP 的一个或者多个域名
  • 在你的 Ubuntu 系统上安装 Apache
  • 以 root 或者其他 sudo 用户身份登录

二、创建目录结构

文件根目录是域名所对应的网站文件存储的地方,以及响应网站请求的地方。你可以将网站根目录设置成任何你想要设置的位置,在这个例子中,我们将会使用下面的目录结构:

代码语言:javascript
复制
/var/www/
├── domain1.com
│   └── public_html
├── domain2.com
│   └── public_html

每一个托管的域名,它的域名根目录都被设置为/var/www/<domain_name>/public_html

开始为域名创建根目录:

代码语言:javascript
复制
sudo mkdir -p /var/www/domain1.com/public_html

我们将会在域名根目录下创建一个index.html文件,它将在你浏览器浏览域名的时候,展示出来: /var/www/domain1.com/public_html/index.html

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to domain1.com</title>
  </head>
  <body>
    <h1>Success! domain1.com home page!</h1>
  </body>
</html>

因为上面的命令是以一个 sudo 用户身份执行,新创建的文件和目录都是归属于 root。想要避免任何权限问题,修改域名根目录和该目录下的所有文件到 apache 用户(www-data):

代码语言:javascript
复制
sudo chown -R www-data: /var/www/domain1.com

三、创建虚拟主机

在 Ubuntu 系统上,Apache 虚拟主机配置文件在/etc/apache2/sites-available目录。它们可以通过创建指向/etc/apache2/sites-enabled目录的符号链接来启用虚拟主机配置,在 Apache 启动时, 将会读取这个目录。

打开你选择的文本编辑器,并且创建下面的虚拟主机配置文件: /etc/apache2/sites-available/domain1.com.conf

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    ServerAdmin webmaster@domain1.com
    DocumentRoot /var/www/domain1.com/public_html

    <Directory /var/www/domain1.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/domain1.com-error.log
    CustomLog ${APACHE_LOG_DIR}/domain1.com-access.log combined
</VirtualHost>
  • ServerName: 虚拟主机匹配的域名。这可能是你的域名。
  • ServerAlias: 匹配这个虚拟主机的其他域名或者子域名,例如www子域名。
  • DocumentRoot: Apache 网站根目录
  • Options: 指令控制指定目录的服务器特性
    • -Indexes: 防止目录列表
    • FollowSymLinks: 当启用该选项时,Apache 将会允许访问符号链接文件
  • AllowOverride: 指定.htaccess文件中的哪个指令可以覆盖配置文件中的指令。
  • ErrorLog, CustomLog:指定日志文件的位置。

你可以按照自己的喜好来命名配置文件的名称,但是最佳实践就是将域名的名字作为虚拟主机配置文件的名字。

想要启用新的虚拟主机文件,使用a2ensite帮助脚本来创建虚拟主机文件到sites-enabled目录的符号链接:

代码语言:javascript
复制
sudo a2ensite domain1.com

另外一个选项就是手动创建一个符号链接,像下面这样:

代码语言:javascript
复制
sudo ln -s /etc/apache2/sites-available/domain1.com.conf /etc/apache2/sites-enabled/

一旦完成。测试配置文件是否有任何语法错误:

代码语言:javascript
复制
sudo apachectl configtest

如果没有错误,你将看到下面的输出:

代码语言:javascript
复制
Syntax OK

重启 Apache 服务器,使修改生效:

代码语言:javascript
复制
sudo systemctl restart apache2

最后,为了验证所有事情都像预期一样顺利,在你的浏览器中打开http://domain1.com,你可以看到index.html页面。

四、总结

你已经学会了如何在一个 Ubuntu 服务器上创建一个 apache 虚拟主机配置 来托管多个域名。

重复上面的步骤,可以为所有域名创建其他的虚拟主机。

原文 :https://linuxize.com/post/how-to-set-up-apache-virtual-hosts-on-ubuntu-20-04/

代码语言:javascript
复制
    版权声明:本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年06月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前提
  • 二、创建目录结构
  • 三、创建虚拟主机
  • 四、总结
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档