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

“LAMP”是部署 PHP 语言 CMS 的常用开源环境组件,其中 L 代表 Linux 操作系统,A 代表 Apache web 服务器,M 代表 MySQL 数据库,P 代表 PHP 动态语言。在本文中,牛奇网向您介绍如何在 Ubuntu 18.04 服务器上安装 LAMP 环境。

环境条件

本文是基于 Ubuntu 18.04 Linux 服务器,且需要一个具有 Sudo 权限的非 root 用户账号。

一、安装 Apache 并更新防火墙

Apache Web 服务器是一种非常流行的开源 Web 服务器软件,可与 PHP 一起使用来部署动态网站。

首先,使用 apt 更新软件库索引:

sudo apt update

如果是第一次使用 sudo 命令,系统会要求输入用户密码,以验证账号的权限。更新软件库索引后,使用以下命令安装 Apache:

sudo apt install apache2

执行上面的命令后,apt 将列出将要安装的软件包,并显示它们将占用多少磁盘空间。根据提示按 Y 确认,并点击回车确认,然后继续安装。

调整防火墙以允许 Web 流量

如果服务器已设置并启用了 UFW 防火墙,还要配置防火墙开放 HTTP 和 HTTPS 流量。通过下面的命令检查 UFW 是允许 Apache ,如下所示:

sudo ufw app list
Output
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

查看 Apache Full 详细配置信息,便会看到启用了 80443 端口的流量:

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:
  80,443/tcp

要允许传入 HTTP 和 HTTPS 流量,可运行以下命令:

sudo ufw allow "Apache Full"

通过在浏览器中访问服务器 IP 地址,来验证 Apache 是否正常运行:

http://your_server_ip

将会看到 Apache2 的欢迎页面:

Apache2 的欢迎页面
Apache2 的欢迎页面

如果看到上面的页面,说明 Web 服务器已正确安装,并可通过防火墙访问。

如何查看服务器的公共 IP 地址

如果不知道服务器的公共 IP 地址是什么,可以通过下面介绍的方法找到。

通过执行以下内容来获取 IP 地址:

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

可以从返回结果中,查看真实的服务器 IP 地址。

另外,还可以使用 curl 查看服务器的 IP 地址:

sudo apt install curl
curl http://icanhazip.com

查询到真实的 IP 地址后,在浏览器中访问 IP 地址,便会看到 Apache 的欢迎页面。

二、安装 MySQL

现在, Apache 已启动并运行,下面开始安装 MySQL 。MySQL 是一个数据库管理系统,用来存储网站的全部数据信息。

使用下面的命令安装 MySQL:

sudo apt install mysql-server

运行上面的命令后,会显示要安装的软件包的列表,以及它们将占用的磁盘空间。根据提示输入 Y 继续。

安装完成后,运行下面的命令 ,并根据提示完成安全配置:

sudo mysql_secure_installation

运行命令后将询问是否要配置密码检测插件(VALIDATE PASSWORD PLUGIN)。

注意:该密码检测插件,用于检测账号密码强度,以保证账号的安全性。如果启用,不符合条件的密码将被 MySQL 拒绝。也可以禁用该插件,但要保证密码足够复杂,并且不要重复使用密码。

回答 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

无论是否选择设置 VALIDATE PASSWORD PLUGIN,服务器都会要求选择并确认 MySQL 的 root 用户的密码。该 root 用户与系统的 root 用户是不同的。数据库的 root 用户是对数据库系统具有完全权限的管理用户。

如果启用了密码验证,将看到刚刚输入的 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 并回车确定。系统会删除匿名用户、删除测试数据库并禁用远程 root 登录。

完成后,通过键入以下命令,测试是否能够登录到 MySQL 控制台:

sudo mysql

这将以 root 用户身份连接到 MySQL 服务器,应该会看到下面的输出:

Output
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.34-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

要退出 MySQL 控制台,请键入 exit :

exit

请注意,即使在运行 mysql_secure_installation 脚本时设置了密码,也不需要提供 root 用户的密码。这是因为管理 MySQL 用户的默认验证方法是 unix_socket 而不是密码。 不使用密码可能让人觉得不安全,但它绝对没有安全风险,因为只有 sudo 权限的系统用户才能以 root 用户身份登录 MySQL 。

为了提高安全性,最好为每个数据库设置具有相应扩展权限的用户帐户,尤其是在打算在服务器上托管多个数据库时。

三、安装 PHP

PHP 用于处理代码并显示动态内容。它可以运行脚本,连接 MySQL 数据库获取信息,并将处理后的内容提交给 Web 服务器,以便将结果显示给最终访问者。

使用 apt 安装 PHP。除了php 包之外,还需要 libapache2-mod-php 将 PHP 集成到 Apache 中,另外还需要 php-mysql允许 PHP 连接到 MySQL 数据库。运行以下命令来安装这三个包及其依赖项:

sudo apt install php libapache2-mod-php php-mysql

更改 Apache 的目录索引(可选)

在某些情况下,还需要修改 Apache 优先访问的文件类型。当前,如果用户访问服务器,Apache 会打开网站根目录下的 index.html 文件。我们可以配置 Apache 优先选择 PHP 文件,以便首先打开 index.php 文件。

使用文本编辑器打开 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>

将“index.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 确认保存,然后点击回车保存更改。

然后,重新启动 Apache Web 服务器:

sudo systemctl restart apache2

执行以下命令检查 apache2 服务的状态:

sudo systemctl status apache2
Sample 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 Thu 2021-07-15 09:22:59 UTC; 1h 3min ago
 Main PID: 3719 (apache2)
    Tasks: 55 (limit: 2361)
   CGroup: /system.slice/apache2.service
           ├─3719 /usr/sbin/apache2 -k start
           ├─3721 /usr/sbin/apache2 -k start
           └─3722 /usr/sbin/apache2 -k start

Jul 15 09:22:59 ubuntu1804 systemd[1]: Starting The Apache HTTP Server...
Jul 15 09:22:59 ubuntu1804 apachectl[3694]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' di
Jul 15 09:22:59 ubuntu1804 systemd[1]: Started The Apache HTTP Server.

Q 退出输出。

安装 PHP 扩展(可选)

要扩展 PHP 的功能,还要安装其他附加扩展。要查看可用的 PHP 模块和库,可以执行下面的命令:

apt search php- | less

使用箭头键上下滚动,然后按 Q 退出。

结果会显示可以安装的所有可选组件:

bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
  Tracks usage of TCP/IP and builds html files with graphs

bluefish/bionic 2.2.10-1 amd64
  advanced Gtk+ text editor for web and software development

cacti/bionic 1.1.38+ds1-1 all
  web interface for graphing of monitoring systems

ganglia-webfrontend/bionic 3.6.1-3 all
  cluster monitoring toolkit - web front-end

golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
  PHP-like Compression and Archive Extensions in Go

haserl/bionic 0.9.35-2 amd64
  CGI scripting program for embedded environments

kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php

kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php-l10n
…
:

要了解每个模块的详细功能,可自行在网上搜索。或者,通过键入以下命令查看具体包的信息:

apt show package_name

该命令会返回安装包的更多信息。例如,要了解 php-cli 模块的功能,可以输入以下内容:

apt show php-cli

返回内容如下所示:

Output…
Description: 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 Ubuntu's default
 PHP version (currently 7.2).
…

如果需要某个软件包,可以使用 apt install 命令来安装它。

例如,要安装 php-cli 包,执行下面的命令:

sudo apt install php-cli

如果要同时安装多个模块,可以在 apt install 命令后面,列出每个要安装的模块,模块之间用空格分隔:

sudo apt install package1 package2 ...

至此,就完成了 LAMP 环境的安装。接下来,我们介绍如何设置 Apache 虚拟主机,以便可以在其中部署多个项目。

Apache 在安装后默认只启用一个项目,并将 /var/www/html 目录配置为项目根目录。通过配置 Apache 虚拟主机,可以在一台服务器上同时托管多个项目。

首先为项目创建一个新的目录:

sudo mkdir /var/www/your_domain

接下来,设置该目录的所有权:

sudo chown -R $USER:$USER /var/www/your_domain

然后执行下面的命令来配置目录的权限:

sudo chmod -R 755 /var/www/your_domain

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

nano /var/www/your_domain/index.html

在里面,添加以下 HTML 代码:

/var/www/your_domain/index.html

<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

完成后保存并关闭文件。

然后在 /etc/apache2/sites-available/ 目录下,创建一个虚拟主机配置文件:

/etc/apache2/sites-available/your_domain.conf

sudo nano /etc/apache2/sites-available/your_domain.conf

将下面的配置内容复制到配置文件中:

/etc/apache2/sites-available/your_domain.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

请注意,在新的虚拟主机配置文件中,我们将网站目录设置为 /var/www/your_domain 。我们还添加了两个指令 ServerName 和 ServerAlias,以配置与此虚拟主机匹配的域名和别名。

完成后,保存并关闭文件。然后使用以下命令,启用虚拟主机配置文件:

sudo a2ensite your_domain.conf

同时,禁用默认的配置文件 000-default.conf

sudo a2dissite 000-default.conf

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

sudo apache2ctl configtest

应该会看到以下输出内容:

Output
Syntax OK

重新启动 Apache 使更改生效:

sudo systemctl restart apache2

Apache 现在就可以为指定的域名提供访问服务。我们可以通过浏览器访问域名 http://your_domain,来测试网站是否可以正常访问。

通过浏览器访问域名
通过浏览器访问域名

这样,我们的第一个虚拟主机就配置好了。如果要配置更多的虚拟主机,可以重复上面的操作步骤。

五、测试 PHP

我们可以测试 PHP 配置是否正确。通过运行下面的命令,在网站根目录下创建一个名为 info.php 的文件。

sudo nano /var/www/your_domain/info.php

将下面的 PHP 代码添加到文件中:

/var/www/your_domain/info.php

<?php
phpinfo();

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

然后,通过浏览器访问下面的地址:

http://your_domain/info.php

会打开类似下面的页面:

phpinfo 页面
phpinfo 页面

如果可以在浏览器中看到此页面,说明服务器的 PHP 工作正常。

因为该文件会将服务器的信息,提供给未经授权的用户。所以,最好在进行该测试之后,将此文件删除。运行下面的命令删除该文件:

sudo rm /var/www/your_domain/info.php

如果以后想要再次访问该页面,可以随时重新创建此页面。

作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/install-lamp-in-ubuntu-18-04/

(0)
牛奇网牛奇网
上一篇 2022年2月1日
下一篇 2022年2月3日

相关推荐

发表回复

登录后才能评论