环境:
OS: Ubuntu18.04 LTS(64bit)
安装: Apache2

一、Apache2 安装
1.更新 apt-get 索引:

sudo apt-get update

2.在更新完成后(如果不想检查更新,也可直接输入此步)输入:

sudo apt-get install apache2

3.完成后,在浏览器输入 https://localhost 或者 127.0.0.1 ,云服务器输入 ip 地址,如果顺利跳出 Apache2 Default Page ,即代表安装成功

二、调整防火墙
在测试Apache之前,需要修改防火墙设置以允许外部访问默认Web端口。 假定按照先决条件中的说明操作,则应该配置UFW防火墙,以配置对服务器的访问限制。

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

输入以下命令列出ufw应用程序配置文件:

sudo ufw app list

可以看到应用程序配置文件的列表:

OutputAvailable applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

正如你所看到的,有三个配置文件可用于 Apache :

Apache :此配置文件仅打开端口80(正常,未加密的网络流量)
Apache Full :此配置文件可打开端口80(正常,未加密的网络流量)和端口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服务器。

三、管理 Apache 进程
现在已经启动并运行了Web服务器,下面是一些基本的管理命令。

停止:

sudo systemctl stop apache2

启动:

sudo systemctl start apache2

重启:

sudo systemctl restart apache2

如果只是简单地进行配置更改,Apache通常可以重新加载而不会丢失连接:

sudo systemctl reload apache2

默认情况下,Apache被配置为在服务器引导时自动启动。 如果这不是您想要的,请键入以下命令禁用此行为:

sudo systemctl disable apache2

重新启用该服务在服务器启动时自动运行:

sudo systemctl enable apache2

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

Ubuntu 18.04 上的 Apache 有一个默认启用的服务器模块,它被配置为从 /var/www/html 目录中提供文档。 虽然这适用于单个站点,但如果您托管多个站点,它可能会变得很笨重。 我们不必修改 /var/www/html ,而是在 /var/www 为我们的 example.com 网站创建一个目录结构,并将 /var/www/html 保留为默认目录,如果客户端请求没有匹配任何其他网站。

为 example.com 创建目录,使用-p标志创建任何必需的父目录:

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

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

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

如果你还没有修改你的非unmask值,你的web根目录的权限应该是正确的,但是你可以通过输入:

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

接下来,使用编辑器创建一个index.html页面示例:

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

在里面,添加下面的示例HTML:

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

编辑完成后保存并关闭文件。

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

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

以下配置块中,该块类似于默认值,但已更新为我们的新目录和域名:

# 在 ServerName 后加上你的网站名称
ServerName www.example.com
# 如果你想多个网站名称都取得相同的网站,可以加 在 ServerAlias 后加上其他网站别名。
# 别名间以空格隔开。
ServerAlias ftp.example.com mail.example.com
# 在 ServerAdmin 后加上网站管理员的电邮地址,方便别人有问题是可以联络网站管理员。
ServerAdmin webmaster@example.com
# 在 DocumentRoot 后加上存放网站内容的目录路径(用户的个人目录)
DocumentRoot /var/www/example.com/html

完成后保存并关闭文件。

启用配置
前面我们配置好的内容只是“有效”虚拟主机,真正发挥效果的话得放到 /etc/apache2/sites-enabled 文件夹下面。我们可以使用ln命令来建立一对关联文件:

sudo ln -s /etc/apache2/sites-available/example.com /etc/apache2/sites-enabled/example.com

检查语法,重启web服务

谨慎起见,我们在重启服务前先检查下语法:

sudo apache2ctl configtest

没有错误的话,再重启Apache 以实现的更改:

sudo systemctl restart apache2

最后改一下 /etc/apache2/ports.conf 文件:

找到 Linsten 80
在下面添加 Listen 端口号,即可监听其他端口,例:

Listen 80
Listen 8080
<IfModule ssl_module>
        Listen 443
</IfModule>

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

现在 Apache 应该能正常使用,可以通过浏览器输入 http://example.com 来测试它,你应该看到 index.html 文件中输出的内容。

五、重要的 Apache 文件和目录

1.内容:
/var/www/html :默认情况下,实际的网页内容仅包含之前看到的默认 Apache 页面。在 /var/www/html 目录中提供,可以通过修改 Apache 配置文件来改变。

2.服务器配置:
/etc/apache2 : Apache 配置目录。 所有的 Apache 配置文件都安装在这里。

/etc/apache2/apache2.conf :主要的 Apache 配置文件。 可以修改这个以更改 Apache 全局配置。该文件负责加载配置目录中的许多其他文件。

/etc/apache2/ports.conf :该文件指定了 Apache 将监听的端口。 默认情况下,当启用提供 SSL 功能的模块时, Apache 监听端口 80 ,并在端口 443 上监听。

/etc/apache2/sites-available/ :可以存储每个站点虚拟主机的目录。 除非链接到 sites-enabled 目录,否则 Apache 不会使用此目录中的配置文件。 通常,所有服务器块配置都在此目录中完成,然后通过使用 a2ensite 命令链接到其他目录来启用。

/etc/apache2/sites-enabled/ :存储已启用每站点虚拟主机的目录。 通常,这些是通过链接到 a2ensite 的 sites-available 目录中的配置文件创建的。 Apache 在启动或重新加载以编译完整配置时读取此目录中的配置文件和链接。

/etc/apache2/conf-available/ , /etc/apache2/conf-enabled/ :这些目录与sites-available和sites-enabled sites-available目录具有相同的关系,但用于存储不属于虚拟主机。 conf-available目录中的文件可以使用a2enconf命令启用,并使用a2enconf命令禁用。

/etc/apache2/mods-available/ , /etc/apache2/mods-enabled/ :这些目录分别包含可用和启用的模块。 以 .load 结尾的文件包含用于加载特定模块的片段,而以 .conf 结尾的文件包含这些模块的配置。 可以使用 a2enmod 和 a2dismod 命令启用和禁用模块。

3.服务器日志
/var/log/apache2/access.log :默认情况下,除非 Apache 配置为其他方式,否则对 Web 服务器的每个请求都会记录在此日志文件中。
/var/log/apache2/error.log :默认情况下,所有错误都记录在此文件中。 Apache 配置中的 LogLevel 指令指定错误日志将包含多少细节。

六、卸载 Apache2

(1)    $ sudo apt-get --purge remove apache2
       $ sudo apt-get --purge remove apache2.2-common
       $ sudo apt-get autoremove

(2) (关键一步)找到没有删除掉的配置文件,一并删除
       $ sudo find  /etc -name "*apache*" -exec  rm -rf {} \;
       $ sudo rm -rf /var/www