如何在 Ubuntu 16.04 上安装 Linux、Apache、MySQL 和 PHP (LAMP)

0 股票
0
0
0
0

如何在 Ubuntu 16.04 上安装 Linux、Apache、MySQL 和 PHP (LAMP)

介绍

LAMP 是一套开源软件集合,通常将它们一起安装,以使服务器能够托管动态网站和 Web 应用程序。LAMP 代表 Lamp 操作系统。 Linux 它由Apache Web服务器驱动。网站数据存储在MySQL数据库中,动态内容由PHP处理。.

在本指南中,我们将在 Ubuntu 16.04 服务器上安装 LAMP 架构。Ubuntu 将满足我们的第一个要求:一个 Linux 操作系统。.

先决条件

在开始本指南之前,您需要在服务器上设置一个具有 sudo 权限的非 root 用户帐户。您可以参考我们 Ubuntu 16.04 服务器初始设置教程中的步骤 1 到 4 来学习如何操作。.

步骤 1 – 安装 Apache 并配置防火墙

Apache Web 服务器是世界上最流行的 Web 服务器之一。它拥有完善的文档,并在 Web 发展的大部分历史时期都被广泛使用,使其成为网站托管的绝佳默认选择。.

我们可以使用 Ubuntu 包管理器轻松安装 Apache。该包管理器允许我们从 Ubuntu 维护的软件仓库中轻松安装大多数软件。您可以点击此处了解更多关于如何使用 apt 的信息。.

要查看结果,我们可以先输入以下命令:

sudo apt-get update  $
sudo apt-get install apache2  $

由于我们使用了 sudo 命令,此操作将以 root 权限执行。系统会要求您输入常规用户密码以确认您的操作。.

输入密码后,apt 会告诉您它计划安装哪些软件包以及它们将占用多少额外的磁盘空间。要继续,请输入 y 并按 Enter 键,安装将继续进行。.

设置全局服务器名称以抑制语法警告

接下来,我们将向 /etc/apache2/apache2.conf 文件中添加一行来抑制警告信息。虽然这无害,但如果您没有全局设置 ServerName,则在检查 Apache 配置语法错误时会收到以下警告:

sudo apache2ctl configtest   $
Output
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
Syntax OK

打开主配置文件,编辑其文本:

sudo nano /etc/apache2/apache2.conf  $

在文件底部,添加 ServerName 指令,指向您的主域名。如果您的服务器没有关联域名,则可以使用服务器的公网 IP 地址:

笔记: 如果您不知道服务器的 IP 地址,请转到“如何查找服务器的公共 IP 地址”部分查找。.



/etc/apache2/apache2.conf

. . .
ServerName server_domain_or_IP

完成后保存并关闭文件。.

接下来,输入以下命令检查语法错误:

sudo nano apache2ctl configtest  $

添加全局 ServerName 指令后,您应该只会看到以下内容:

Output
Syntax OK

重启 Apache 以使更改生效:

sudo nano systemctl restart apache2  $

现在你可以开始配置防火墙了。.

配置防火墙以允许 Web 流量

接下来,假设您已按照初始服务器设置说明启用了 UFW 防火墙,请确保您的防火墙允许 HTTP 和 HTTPS 流量。您可以像这样确保 UFW 具有 Apache 的应用程序配置文件:

sudo nano ufw app list  $
Output

Available applications:

Apache

Apache Full

Apache Secure

OpenSSH

查看完整的 Apache 配置信息,应该会显示它启用了 80 和 443 端口的流量:

$  sudo ufw app info “Apache Full”








Output
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
۸۰,۴۴۳/tcp

允许此配置文件的入站流量:

$  sudo ufw allow in “Apache Full”

您可以通过在 Web 浏览器中访问服务器的公共 IP 地址来快速检查一切是否按计划进行(如果您没有此信息,请参阅下一标题下的注释,以查找您之前的公共 IP 地址):

http://your_server_IP_address

您将看到 Ubuntu 16.04 的默认 Apache 网页,该网页仅用于信息展示和测试目的。它应该看起来像这样:

如果您看到此页面,则说明您的网络服务器已正确安装并通过防火墙访问。.

查找服务器的公共 IP 地址

如果您不知道服务器的公网 IP 地址,可以通过几种方法找到它。通常,这就是您通过 SSH 连接到服务器时使用的地址。.

您可以通过几种命令行方式找到此信息。首先,您可以使用 iproute2 工具,通过输入以下命令获取您的地址:

$ ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’

这将显示两到三行地址。它们都是有效的地址,但您的计算机可能只能使用其中一个,所以请逐一尝试。.

另一种方法是使用 curl 工具联系外部方,告知他们如何查看您的服务器。您可以通过向特定服务器请求您的 IP 地址来实现这一点:




$  sudo apt-get install curl
$  curl http://icanhazip.com

无论你使用哪种方法获取 IP 地址,你都可以将其输入到网络浏览器的地址栏中访问你的服务器。.

步骤 2 – 安装 MySQL

现在我们的Web服务器已经搭建好了,接下来需要安装MySQL。MySQL是一个数据库管理系统,它主要功能是存储、组织和访问数据库信息。.

我们可以再次使用 apt 来获取和安装软件。这次,我们还会安装一些其他的辅助软件包,以帮助我们各个组件之间进行通信:

$ sudo apt-get install mysql-server

笔记: 在这种情况下,您无需在执行命令前运行 `sudo apt-get update`。因为我们已经在上面的命令中运行过它来安装 Apache。您计算机上的软件包列表应该已经是最新的了。.

您将再次看到将要安装的软件包列表,以及它们将占用的磁盘空间大小。输入 Y 继续。.

安装过程中,服务器会要求您为 MySQL “root” 用户选择并确认密码。这是一个拥有高级权限的 MySQL 管理帐户。您可以将其视为服务器本身的 root 帐户(尽管您现在配置的帐户是一个特殊的 MySQL 帐户)。请确保密码强度高且唯一,切勿留空。.

安装完成后,我们需要运行一个简单的安全脚本,该脚本会移除一些危险的默认设置,并稍微限制对数据库系统的访问。运行以下命令即可启动交互式脚本:

$ mysql_secure_installation

系统将提示您输入为 MySQL root 帐户设置的密码。接下来,系统会询问您是否要配置 VALIDATE PASSWORD PLUGIN(密码验证插件)。.

警告: 启用此功能有点像是在进行风险判断。启用后,不符合指定条件的密码将被 MySQL 拒绝并返回错误。如果您同时使用弱密码和会自动配置 MySQL 凭据的软件(例如 Ubuntu 的 phpMyAdmin 软件包),则可能会导致问题。禁用验证是安全的,但您始终应该使用强密码和唯一密码进行数据库身份验证。.

回答“y”表示“是”,或回答其他任何内容,无需激活。.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

系统会提示您选择密码验证级别。请注意,如果您选择最高级别 2,则在尝试设置不包含数字、大小写字母、特殊字符或常用词典单词的密码时,系统会报错。.

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary               file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

如果您启用了密码验证,系统会显示一个强密码作为现有 root 密码的替代密码,并询问您是否要更改它。如果您对当前密码满意,请在提示符处输入“n”(表示“否”)。




Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

对于其余问题,请在每个提示符处按 Y 键并按 Enter 键。这将删除一些匿名用户和测试数据库,禁用远程 root 登录,并加载这些新规则,以便 MySQL 立即应用我们所做的更改。.

至此,您的数据库系统已启动并运行,我们可以继续了。.

步骤 3 – 安装 PHP

PHP是我们系统的一部分,负责处理代码以显示动态内容。它可以执行脚本、连接到MySQL数据库检索信息,并将处理后的内容发送到我们的Web服务器进行显示。.

我们可以再次使用 apt 系统来安装组件。我们还会添加一些辅助软件包,以便 PHP 代码能够在 Apache 服务器上运行并与我们的 MySQL 数据库通信:

$  sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

这样应该可以顺利安装 PHP。我们稍后会进行测试。.

大多数情况下,我们希望改变 Apache 在请求目录时提供文件的方式。目前,如果用户向服务器请求目录,Apache 首先会查找名为 index.html 的文件。我们希望告诉 Web 服务器优先处理 PHP 文件,因此我们让 Apache 首先查找 index.php 文件。.

为此,请键入以下命令,以使用 root 权限在文本编辑器中打开 dir.conf 文件:

$   sudo nano /etc/apache2/mods-enabled/dir.conf

它看起来会是这样的:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

我们希望将上面高亮显示的 PHP 目录文件移动到 DirectoryIndex 规范之后的第一个位置,如下所示:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

完成后,保存文件并按 Ctrl-X 关闭。您需要输入 Y,然后按 Enter 键确认文件保存位置。.

之后,我们需要重启 Apache Web 服务器才能使更改生效。您可以通过输入以下命令来完成此操作:

$  sudo systemctl restart apache2

我们还可以使用 systemctl 检查 apache2 服务的状态:

$ sudo systemctl status apache2
Sample Output

● apache2.service – LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago
Docs: man:systemd-sysv-generator(8)
Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
Tasks: 6 (limit: 512)
CGroup: /system.slice/apache2.service
├─۱۳۶۲۳ /usr/sbin/apache2 -k start
├─۱۳۶۲۶ /usr/sbin/apache2 -k start
├─۱۳۶۲۷ /usr/sbin/apache2 -k start
├─۱۳۶۲۸ /usr/sbin/apache2 -k start
├─۱۳۶۲۹ /usr/sbin/apache2 -k start
└─۱۳۶۳۰ /usr/sbin/apache2 -k start

Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server.
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server…
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: * Starting Apache httpd web server apache2
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerNam
Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]: *
Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

安装 PHP 模块

为了提高 PHP 性能,我们可以选择安装额外的模块。.

要查看可用的 PHP 模块和库,您可以将 apt-cache 的搜索结果输入到 less 中,less 是一个分页器,允许您滚动浏览其他命令的输出:

$  apt-cache search php- | less

使用方向键上下移动,按 q 键退出。.

结果列出了所有可选组件,并附有每个组件的简要说明:

libnet-libidn-perl – Perl bindings for GNU Libidn
php-all-dev – package depending on all supported PHP development packages
php-cgi – server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli – command-line interpreter for the PHP scripting language (default)
php-common – Common files for PHP packages
php-curl – CURL module for PHP [default]
php-dev – Files for PHP module development (default)
php-gd – GD module for PHP [default]
php-gmp – GMP module for PHP [default]
…
:

要了解每个模块的具体功能,您可以上网搜索,或者输入以下命令查看详细的软件包描述:

$   apt-cache show package_name

将会有大量输出,其中有一个名为 Description-en 的字段,提供对模块功能的更详细解释。.

例如,要了解 php-cli 模块的功能,我们可以输入以下命令:

$  apt-cache show php-cli

除了其他大量信息外,您还会发现类似这样的内容:

Output
…
Description-en: command-line interpreter for the PHP scripting language (default)
This package provides the /usr/bin/php command interpreter, useful for
testing PHP scripts from a shell or performing general shell scripting tasks.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.
.
This package is a dependency package, which depends on Debian’s default
PHP version (currently 7.0).
…

如果经过研究后,你决定要安装某个软件包,你可以使用 apt-get install 命令来安装,就像我们安装其他软件一样。.

如果我们确定需要使用 php-cli,我们可以输入:

$  sudo apt-get install php-cli

如果要安装多个模块,可以逐个列出,每个模块之间用空格分隔,然后执行 apt-get install 命令,如下所示:

$   sudo apt-get install package1 package2 …

至此,LAMP框架已安装配置完毕。我们还需要测试一下PHP代码。.

步骤 4 – 测试 Web 服务器上的 PHP 处理

为了测试我们的系统是否已正确配置 PHP,我们可以创建一个非常基本的 PHP 脚本。.

我们将这个脚本命名为info.php。为了让Apache能够找到并正确提供该文件,它需要存储在一个名为网站根目录的特殊文件夹中。.

在 Ubuntu 16.04 中,该目录位于 /var/www/html/。我们可以通过输入以下命令在该位置创建文件:

$  sudo nano /var/www/html/info.php

这将打开一个空白文件。我们希望将以下文本(有效的 PHP 代码)放入该文件中:

info.php

<?php
phpinfo();
?>

完成后,保存并关闭文件。.

现在我们可以测试一下我们的 Web 服务器是否能够正确显示 PHP 脚本生成的内容。要进行测试,我们只需在 Web 浏览器中访问此页面即可。您仍然需要服务器的公网 IP 地址。.

您要访问的地址是:

http://your_server_IP_address/info.php

您看到的页面应该类似于这样:

您看到的页面应该类似于这样:

此页面主要提供 PHP 角度的服务器信息,有助于调试并确保设置正确生效。.

如果成功,你的 PHP 代码就能按预期运行。.

实验结束后,您可能需要删除此文件,因为它可能会将服务器信息泄露给未经授权的用户。要删除该文件,您可以输入:

$  sudo rm /var/www/html/info.php

如果您需要再次访问这些信息,可以随时重新创建此页面。.

2 评论
  1. 如果有人需要关于运营博客的专家意见,我会给他/她建议
    快速访问一下这个网页,做得真棒!.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢