如何在Ubuntu 20.04 LTS上安装Apache

时间:2020-01-09 10:39:18  来源:igfitidea点击:

如何在Ubuntu 20.04 LTS Linux服务器上安装Apache?

Apache(也称为HTTPD)Web服务器是用于提供动态和静态Web页面的最受欢迎的Web服务器之一。
它是根据Apache License 2.0发布的免费开源软件。
让我们看看如何在Ubuntu 20.04 LTS Linux服务器上安装Apache。

如何在Ubuntu 20.04 LTS上安装Apache

确保您的系统是最新的并且已修补。
为此,请执行以下apt命令:

sudo apt update
sudo apt upgrade

步骤1安装Apache 2服务器

现在,该系统已更新了最新补丁程序,现在该安装Apache 2软件了。
换句话说,执行以下命令:

sudo apt install apache2

步骤2确保Apache服务在启动时已启动

我们将如下使用systemctl命令来启用apache2.service:

sudo systemctl is-enabled apache2.service

如果未启用,请启用它,然后运行:

sudo systemctl enable apache2.service

在Ubuntu云服务器上管理Apache 2服务

要启动,停止,重新启动,然后再次使用以下命令查找服务状态。

启动apache2服务器
sudo systemctl start apache2.service
停止apache2服务器
sudo systemctl stop apache2.service
重新启动apache2服务器
sudo systemctl restart apache2.service
优雅地重新加载apache2服务器
sudo systemctl reload apache2.service
查找apache2服务器的状态
sudo systemctl status apache2.service
* apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-05-05 19:49:41 UTC; 7min ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 1766 (apache2)
      Tasks: 54 (limit: 4915)
     Memory: 6.5M
     CGroup: /system.slice/apache2.service
             ??1766 /usr/sbin/apache2 -k start
             ??1767 /usr/sbin/apache2 -k start
             ??1768 /usr/sbin/apache2 -k start
 
May 05 19:49:41 db-host systemd[1]: Starting The Apache HTTP Server...
May 05 19:49:41 db-host apachectl[1765]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
May 05 19:49:41 db-host systemd[1]: Started The Apache HTTP Server.

步骤3使用UFW防火墙打开Apache端口80和443

执行以下ufw命令以为所有人提供TCP端口80和443

sudo ufw allow 80/tcp comment 'accept Apache'
sudo ufw allow 443/tcp comment 'accept HTTPS connections'

验证一下:

sudo ufw status

输出示例:

Status: active

To                         Action      From
--                         ------      ---
10.105.28.158 22/tcp       ALLOW       192.168.1.0/24            
80/tcp                     ALLOW       Anywhere                   # accept Apache
443/tcp                    ALLOW       Anywhere                   # accept HTTPS connections
80/tcp (v6)                ALLOW       Anywhere (v6)              # accept Apache
443/tcp (v6)               ALLOW       Anywhere (v6)              # accept HTTPS connections

步骤4找到您的Ubuntu 20.04 LTS服务器IP地址

运行以下任一命令:

hostname -I
ip a
ip a s eth0

我的IP地址:

10.105.28.158

您还可以按照以下方式使用dig命令/主机命令从CLI查找公共IPv4/IPv6地址:

dig +short myip.opendns.com @resolver1.opendns.com

步骤5在Ubuntu上测试Apache 2安装

在此阶段,您可以使用curl命令,如下所示:

curl -I http://10.105.28.158

输出示例:

HTTP/1.1 200 OK
Date: Tue, 05 May 2020 20:08:32 GMT
Server: Apache/2.4.41 (Ubuntu)
Last-Modified: Tue, 05 May 2020 19:49:22 GMT
ETag: "2aa6-5a4ebf1b4b8bf"
Accept-Ranges: bytes
Content-Length: 10918
Vary: Accept-Encoding
Content-Type: text/html

另一种选择是启动网络浏览器(例如Chrome或Firefox),然后按如下所示执行URL:

http://your-server-ip
http://10.105.28.158

基本配置

编辑/etc/apache2/apache2.conf文件,运行:

sudo nano /etc/apache2/apache2.conf

至少将ServerName设置为127.0.0.1或实际名称,例如your-dot-com或服务器IP地址:

ServerName 10.105.28.9

保存并关闭文件。
接下来,编辑/etc/apache2/ports.conf文件,其中包括要在Ubuntu上监听的端口列表:

sudo nano /etc/apache2/ports.conf

默认情况下,Ubuntu Linux上的Apache版本2将侦听TCP端口80(HTTP)和443(HTTPS)。
无需更改它们。
但是,如果您在Linux容器中运行许多站点,则我们将端口更改如下:

########################################################################################
## Typically you don't have to change the defaults. These are for advance usage/users ##
########################################################################################
# Change HTTP port 80 to 86
Listen 86
 
# Change HTTPS port 443 to 449
<IfModule ssl_module>
        Listen 449
</IfModule>
 
<IfModule mod_gnutls.c>
        Listen 449
</IfModule>

您必须更新虚拟主机/域配置以匹配ports.conf中列出的端口号。

步骤6配置Apache 2虚拟主机

为您的域创建一个配置文件,如下所示:

sudo nano /etc/apache2/sites-available/my-domain-name.conf

追加以下配置:

# Replace my-domain-name-here with actual domain name such as theitroad.local #
<VirtualHost *:80>
    ServerAdmin webmaster@my-domain-name-here
    ServerName my-domain-name-here
    ServerAlias www.my-domain-name-here
    DocumentRoot /home/my-domain-name-here/html
    DirectoryIndex index.html
    ErrorLog ${APACHE_LOG_DIR}/my-domain-name-here-error.log
    CustomLog ${APACHE_LOG_DIR}/my-domain-name-here-access.log combined
</VirtualHost>
<Directory /home/my-domain-name-here/html>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

为网站创建一个新的Ubuntu用户

输入以下useradd命令

sudo useradd -d /home/my-domain-name-here -m -k /dev/null -s /usr/sbin/nologin usernamehere

其中:

  • -d/home/my-domain-name-here:设置新帐户的主目录以提供文件。
  • -m:确保我们创建由-d选项设置的用户主目录。
  • -k/dev/null:避免为Apache虚拟域DocumentRoot创建点文件,该文件可以通过使用/dev/null作为备用框架目录来公开敏感信息。
  • -s/usr/sbin/nologin:将新帐户的登录shell设置为/usr/sbin/nologin,以使Web服务器用户无法使用ssh或任何其他方法登录到我们的系统。同样,这是一项安全功能。
  • usernamehere:将为我们的虚拟域存储文件的用户名

锁定Linux用户帐户,执行:

sudo passwd -l usernamehere

使用mkdir命令创建html文件夹:

sudo mkdir -pv /home/my-domain-name-here/html

创建一个示例html页面,如下所示:

sudo nano /home/my-domain-name-here/html/index.html
<html>
<head>
<title>www.theitroad.local - welcome</title>
</head>
<body>
<h2>www.theitroad.local</h2>
<p>This is a test page running on:</p>
<ul>
	 <li>Ubuntu Linux 20.04 LTS</li>
	 <li>Apache 2.x</li>
</ul>
<hr>
<small>[email protected]</small>
</body>
</html>

使用chown命令设置权限:

sudo chown -R usernamehere:usernamehere /home/my-domain-name-here/

打开新创建的虚拟域,运行:

sudo a2ensite my-domain-name.conf
sudo a2dissite 000-default.conf

输出示例:

Enabling site my-domain-name.conf.
To activate the new configuration, you need to run:
  systemctl reload apache2

测试配置:

sudo apache2ctl configtest

您必须获取语法确定消息,然后在Ubuntu Linux上重新启动Apache服务器:

sudo systemctl reload apache2

将您的域A和AAAA记录设置为服务器的公共IPv4/IPv6地址并对其进行测试:

http://my-domain-name-here
http://www.theitroad.local