介绍
“LAMP”是一组开源软件,通常安装在一起以使服务器能够托管动态网站和Web应用程序。 这个术语实际上是一个缩写,代表L inux操作系统,带有A pache Web服务器。 站点数据存储在M ariaDB数据库中,动态内容由P HP处理。
在本指南中,我们将在Debian 9服务器上安装LAMP。
先决条件
为了完成本教程,您需要拥有一个Debian 9服务器,该服务器具有非root sudo
-enabled用户帐户和基本防火墙。 这可以使用Debian 9的初始服务器设置指南进行配置。
第1步 - 安装Apache并更新防火墙
Apache Web服务器是世界上最受欢迎的Web服务器之一。 它已被充分记录,并且已广泛用于网络的大部分历史,这使其成为托管网站的绝佳选择。
使用Debian的软件包管理器安装Apache, apt
:
sudo apt update
sudo apt install apache2
由于这是一个sudo
命令,因此这些操作以root权限执行。 它将询问您的常规用户密码以验证您的意图。
输入密码后, apt
会告诉您计划安装哪些软件包以及它们将占用多少额外磁盘空间。 按Y
ENTER
继续,安装将继续。
接下来,假设您已通过安装和启用UFW防火墙来遵循初始服务器设置说明,请确保您的防火墙允许HTTP和HTTPS流量。
当安装在Debian 9上时,UFW会加载应用程序配置文件,您可以使用它来调整防火墙设置。 通过运行查看应用程序配置文件的完整列表:
sudo ufw app list
WWW
配置文件用于管理Web服务器使用的端口:
OutputAvailable applications:
. . .
WWW
WWW Cache
WWW Full
WWW Secure
. . .
如果您检查WWW Full
配置文件,则表明它启用了到端口80
和443
流量:
sudo ufw app info "WWW Full"
OutputProfile: WWW Full
Title: Web Server (HTTP,HTTPS)
Description: Web Server (HTTP,HTTPS)
Ports:
80,443/tcp
允许此配置文件的传入HTTP和HTTPS流量:
sudo ufw allow in “WWW Full”
您可以通过在Web浏览器中访问服务器的公共IP地址,立即进行抽查,以验证一切是否按计划进行:
http://your_server_ip
您将看到默认的Debian 9 Apache网页,该网页用于提供信息和测试目的。 它应该看起来像这样:
如果您看到此页面,那么您的Web服务器现在已正确安装并可通过防火墙访问。
如果您不知道服务器的公共IP地址是什么,可以通过多种方式找到它。 通常,这是您用于通过SSH连接到服务器的地址。
有几种不同的方法可以从命令行执行此操作。 首先,您可以使用iproute2
工具输入以下内容来获取您的IP地址:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
这将为您提供两到三行。 它们都是正确的地址,但您的计算机可能只能使用其中一个,因此请随意尝试每个地址。
另一种方法是使用curl
实用程序联系外部方以告诉您它如何看到您的服务器。 这是通过询问特定服务器的IP地址来完成的:
sudo apt install curl
curl http://icanhazip.com
无论您使用何种方法获取IP地址,请在Web浏览器的地址栏中键入以查看默认的Apache页面。
第2步 - 安装MariaDB
现在您已启动并运行Web服务器,现在可以安装MariaDB了。 MariaDB是一个数据库管理系统。 基本上,它将组织并提供对您的站点可以存储信息的数据库的访问。
MariaDB是一个社区构建的MySQL分支。 在Debian 9中,默认的MySQL服务器是MariaDB 10.1,通常用于安装MySQL的mysql-server
软件包是一个实际安装MariaDB的过渡软件包。 但是,建议您使用程序的实际软件包mariadb-server
安装MariaDB。
再次,使用apt
获取并安装此软件:
sudo apt install mariadb-server
注意 :在这种情况下,您不必在命令之前运行sudo apt update
。 这是因为您最近在上面的命令中运行它来安装Apache,并且您计算机上的软件包索引应该已经是最新的。
此命令也将显示将要安装的软件包的列表,以及它们将占用的磁盘空间量。 输入Y
继续。
安装完成后,运行一个预装了MariaDB的简单安全脚本,该脚本将删除一些不安全的默认设置并锁定对数据库系统的访问。 运行以下命令启动交互式脚本:
sudo mysql_secure_installation
这将引导您完成一系列提示,您可以在其中对MariaDB安装的安全选项进行一些更改。 第一个提示将要求您输入当前的数据库root密码。 这是MariaDB中具有增加权限的管理帐户。 可以认为它与服务器本身的root帐户相似(尽管您现在配置的帐户是特定于MariaDB的帐户)。 因为您刚刚安装了MariaDB并且尚未进行任何配置更改,所以此密码将为空,因此只需在提示符下按ENTER
。
下一个提示会询问您是否要设置数据库root密码。 键入N
,然后按ENTER
。 在Debian中,MariaDB的root帐户与自动系统维护密切相关,因此我们不应更改该帐户的已配置身份验证方法。 这样做可以使程序包更新通过删除对管理帐户的访问来破坏数据库系统。 稍后,我们将介绍如果套接字身份验证不适合您的用例,如何为密码访问设置其他管理帐户。
从那里,您可以按Y
然后按ENTER
接受所有后续问题的默认值。 这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新规则,以便MariaDB立即尊重您所做的更改。
在Debian系统上的新安装中, 根 MariaDB用户设置为默认使用unix_socket
插件而不是密码进行身份验证。 在许多情况下,这允许更高的安全性和可用性,但是当您需要允许外部程序(例如,phpMyAdmin)管理权限时,它也会使事情变得复杂。
由于服务器使用root帐户执行日志轮换以及启动和停止服务器等任务,因此最好不要更改root帐户的身份验证详细信息。 更改/etc/mysql/debian.cnf
的帐户凭据可能最初有效,但程序包更新可能会覆盖这些更改。 如果您需要设置基于密码的访问权限,软件包维护人员建议您创建一个单独的管理帐户,而不是修改root帐户。
为此,我们将创建一个名为admin
的新帐户,其功能与root帐户相同,但配置为密码身份验证。 为此,请从终端打开MariaDB提示符:
sudo mariadb
现在,我们可以创建具有root权限和基于密码的访问权限的新用户。 更改用户名和密码以符合您的偏好:
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
刷新权限以确保它们在当前会话中保存并可用:
FLUSH PRIVILEGES;
在此之后,退出MariaDB shell:
exit
现在,只要您想以新的管理用户身份访问数据库,就需要使用以下命令使用您刚刚设置的密码对该用户进行身份验证:
mariadb -u admin -p
此时,您的数据库系统已设置完毕,您可以继续安装PHP,即LAMP的最终组件。
第3步 - 安装PHP
PHP是您的设置的组件,它将处理代码以显示动态内容。 它可以运行脚本,连接到MariaDB数据库以获取信息,并将处理过的内容传送到Web服务器进行显示。
再一次,利用apt
系统安装PHP。 另外,这次包含一些帮助程序包,以便PHP代码可以在Apache服务器下运行并与MariaDB数据库通信:
sudo apt install php libapache2-mod-php php-mysql
这应该没有任何问题安装PHP。 我们马上就会测试一下。
在大多数情况下,您需要修改Apache在请求目录时提供文件的方式。 目前,如果用户从服务器请求目录,Apache将首先查找名为index.html
的文件。 我们想告诉Web服务器更喜欢PHP文件而不是其他文件,所以让Apache首先查找index.php
文件。
为此,请键入以下命令以在具有root权限的文本编辑器中打开dir.conf
文件:
sudo nano /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
规范之后的第一个位置,如下所示:
<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 - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-09-04 18:23:03 UTC; 9s ago
Process: 22209 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
Process: 22216 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 22221 (apache2)
Tasks: 6 (limit: 4915)
CGroup: /system.slice/apache2.service
├─22221 /usr/sbin/apache2 -k start
├─22222 /usr/sbin/apache2 -k start
├─22223 /usr/sbin/apache2 -k start
├─22224 /usr/sbin/apache2 -k start
├─22225 /usr/sbin/apache2 -k start
└─22226 /usr/sbin/apache2 -k start
要增强PHP的功能,您可以选择安装一些其他模块。 要查看PHP模块和库的可用选项,请将apt search
的结果输入less
,这是一个可以滚动浏览其他命令输出的分页器:
apt search php- | less
使用箭头键向上和向下滚动,然后按Q
退出。
结果是您可以安装的所有可选组件。 它会给你一个简短的描述:
OutputSorting...
Full Text Search...
bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64
Tracks usage of TCP/IP and builds html files with graphs
bluefish/stable 2.2.9-1+b1 amd64
advanced Gtk+ text editor for web and software development
cacti/stable 0.8.8h+ds1-10 all
web interface for graphing of monitoring systems
cakephp-scripts/stable 2.8.5-1 all
rapid application development framework for PHP (scripts)
ganglia-webfrontend/stable 3.6.1-3 all
cluster monitoring toolkit - web front-end
haserl/stable 0.9.35-2+b1 amd64
CGI scripting program for embedded environments
kdevelop-php-docs/stable 5.0.3-1 all
transitional package for kdevelop-php
kdevelop-php-docs-l10n/stable 5.0.3-1 all
transitional package for kdevelop-php-l10n
…
:
要了解有关每个模块的功能的更多信息,您可以在互联网上搜索有关它们的更多信息。 或者,通过键入以下内容来查看包的长描述:
apt show package_name
将有大量输出,其中一个名为Description
字段将对模块提供的功能有更长的解释。
例如,要找出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 Debian's default
PHP version (currently 7.0).
…
如果在研究之后,您决定要安装软件包,则可以使用apt install
命令,就像您为其他软件所做的那样。
如果您认为php-cli
是您需要的东西,您可以输入:
sudo apt install php-cli
如果要安装多个模块,可以按照apt install
命令列出每个模块,用空格分隔,如下所示:
sudo apt install package1 package2 ...
此时,您的LAMP已安装并配置完毕。 但是,在进行任何更改或部署应用程序之前,如果有任何问题需要解决,主动测试PHP配置会很有帮助。
第4步 - 在Web服务器上测试PHP处理
为了测试您的系统是否为PHP正确配置,请创建一个名为info.php
基本PHP脚本。 为了使Apache能够找到并正确提供该文件,必须将其保存到一个名为web root的特定目录中。
在Debian 9中,该目录位于/var/www/html/
。 通过运行以下命令在该位置创建文件:
sudo nano /var/www/html/info.php
这将打开一个空白文件。 在文件中添加以下文本,这是有效的PHP代码:
<?php
phpinfo();
?>
完成后,保存并关闭文件。
现在,您可以测试您的Web服务器是否能够正确显示此PHP脚本生成的内容。 要尝试此操作,请在Web浏览器中访问此页面。 您将再次需要服务器的公共IP地址。
您要访问的地址是:
http://your_server_ip/info.php
您访问的页面应如下所示:
此页面从PHP的角度提供有关服务器的一些基本信息。 它对于调试很有用,并确保正确应用您的设置。
如果您可以在浏览器中看到此页面,那么您的PHP正在按预期工作。
您可能希望在此测试后删除此文件,因为它实际上可以向未经授权的用户提供有关您的服务器的信息。 为此,请运行以下命令:
sudo rm /var/www/html/info.php
如果您以后需要再次访问该信息,则可以随时重新创建此页面。
结论
现在您已经安装了LAMP,您可以选择下一步做什么。 基本上,您已经安装了一个平台,允许您在服务器上安装大多数类型的网站和Web软件。