欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

本文由一步 发表于云+社区专栏

介绍

Apache HTTP服务器是世界上使用最广泛的Web服务器。它提供了许多强大的功能,包括可动态加载的模块,强大的媒体支持以及与其他流行软件的广泛集成。

在本文中,我们将介绍如何在腾讯云Ubuntu 18.04服务器上安装Apache Web服务器。

必备条件

在开始本文之前,腾讯云默认使用的是sudo的非root用户。此外,您做起码的还要启动防火墙,屏蔽一些不必要的端口。您可以按照我们腾讯云安全组配置了解如何配置常规用户帐户并为您的服务器设置防火墙。

如果您有可用的帐户,请以非root用户身份登录以开始。

第一步、安装Apache

Apache可以在Ubuntu的默认软件存储库中使用,从而可以使用传统的包管理工具进行安装。

先更新本地的软件包

sudo apt update

然后,安装:apache2

sudo apt install apache2

确认安装后,apt将安装Apache和所有必需的依赖项。

第二步、设置防火墙

在测试Apache之前,有必要修改防火墙设置,以允许外部能访问默认的Web端口。

在安装过程中,Apache在UFW防火墙注册了自己,以及提供一些应用程序配置文件,这些配置文件可用于启用或禁用通过防火墙访问Apache。

输入以下内容列出应用程序配置ufw

sudo ufw app list

您将看到应用程序配置文件的列表:

OutputAvailable application:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

如您所见,Apache有三种配置文件:

  • Apache:此配置文件仅打开端口80(正常,未加密的Web流量)
  • Apache Full:此配置文件打开端口80(正常,未加密的Web流量)和端口443(TLS / SSL加密流量)
  • Apache Secure:此配置文件仅打开端口443(TLS / SSL加密流量)

建议您启用限制性最强的配置文件,该配置文件仍要允许您配置的流量。由于我们尚未在本文中为我们的服务器配置SSL,因此我们只需要允许端口80上的流量:

sudo ufw allow 'Apache'

您可以输入以下内容来查看是否修改成功:

sudo ufw status

您应该在显示的输出中看到允许的HTTP流量:

OutputStatus :active

to                        action      From 
--                        ------      ----
OpenSSH ALLOW Anywhere                  
Apache ALLOW Anywhere                  
OpenSSH  ( v6 )                ALLOW        Anywhere  ( v6 )             
Apache  ( v6 )                 Allow        Anywhere ( v6 )

如您所见,已经激活的配置文件,已允许访问Web服务器。

第三步、检查Web服务器

在安装过程结束时,Apache就会在Ubuntu 18.04运行。Web服务器应该已经启动并运行。

通过输入以下命令检查systemd init 系统以确保服务正在运行:

sudo systemctl status apache2
Output● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2018-04-24 20:14:39 UTC; 9min ago
 Main PID: 2583 (apache2)
    Tasks: 55 (limit: 1153)
   CGroup: /system.slice/apache2.service
           ├─2583 /usr/sbin/apache2 -k start
           ├─2585 /usr/sbin/apache2 -k start
           └─2586 /usr/sbin/apache2 -k start

从此输出中可以看出,该服务似乎已成功启动。但是,最佳的测试方法还是打开Apache的网页。

您可以访问默认的Apache登录页面,以确认软件是否通过您的IP地址正常运行。如果您不知道服务器的IP地址,可以从命令行获得几种不同的方法。

尝试在服务器的命令提示符下输入:

hostname -I

你会得到一些用空格分隔的地址。您可以在Web浏览器中尝试各自以查看它们是否有效。

另一种方法是输入下面这段命令,它应该帮您查到您的IP地址:

curl - 4 icanhazip.COM

获得服务器的IP地址后,将其输入浏览器的地址栏:

http://your_server_ip

您应该看可以到Ubuntu 18.04 Apache的默认页面:

imgsmall_apache_default

此页面表明Apache正常运行。它还包括有关重要Apache文件和目录位置的一些基本信息。

第4步 - 管理Apache进程

现在您已经启动并运行了Web服务器,让我们来看一些基本的管理命令。

要停止Web服务器,请输入:

sudo systemctl stop apache2

要在Web服务器停止时启动它,请输入:

sudo systemctl start apache2

要重启该服务,请输入:

sudo systemctl restart apache2

如果您只是进行配置更改,Apache通常可以在不丢弃连接的情况下重新加载。请使用以下命令:

sudo systemctl reload apache2

在默认情况下,Apache是默认开机启动的。如果不想开机启动,请输入以下命令:

sudo systemctl disable apache2

要重新开机启动Apache,请输入:

sudo systemctl start apache2

Apache现在应该能够开机启动了。

第五步、设置虚拟主机

使用Apache Web服务器时,您可以使用虚拟主机(类似于Nginx中的服务器块)来封装配置详细信息,并且可以服务器托管多个域名。我们将设置一个名为example.com的域名,但您应将其替换为您自己的域名。

Ubuntu 18.04上的Apache默认启用了一个服务器块,配置为从 /var/www/html/ 目录中提供文档。虽然这适用于单个站点,但如果您托管多个站点,这就有点困难了。与其修改/var/www/html/,还不如在/var/www/html/ 中为example.com站点内创建一个目录结构,如果客户端请求与任何其他站点不匹配,则将/var/www/html/作为默认的目录。

按如下所示为example.com创建目录,使用-p标志创建必需的父目录:

sudo mkdir - p /var/www/example.com/html

接下来,使用环境变量分配目录的所有权:$USER

sudo chown - R $USER:$USER/var/www/xample.com/html

如果您尚未修改您的值,则您的Web根目录的权限应该是正确的,通过下面的命令来给你的网站打上权限

sudo chmod - R 755 /var/www/example.com

接下来,您可以使用nano来编辑。

nano /var/www/example.com/html/index.html

添加以下代码到 /var/www/example.com/html/index.html 里:

<html> 
    <head> 
        <title>Welcome to Example.com</title> 
    </head> 
    <body> 
        <h1>Success!  The example.com server block is working!</h1> 
    </body> 
</html>

完成后保存并关闭文件。

为了使Apache能够提供此内容,必须使用正确的指令创建虚拟主机文件。不要直接修改位于/etc/apache2/sites-available/000-default.conf的默认配置文件,而是在以下位置创建一个新文件:/etc/apache2/sites-available/example.com.conf

sudosudo nano /etc/apache2/sites-available/example.com.conf

复制下面这段代码到/etc/apache2/sites-available/example.com.conf,并作出相对应的修改

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

请注意,我们已将DocumentRoot更新为新目录,将ServerAdmin更新为example.com站点管理员可以访问的电子邮件。 我们还添加了两个指令:ServerName它建立了应该与此虚拟主机定义匹配的基本域; ServerAlias它定义了应该匹配的更多名称,就像它们的名称一样。

完成后保存并关闭文件。

让我们使用该工具启用该文件:a2ensite

sudo a2ensite example.com.conf

禁用以下定义的默认站点:000-default.conf

sudo a2dissite 000-default.conf

接下来,让我们测试一下配置是否错误:

sudo apache2ctl configtest

您应该看到以下输出:

OutputSyntax Ok

重启Apache:

sudo systemctl restart apache2

Apache现在应该为您的域名服务。你可以通过导航来测试这个,你应该看到这样的东西:http://example.com

imgexample

第六步、熟悉的Apache文件和目录

现在您已了解如何管理Apache服务本身,您应该花几分钟时间熟悉一些重要的目录和文件。

内容

  • /var/www/html:网页包括首页的其他文件都在这个目录下(默认情况下仅包含您之前看到的默认Apache页面)是在/var/www/html这个目录中的。这可以通过更改Apache配置文件来更改。

服务器配置

  • /etc/apache2:Apache配置目录。所有Apache配置文件都驻留在此处。
  • /etc/apache2/apache2.conf:主要的Apache配置文件。可以对其进行修改以更改Apache全局配置。该文件负责加载配置目录中的许多其他文件。
  • /etc/apache2/ports.conf:此文件指定Apache将侦听的端口。默认情况下,Apache在端口80上侦听,并在启用提供SSL功能的模块时另外侦听端口443。
  • /etc/apache2/sites-available/:可以存储所有虚拟主机站点的目录。Apache不会使用此目录中的配置文件,除非它们链接到sites-enabled目录。通常,所有服务器块配置都在此目录中完成,然后通过使用该a2ensite命令链接到其他目录。
  • /etc/apache2/sites-enabled/:存储已启用的所有的虚拟主机站点的目录。通常,这些是通过链接到sites-available目录中的配置文件来创建的a2ensite。Apache在启动或重新加载以编译完整配置时读取此目录中的配置文件和链接。
  • /etc/apache2/conf-available//etc/apache2/conf-enabled/:这些目录与sites-available和目录具有相同的关系sites-enabled,但用于存储不属于虚拟主机的配置片段。conf-available可以使用该a2enconf命令启用目录中的文件,并使用该命令禁用该文件a2disconf
  • /etc/apache2/mods-available//etc/apache2/mods-enabled/:这些目录分别包含可用和已启用的模块。带.load结尾的文件,包含用于加载特定模块的片段,而文件以.conf结尾的文件包含这些模块的配置。可以使用a2enmoda2dismod命令启用和禁用模块。

服务器日志

  • /var/log/apache2/access.log:默认情况下,除非将Apache配置为执行其他操作,否则对Web服务器的每个请求都将记录在此日志文件中。
  • /var/log/apache2/error.log:默认情况下,所有错误都记录在此文件中。LogLevel:Apache配置中的指令,可以设置错误日志将包含多少详细信息。

在Ubuntu 16.04上面搭建Apache网站服务器你学会了嘛?购买一台服务器试试吧:https://cloud.tencent.com/pro...


参考文献:《How To Install the Apache Web Server on Ubuntu 18.04》

翻译:黄城浩,审校:Techeek

问答

消失存储过程?

相关阅读

腾讯云CIS入门——Kubernetes部署

腾讯云API:用Python使用腾讯云API(机器翻译实例)

主机迁移实践分享

此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/dev...

欢迎大家前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~

海量技术实践经验,尽在云加社区


腾讯云开发者
21.9k 声望17.3k 粉丝