美文网首页
Ubuntu20.04 安装与配置 Apache

Ubuntu20.04 安装与配置 Apache

作者: O无为学长O | 来源:发表于2021-04-07 22:10 被阅读0次

    说明: 本文章内容在 Ubuntu20.04 版本下测试通过,其他版本未知。

    1. 安装


    Ubuntu20.04 中 Apache 软件包为 apache2
    运行下面的命令来更新软件包索引,并且安装 Apache

    sudo apt update
    sudo apt install apache2
    

    当安装过程完成,Apache 服务将会被自动启动。
    通过输入下面的命令,验证 Apache 是否正在运行:

    sudo systemctl status apache2
    

    2. 配置


    2.1 HTTP 和 HTTPS 端口

    Apache 监听了端口80(HTTP)和443(HTTPS)。你需要在防火墙打开那些端口,以便网站服务器从互联网上是可以访问的。

    假设你正在使用UFW,你可以通过启用Apache Full配置,它包含了这两个端口的规则:

    sudo ufw allow 'Apache Full'
    
    2.2 apache2 默认的几个配置文件:
    • /etc/apache2/apache2.conf
      是主要配置文件(这个文件的末尾可以看到,include了其它所有的配置文件)。
    • /etc/apache2/ports.conf
      始终包含在主配置文件中。它用于确定传入连接的侦听端口,默认为80,我们一般都会重新配置新的端口。
    • /etc/apache2/sites-enabled,/etc/apache2/conf-enabled,/etc/apache2/mods-enabled
      其它配置文件目录。
    • /var/www/html
      apache2的默认web目录:(在/etc/apache2/sites-enabled/000-default.conf 里可以看到这个 DocumentRoot /var/www/html 配置)
    • /etc/apache2/envvars
      apache2 的默认用户是 www-data,定义在该文件中。
    • /etc/apache2/mods-enabled/dir.conf
      设置默认主页的配置文件
    2.3 修改默认端口,比如修改为5000
    sudo vim /etc/apache2/ports.conf
    

    找到如下内容:

    Listen 80
    
    <IfModule ssl_module>
            Listen 443
    </IfModule>
    
    <IfModule mod_gnutls.c>
            Listen 443
    </IfModule>
    

    Listen 80 修改为 Listen 5000 即可, 443https 端口,如果有需要也可以修改。需要注意的是,如果是有多个站点,并且站点端口都不一样,那么则需要增加多个 Listen 侦听选项。比如服务器上有两个站点 site1 和 site2 ,site1 使用的 5000 端口,site2 使用的 6000 端口,完整的 ports.conf 应该是类似如下:

    Listen 5000
    Listen 6000
    
    <IfModule ssl_module>
            Listen 443
    </IfModule>
    
    <IfModule mod_gnutls.c>
            Listen 443
    </IfModule>
    
    2.4 修改默认的网站根目录

    apache2为了安全起见,只允许/var/www、/usr/share下面的文件夹被访问,如果要指定其它目录为网站根目录,需要修改配置文件 /etc/apache2/apache2.conf

    sudo vim /etc/apache2/apache2.conf
    

    找到下面的配置片段

    <Directory />
            Options FollowSymLinks
            AllowOverride None
            Require all denied
    </Directory>
    
    <Directory /usr/share>
            AllowOverride None
            Require all granted
    </Directory>
    
    <Directory /var/www/>
            Options Indexes FollowSymLinks
            AllowOverride None
            Require all granted
    </Directory>
    

    在配置下面添加指定的目录,比如 /mnt/www

    <Directory /mnt/www/>
            Options Indexes FollowSymLinks
            AllowOverride None
            Require all granted
    </Directory>
    

    重启服务使修改生效

    sudo systemctl reload apache2
    
    2.5 配置一个虚拟主机

    Apache 默认启动了一个虚拟主机。所有域名都指向服务器 IP 地址,匹配了默认的虚拟主机。如果你只托管一个简单的网站,你需要将网站内容上传到/var/www/html,并且编辑虚拟主机配置文件 /etc/apache2/sites-enabled/000-default.conf

    如果想搭建更多网站,需要为每一个网站创建一个虚拟主机配置。

    example.com 为例,第一步就是创建根目录文件夹:

    # 指定网站根目录为 /mnt/www/example.com , -p 参数的作用为递归创建目录,即使上级目录不存在,会按目录层级自动创建目录
    sudo mkdir -p /mnt/www/example.com
    

    在网站根目录下创建一个index.html文件来测试站点:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>测试站点</title>
      </head>
      <body>
        <h1>恭喜!如果看到这个页面,说明访问成功啦!</h1>
      </body>
    </html>
    

    apache2 的默认用户为 www-data ,修改网站根文件夹的用户归属,避免权限问题:

    sudo chown -R www-data: /mnt/www/example.com
    

    下一步就是为 example.com 创建一个虚拟主机配置(最佳实践就是将每一个虚拟主机配置存储成一个独立的文件)。

    Apache虚拟主机配置文件存储在/etc/apache2/sites-available目录, 标准命名是使用域名来命名配置文件。

    sudo touch /etc/apache2/sites-available/example.com.conf
    

    编辑配置,添加以下内容:

    <VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        ServerAdmin webmaster@example.com
        DocumentRoot /mnt/www/example.com
    
        <Directory /mnt/www/example.com>
            Options -Indexes +FollowSymLinks
            AllowOverride All
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
        CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
    </VirtualHost>
    

    Apache 默认不会读取/etc/apache2/sites-available文件夹下的配置文件,需要将它们链接到/etc/apache2/sites-enabled文件夹,使用a2ensite创建一个链接,激活虚拟主机配置:

    sudo a2ensite example.com
    

    测试配置文件,是否有语法错误:

    sudo apachectl configtest
    

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

    Syntax OK

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

    sudo systemctl reload apache2
    

    最终,在浏览器中打开 http://example.com,看看是否已经可以成功访问。

    3. 常用命令


    # 启动 apache2 服务
    sudo systemctl start apache2
    
    # 关闭 apache2 服务
    sudo systemctl stop apache2
    
    # 重启 apache2 服务
    sudo systemctl reload apache2
    
    # 查看 apache2 状态
    sudo systemctl status apache2
    

    相关文章

      网友评论

          本文标题:Ubuntu20.04 安装与配置 Apache

          本文链接:https://www.haomeiwen.com/subject/atavkltx.html