在Debian 10上安装Linux,Nginx,MariaDB,PHP
介绍
LEMP
软件包是一组可用于提供动态网页和Web应用程序的软件。“LEMP”是一个首字母缩略词,用于描述Linux
操作系统和(E)Nginx
网络服务,后端数据存储在MariaDB
数据库中,动态处理由PHP
处理。
尽管此软件包通常包括MySQL
作为数据库管理系统,但某些Linux
发行版(包括Debian)使用MariaDB
替代MySQL
。
在本教程中,您将使用MariaDB
作为数据库管理系统,在Debian 10服务器上安装LEMP
软件包。
先决条件
要完成本教程,您将需要访问Debian 10服务器,该服务器应配置了具有sudo
权限的普通用户和启用了ufw
防火墙,可以参考《Debian 10进行初始服务器设置》教程。
第1步 – 安装Nginx Web服务
为了向您的网站访问者提供网页服务,我们将使用Nginx
,这是一款流行的Web服务,以其整体性能和稳定性而闻名。
您将使用的所有软件都直接来自Debian的默认软件包存储库。这意味着您可以使用apt
软件包管理套件来完成安装。
由于这是您第一次使用apt
,因此应首先更新本地软件包索引,然后再安装服务:
|
|
在Debian 10上,Nginx
配置为在安装后开始运行。
如果您正在运行ufw
防火墙,则需要允许连接到Nginx
。您应该启用限制最严格的配置文件,该配置文件仍将允许您所需的流量。由于您还没有为服务器配置SSL
,因此现在您只需要允许80
端口上的HTTP
通信。
您可以通过输入以下命令启用此功能:
|
|
现在,通过在Web浏览器中访问服务器的域名或公共IP地址来测试服务是否已启动并正在运行。如果您没有指向服务器的域名,并且您不知道服务器的公共IP地址,则可以通过在终端中输入以下命令来找到它:
|
|
这将输出一些IP地址,您可以依次在Web浏览器中尝试输入它们。
在Web浏览器中输入IP地址,您将看到Nginx
的默认页面:
|
|
如果能看到Nginx
默认页面,则说明您已经成功安装了Nginx
。
第2步 – 安装MariaDB
现在,您已经启动并运行了Web服务,您需要安装数据库系统,以便能够存储和管理站点数据。
在Debian 10中,传统上用于安装MySQL
服务的mysql-server
包替换为default-mysql-server
包,这个包引用了MariaDB
,它是Oracle
原始MySQL
服务的一个社区分支,目前是基于debian的软件包管理器存储库中提供的默认MySQL
兼容数据库服务。
但是,为了获得长期兼容性,建议您不要使用该软件包,而应使用程序的实际mariadb-server
包来安装MariaDB
。
输入以下命令进行安装:
|
|
安装完成后,建议您运行与MariaDB
一起预装的安全脚本。该脚本将删除一些不安全的默认设置,并锁定对数据库系统的访问。输入以下命令启动交互式脚本:
|
|
该脚本将引导您完成一系列提示,您可以在其中对MariaDB
设置进行一些更改。第一个提示将要求您输入当前数据库的root
密码,请不要与系统root
目录混淆。该数据库root
用户是对数据库系统具有完全权限的管理用户。因为您刚刚安装了MariaDB
且还没有进行任何配置更改,所以该密码为空,因此只需在提示下按ENTER
键即可。
下一个提示将询问您是否要设置数据库root
密码。由于MariaDB
对root
用户使用了一种特殊的身份验证方法,该方法通常比使用密码更安全,所以现在不需要设置它,键入N
,然后按ENTER
键。
然后,您可以按Y
,然后按ENTER
键接受所有后续问题的默认设置。这将删除匿名用户和测试数据库,禁用远程root
登录,并加载这些新规则,以便MariaDB
立即执行您所做的更改。
完成后,输入以下命令登录到MariaDB
控制台:
|
|
这将以管理数据库的root
用户连接到MariaDB
服务,这是在运行此命令时使用sudo
命令实现的。您应该看到如下输出:
|
|
请注意,您无需提供密码即可以root
用户进行连接,这是因为管理MariaDB
用户的默认身份验证方法是unix_socket
而不是密码。尽管这看起来像是一个安全问题,但它使数据库服务更加安全,因为只允许以root
用户登录MariaDB
的用户是具有sudo
权限的系统用户,这些用户通过控制台或运行具有相同权限的应用程序进行连接。实际上,这意味着您将无法使用管理数据库的root
用户从PHP
应用程序进行连接。
为了提高安全性,最好为每个数据库设置专用的用户,并为其设置较少的扩展权限,尤其是当您计划在服务器上托管多个数据库时。为了演示这种设置,我们将创建一个名为example_database
的数据库和一个名为example_user
的用户,但是您可以用不同的名称来进行替换。
要创建新数据库,请从您的MariaDB
控制台输入以下命令:
|
|
现在,您可以创建一个新用户,并授予他对刚创建的自定义数据库的全部权限。以下命令将该用户的密码定义为password
,但是您应该使用自己选择的安全密码替换该值。
|
|
这将为example_user
用户提供对example_database
数据库的全部权限,同时阻止该用户在服务器上创建或修改其他数据库。
更新权限以确保在当前会话中保存并可用,然后退出:
|
|
您可以使用自定义用户再次登录到MariaDB
控制台,以测试新用户是否具有适当的权限:
|
|
注意此命令中的-p
选项,它将提示您输入创建example_user
用户时使用的密码。登录到MariaDB
控制台后,请确认您有权访问example_database
数据库:
|
|
至此,您的数据库系统已经建立,您可以继续安装PHP
,它是LEMP
包的最后组件。
第3步 – 安装PHP进行处理
您已经安装了Nginx
来提供内容,并安装了MySQL
来存储和管理数据。现在,您可以安装PHP
来处理代码并为Web服务生成动态内容。
虽然Apache
在每个请求中都嵌入了PHP
解释器,但Nginx
需要一个外部程序来处理PHP
并充当PHP
解释器本身和Web服务之间的桥梁。这可以在大多数基于PHP
的网站中提供更好的整体性能,但是需要其他配置。您需要安装php-fpm
,它代表“PHP fastCGI进程管理器”,并告诉Nginx
将PHP
请求传递给该软件进行处理。此外,还需要php-mysql
模块,该模块允许PHP
与基于MySQL
的数据库进行通信。核心PHP
软件包将自动作为依赖项安装。
要安装php-fpm
和php-mysql
软件包,请运行:
|
|
现在,您已经安装了PHP
组件。接下来,您将配置Nginx
以使用它们。
第4步 – 配置Nginx使用PHP处理器
使用Nginx
服务时,可以使用用于封装配置详细信息的服务块(类似于Apache
中的虚拟主机),并在一台服务器上托管多个域。在本教程中,我们将使用your_domain
作为示例域名。
在Debian 10上,Nginx
默认情况下启用了一个服务块,并配置为在/var/www/html
目录中提供文档。尽管这对于单个站点来说效果很好,但是如果您托管多个站点,则可能变得难以管理。我们不必修改/var/www/html
,而是在/var/www
中为your_domain
网站创建一个目录结构,如果客户端请求与任何其他站点都不匹配,则保留/var/www/html
作为默认目录。
为your_domain
创建Web目录,如下所示:
|
|
接下来,使用$USER
环境变量分配目录的所有权,该环境变量引用当前的系统用户:
|
|
然后,使用编辑器在Nginx
的sites-available
目录中新建一个配置文件:
|
|
这将创建一个新的空白文件,粘贴以下基本配置:
|
|
这是一个基本配置,它监听80端口并为刚创建的Web目录中的文件提供服务。它只会响应server_name
提供的域名或IP地址的请求,并且所有以.php
结尾的文件将由php-fpm
在Nginx
将结果发送给用户之前进行处理。
完成编辑后,保存并关闭文件。通过链接到Nginx
的sites-enabled
目录中的配置文件来激活您的配置:
|
|
这将告诉Nginx
在下一次重新加载时使用配置。您可以通过输入以下命令来测试配置是否存在语法错误:
|
|
如果报告了任何错误,请返回配置文件以查看其内容,然后再继续。
准备好后,重新加载Nginx
以使更改生效:
|
|
接下来,您将在新的Web目录中创建一个文件以测试PHP
处理。
第5步 – 创建一个PHP文件以测试配置
您的LEMP
包现在应该已全部设置好了。您可以对其进行测试,以验证Nginx
是否可以将.php
文件正确地传递给PHP
处理器。
您可以通过在文档目录中创建一个测试PHP
文件来实现。在文档目录中用文本编辑器新建一个info.php
文件:
|
|
将以下内容输入或粘贴到新文件中。这是有效的PHP
代码,它将返回有关您的服务器的信息:
|
|
完成后,保存并关闭文件。现在,您可以在Web浏览器中访问此页面,方法是访问您在Nginx
配置文件中设置的域名或公共IP地址,然后输入/info.php
:
|
|
您将看到一个包含有关服务器的详细信息的网页。在通过该页面检查有关PHP
服务器的相关信息之后,最好删除您创建的文件,因为该文件包含有关PHP
环境和Debian服务器的敏感信息。您可以使用rm
命令来删除该文件:
|
|
如果以后需要,可以随时重新生成该文件。接下来,我们将从PHP
端测试数据库连接。
第6步 – 从PHP测试数据库连接(可选)
如果要测试PHP
是否能够连接到MariaDB
并执行数据库查询,那么可以创建一个包含虚拟数据的测试表,并从PHP
脚本中查询其内容。
首先,使用您在本教程第2步中创建的数据库用户连接到MariaDB
控制台:
|
|
创建一个名为todo_list
的表,在MariaDB
控制台中,输入以下命令:
|
|
现在,在测试表中插入几行内容。您可能需要使用不同的值重复执行这个命令几次:
|
|
要确认数据已成功保存到表中,请运行:
|
|
您将看到如下输出:
|
|
确认测试表中的有效数据后,可以退出MariaDB
控制台:
|
|
现在您可以创建PHP
脚本,该脚本将连接到MariaDB
并查询您的内容。使用文本编辑器在自定义Web目录中创建一个新的PHP
文件:
|
|
将以下内容添加到您的PHP
脚本中:
|
|
完成编辑后,保存并关闭文件。
现在,您可以在Web浏览器中访问此页面,方法是访问您在Nginx
配置文件中设置的域名或公共IP地址,然后输入/todo_list.php
:
|
|
您应该看到显示您已插入测试表中的内容的页面,这意味着您的PHP
环境已准备就绪,可以连接MariaDB
服务并与之交互。
结论
在本教程中,您使用Nginx
作为Web服务,为访问者提供PHP
网站和应用程序建立了灵活的基础。您已经将Nginx
设置为通过php-fpm
处理PHP
请求,还设置了MariaDB
数据库来存储您的网站数据。
为了进一步改进当前的设置,您可以在PHP
中安装Composer
进行依赖关系和程序包管理,还可以使用Let's Encrypt
为您的网站安装OpenSSL
证书。
- 原文作者:百年孤独
- 原文链接:https://qoanty.github.io/2019/07/install-lemp-on-debian/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。